Si fuera a modelar un sitio web como Facebook o Twitter, ¿qué estructura de base de datos / tabla usaría?

Hola,

No hay una respuesta fácil a esta pregunta, porque hubo una que todas las compañías de redes sociales habrían utilizado. La arquitectura (bases de datos, pila de software, replicación geográfica, etc.) de una empresa depende en gran medida de la aplicación precisa. Esa es la razón por la cual todas las compañías gigantes construyen su propia tecnología para resolver varios problemas de ingeniería.

La única forma de obtener más información sería leer las arquitecturas de las diferentes compañías en perspectiva. Aquí hay algunas ideas:

(1) Lea la publicación industrial que describe su arquitectura.
Ejemplo A: Pregel
Ejemplo B: Apache Hadoop en tiempo real en Facebook
Ejemplo C: Página en Umd
Ejemplo D: WTF

(2) Leer blogs: (tienes que encontrarlos activamente)

Ejemplo A: Alta escalabilidad – Alta escalabilidad – La arquitectura que usa Twitter para tratar con 150 millones de usuarios activos, 300K QPS, una manguera de bomberos de 22 MB / S y enviar tweets en menos de 5 segundos
Ejemplo B: alta escalabilidad – alta escalabilidad – secretos de rendimiento web de Facebook

Diría nuevamente que no hay atajos. Debe conocer los diferentes casos de uso de diferentes sistemas para poder diseñar un sistema eficiente desde cero.

Gracias
Jayanta

Una alternativa a la sugerencia de Dennis de usar un gráfico distribuido db sería usar un sql db combinado con un documento db como MongoDB.

Se necesita un poco de trabajo. Seguí esta ruta para el proyecto en el que estoy trabajando. Los DB distribuidos no parecen ser lo suficientemente maduros en este momento (especialmente cuando trabajo con la pila .NET que soy).

Para que esto funcione, utiliza SQL como su almacén de datos normalizado. Tiene sus usuarios, enlaces, tablas de elementos, así como tablas de asociación para rastrear las relaciones. Mongo se utiliza como su almacén de datos desnormalizado. Los datos normalizados de sql se propagan en cualquier forma que necesite en Mongo. Puede usar una arquitectura de bus de servicio para mantener los dos sincronizados.

Esto también se puede hacer solo con Mongo, pero me gusta poder usar combinaciones de SQL cuando lo necesito y todavía tengo el rendimiento de consultar a Mongo para la recuperación de datos típica.

Elegiría una base de datos gráfica distribuida. Las bases de datos de gráficos son más rápidas
para conjuntos de datos asociativos y asignar más directamente a la estructura de
aplicaciones orientadas a objetos. Vaya a http://en.wikipedia.org/wiki/Gra … para obtener más información.