Underc0de

Programación Web => Base de Datos => Mensaje iniciado por: Imaginario en Julio 19, 2013, 05:01:48 PM

Título: Modelado de datos en MongoDB
Publicado por: Imaginario en Julio 19, 2013, 05:01:48 PM
Decisiones de Modelado de Datos

Las decisiones sobre modelado de datos involucran la determinación de cómo estructurar los documentos para modelar datos eficientemente. La decisión fundamental es cuándo usar embeds (incrustación) o cuándo usar references (referencias).

Embed (incrustación)

Guardar dos piezas de datos relacionadas en un solo documento denormaliza los datos.

Las operaciones sobre un documento son menos costosas para el servidor que las operaciones que involucran múltiples documentos.

En general, use datos embebidos cuando:

La incrustación (embed) nos provee de los siguientes beneficios:

Incrustar datos relacionados en documentos puede derivar en situaciones donde los documentos crecen de forma póstuma a su creación. Éste crecimiento puede impactar en la performance de escritura y derivar en la fragmentación de los datos. Además, los documentos en MongoDB deben ser más chicos que el  máximo tamaño de documento BSON (16Mb)  (http://docs.mongodb.org/manual/reference/limits/#BSON%20Document%20Size). Para documentos grandes, considera usar GridFs.

Ver también

    dot notation (http://docs.mongodb.org/manual/reference/glossary/#term-dot-notation) for information on "reaching into" embedded sub-documents.
    Arrays (http://docs.mongodb.org/manual/core/read-operations/#read-operations-arrays) for more examples on accessing arrays.
    Subdocuments (http://docs.mongodb.org/manual/core/read-operations/#read-operations-subdocuments) for more examples on accessing subdocuments.

References (referenciando)

Para normalizar datos, guarde referencias entre dos documentos para indicar una relación entre la información representada en cada documento

En general, use modelado de datos normalizado:

Referenciar provee más flexibilidad que incrustar; sin embargo, para resolver las referencias, las aplicaciones en el lado cliente deben realizar un seguimiento de las consultas. En otras palabras, usar referencias requiere más idas y vueltas al servidor.

See Model Referenced One-to-Many Relationships Between Documents for an example of referencing.
(http://docs.mongodb.org/manual/tutorial/model-referenced-one-to-many-relationships-between-documents/#data-modeling-publisher-and-books)

Atomicidad

MongoDB sólo provee operaciones atómicas en el nivel de un sólo documento. [1] (http://docs.mongodb.org/manual/core/data-modeling/#record-atomicity) Como resultado, la necesidad de operaciones atómicas influye en la decisión al momento de usar incrustación o referencias al modelar la información.

Embed fields that need to be modified together atomically in the same document.  See Model Data for Atomic Operations for an example of atomic updates within a single document. (http://docs.mongodb.org/manual/tutorial/model-data-for-atomic-operations/#data-modeling-atomic-operation)
[1] (http://docs.mongodb.org/manual/core/data-modeling/#id2)   Document-level atomic operations include all operations within a single MongoDB document record: operations that affect multiple sub-documents within that single record are still atomic.

Patrones de modelado de datos

Modelo embebido de relaciones de uno a uno entre documentos (http://es.docs.mongodb.org/manual/tutorial/model-embedded-one-to-one-relationships-between-documents/)
Modelo embebido de relaciones de uno a muchos entre documentos (http://es.docs.mongodb.org/manual/tutorial/model-embedded-one-to-many-relationships-between-documents/)
Modelo vinculado de relaciones de uno a muchos entre documentos (http://es.docs.mongodb.org/manual/tutorial/model-referenced-one-to-many-relationships-between-documents/)
Modelo de datos para operaciones atómicas (http://es.docs.mongodb.org/manual/tutorial/model-data-for-atomic-operations/)
Model Tree Structures with Parent References (http://es.docs.mongodb.org/manual/tutorial/model-tree-structures-with-parent-references/)
Model Tree Structures with Child References (http://es.docs.mongodb.org/manual/tutorial/model-tree-structures-with-child-references/)
Model Tree Structures with an Array of Ancestors (http://es.docs.mongodb.org/manual/tutorial/model-tree-structures-with-ancestors-array/)
Model Tree Structures with Materialized Paths (http://es.docs.mongodb.org/manual/tutorial/model-tree-structures-with-materialized-paths/)
Model Tree Structures with Nested Sets (http://es.docs.mongodb.org/manual/tutorial/model-tree-structures-with-nested-sets/)
Model Data to Support Keyword Search (http://es.docs.mongodb.org/manual/tutorial/model-data-for-keyword-search/)

Fuente: Documentación oficial de MongoDB  (http://docs.mongodb.org/manual/core/data-modeling/)