El cofundador de Reddit hizo una presentación sobre los problemas que tenían mientras escalaba a millones de usuarios. Un resumen está disponible here.Base de datos con "Esquema abierto" - ¿Buena o mala idea?
Lo que me sorprendió es el punto 3:
En su lugar, mantener una tabla cosa y una tabla de datos. Todo en Reddit es una cosa: usuarios, enlaces, comentarios, subreddits, premios, etc. Las cosas mantienen el atributo común como votos arriba/abajo, un tipo y fecha de creación. La tabla de datos tiene tres columnas: id de cosa, clave, valor. Hay una fila para cada atributo. Hay una fila para el título, la URL, el autor, los votos no deseados, etc. Cuando agregan nuevas funciones, ya no tienen que preocuparse por la base de datos. No tenían que agregar nuevas tablas para cosas nuevas o preocuparse por las actualizaciones.
Esto me parece una idea terrible, pero parece haber funcionado para Reddit. Sin embargo, ¿es una buena idea en general? ¿O es una peculiaridad de Reddit lo que sucedió que funcionó para ellos?
De hecho, Huffman habla sobre la creación de informes y cómo lo hacen al exportar un conjunto de datos a un archivo de texto y analizarlo en otro lugar https://vimeo.com/10506751 m24: 50 –
Reddit tiene pocos, si los hay requisitos de integridad de datos. No es como si estuvieran almacenando valores enteros o de fecha que deben estar entre ciertos rangos o tienen reglas comerciales complicadas. Es decir, la corrección de los datos no es realmente importante para un sitio como reddit; solo necesita ser mayormente correcto. Sin embargo, las aplicaciones LOB no son tan tolerantes con la inexactitud. El diseño de Reddit se centra en capturar datos, no en la corrección. Sin embargo, la cuestión de la corrección es que cuando te importa, es excesivamente costoso no abordarlo por adelantado. – Thomas