sql >> Base de Datos >  >> NoSQL >> MongoDB

Construyendo un suministro de noticias personalizado similar a Facebook:¿SQL, MongoDB?

Tu código no me dice mucho; Creo que sería útil si pudiera diseñar su estructura de datos en JSON/SQL simple.

De todos modos, serializaría la transmisión de cada usuario a MongoDB. No almacenaría el HTML en la base de datos por varias razones (al menos no en ese nivel del software); en su lugar, debe guardar los datos relevantes en una colección (posiblemente polimórfica). Obtener el suministro de noticias es muy fácil entonces, la indexación es sencilla, etc. La estructura de la vista esencialmente no cambiaría. Si luego desea cambiar el HTML, también es fácil.

La desventaja es que esto duplicará una gran cantidad de datos. Si las personas pueden tener muchos seguidores, esto puede convertirse en un problema. El uso de matrices de ID de usuario en lugar de una sola ID de usuario podría ayudar (si la información es la misma para todos los seguidores), pero también es limitado.

Para problemas de asociación muy grandes, solo hay almacenamiento en caché. Según lo entiendo, la magia tanto en Facebook como en Twitter es que no acceden a la base de datos con mucha frecuencia y mantienen una gran cantidad de datos en la RAM. Si está asociando miles de millones de elementos, hacerlo es un desafío incluso en RAM.

Las actualizaciones deben escribirse continuamente en lugar de cada hora. Suponga que tiene mucho tráfico y la actualización cada hora tarda 30 minutos. Ahora, el peor de los casos es un 90 min. demora. Si procesa los cambios justo a tiempo, puede reducirlo a probablemente 5 minutos.

Tendrá que hacer suposiciones en algún momento, usar el almacenamiento en caché y algunas heurísticas. Algunos ejemplos:

  • Cuanto más reciente sea un tuit, más tráfico verá. Tiene una mayor probabilidad de ser retuiteado y se ve mucho más a menudo. Guárdelo en RAM.
  • Su página de descripción general de la línea de tiempo de Facebook de 1991 probablemente no va a cambiar a diario, por lo que es un candidato para el almacenamiento en caché de salida a largo plazo.
  • Es probable que la actividad actual de Facebook sufra muchas escrituras. El almacenamiento en caché de salida no ayudará mucho aquí. Nuevamente, el objeto debe mantenerse en la RAM.