Creo que actualmente, la idea de los almacenes de datos NoSQL y el concepto de bases de datos de documentos es tan nueva y diferente de las ideas establecidas que impulsan el almacenamiento relacional que actualmente hay muy pocas (si las hay) mejores prácticas.
Sabemos en este punto que las reglas para almacenar sus datos dentro de, por ejemplo, CouchDB (o cualquier otra base de datos de documentos) son bastante diferentes a las de una relacional. Por ejemplo, es casi un hecho que la normalización y el objetivo de 3NF no es algo que uno debería esforzarse. Uno de los ejemplos comunes sería el de un blog simple.
En una tienda relacional, tendría una tabla para "Publicaciones", "Comentarios" y "Autores". Cada autor tendría muchas publicaciones, y cada publicación tendría muchos comentarios. Este es un modelo que funciona bastante bien y se correlaciona bien con cualquier DB relacional. Sin embargo, almacenar los mismos datos dentro de un docDB probablemente sería bastante diferente. Probablemente tendrías algo así como una colección de documentos Post, cada uno de los cuales tendría su propio Autor y una colección de Comentarios integrados. Por supuesto, esa no es la única forma en que podrías hacerlo, y es un compromiso (ahora solicitar una sola publicación es rápido; solo se realiza una operación y se recupera todo), pero no se puede mantener la relación entre los autores y las publicaciones (ya que todo se convierte en parte del documento posterior).
Yo también he visto ejemplos haciendo uso de un atributo "tipo" (en un ejemplo de CouchDB). Claro, eso suena como un enfoque viable. ¿Es el mejor? No tengo ni idea. Ciertamente, en MongoDB utilizaría colecciones independientes dentro de una base de datos, lo que haría que el atributo de tipo no tenga sentido. En CouchDB ... tal vez es mejor. ¿Las otras alternativas? ¿Bases de datos separadas para cada tipo de documento? Esto parece un poco raro, así que me incliné hacia la solución de "tipo". Pero solo soy yo. Tal vez hay algo mejor.
Me doy cuenta de que he hablado un poco aquí y he dicho muy poco, muy probablemente nada que no supieras. Sin embargo, mi punto es este: creo que nos corresponde a nosotros experimentar con las herramientas que tenemos y los datos con los que estamos trabajando y con el tiempo las buenas ideas se difundirán y se convertirán en las mejores prácticas de. Creo que estás preguntando demasiado temprano en el juego.
Tienes razón: es demasiado temprano, tal como yo también pensé. +1, pero también esperaré un tiempo para otras opiniones. – Flavius
Como puedo ver hasta ahora, depende en gran medida de las operaciones que pretenda hacer con los datos y la frecuencia con que la aplicación haría esas operaciones en circunstancias normales. Por ejemplo, insertar comentarios en una "publicación" no sería lo mejor si la aplicación implementara una funcionalidad para "acechar" a una persona específica (como "tweets"). – Flavius
Seguro. Creo que las mejores prácticas que surjan se basarán en la forma en que se utilizarán los datos. Se deben tomar decisiones y compromisos diferentes para acomodar mejor esos requisitos. –