MongoDB generalmente no es una buena opción para aplicaciones sociales. La razón principal es que los datos sociales tienden a tener muchas relaciones, que solo puede resolver en MongoDB usando documentos incrustados o ObjectId.
Veamos los pros y los contras de ambos:
Incrustado:
- ¿Cuál es su proceso para planificar y diseñar su aplicación antes de escribir una sola línea de código?
- ¿Le gustaría a un desarrollador de aplicaciones crear mi aplicación de citas por un porcentaje en el negocio?
- Cómo crear una aplicación como Google Now
- Cómo encontrar una empresa de aplicaciones móviles para crear mi aplicación móvil de restaurante
- ¿Cuánto tiempo tarda Apple en responder su correo electrónico [correo electrónico protegido] ?
Pros
- Las lecturas solo necesitan tocar un documento
Contras
- Básicamente imposible actualizar algo (cuando un usuario cambia su foto de perfil, por ejemplo, necesitará encontrar en todas partes que existan datos y actualizarlos)
ObjectId:
Pros
- Las actualizaciones solo necesitan tocar un documento
Contras
- Cuando necesite extraer el autor de una publicación, por ejemplo, deberá hacer otra lectura con el ObjectId y extraer ese documento también y combinarlo en el código del lado del cliente.
Una mejor opción sería algo como PostgreSQL o MySQL, una base de datos relacional real. Puede hacer sus uniones en el lado del servidor si usa un RDBMS, y PostgreSQL también es compatible con JSONB, lo que le brinda muchos de los beneficios de usar MongoDB en primer lugar. Fragmentar PostgreSQL es relativamente sencillo, y si su tráfico es realmente alto, o si tiene muchas lecturas en su base de datos, también puede agregar una capa de almacenamiento en caché usando Redis o Memcached fácilmente.