MongoDB

Bases de Datos
de Documentos
como ejemplo
Acerca de
Preguntas a responder
¿Qué es esto de los documentos?
¿Cuándo es adecuado utilizar MongoDB?
¿Qué guía mis decisiones de diseño?
¿Cómo hago consultas sobre mis datos?
¿Entonces qué hago?
Repaso JSON databases
Estructura de árbol representada con clave-valor
No tengo impedance mismatch (objetos = datos)
No tengo esquema fijo
Conceptos SQL vs. MongoDB
Database
Database
Table
Collection
Row
Document or BSON document
Column
Field
Index
Index
Table joins
Embedded documents and linking
Primary Key
Primary Key
Aggregation (e.g. group by)
Aggregation Pipeline
MongoDB
Multiplataforma
Conectores para múltiples lenguajes de programación
Almacenamiento BSON (Binary JSON)
Esquema flexible (diferente a no tener esquema)
Validación de documentos
Documentos con descripción autocontenida
Contextos de aplicación
Esquema dinámico o en proceso de definición
Datos no estructurados o semi-estructurados
Desarrollo ágil
Schemaless ≠ Schema Anarchy
Diseño conceptual
Nuevo paradigma (diferente a relacional)
Orientado al uso de los datos (no a las relaciones o formas normales)
Documento representa una instancia de entidad
No estoy obligado a utilizar “join”
Consideraciones al diseñar
Representación de relaciones (references vs. embedded)
Atomicidad de operaciones (nivel documento)
Tamaño de documentos
Tamaño y cantidad de documentos en colecciones
Uso de los datos y performance (CRUD)
Sharding
Hands on: diseño conceptual
Consultas sobre documentos
Dos métodos de consulta
Método básico (filtrado y proyección)
Aggregation framework
Muy verboso (JSON)
Uso de JavaScript
Consultas sobre documentos (método básico)
Soporte de operadores lógicos y de comparación
Consulta sobre documentos embebidos
Consulta sobre listas
Proyección por claves (o subclaves) del documento
Consultas sobre documentos (aggregation)
Aggregation pipeline
Selección y transformación de documentos
Implementación de “join” (lookup)
Map-reduce
Utiliza funciones JavaScript
Permite selección de documentos (query)
Operaciones de propósito único
Ejemplos: group, distinct, count
Para los curiosos
Validación de documentos
Indexación y búsqueda de texto
Stored procedures (Server-side JavaScript)
Soporte para tipos de datos y consultas geoespaciales (GeoJSON)
ACID
Conclusiones
Evaluar y pensar antes de usar
SQL no está muerto
Flexibilidad no implica caos
Importante pensar diseño orientado a documentos
Tener en cuenta las consideraciones de diseño
Modelado conceptual iterativo
Preguntas
Referencias
Clase 6: Bases de datos de documentos
https://eva.fing.edu.uy/mod/resource/view.php?id=59861
Conceptos SQL vs. MongoDB
https://docs.mongodb.com/manual/reference/sql-comparison/
https://www.mongodb.com/blog/post/mongodb-vs-sql-day-1-2
BSON documents
https://docs.mongodb.com/manual/core/document/#bson-document-format
Preguntas frecuentes sobre MongoDB
https://www.mongodb.com/faq
Consideraciones al diseñar
https://docs.mongodb.com/manual/core/data-modeling-introduction/
https://docs.mongodb.com/manual/core/data-model-operations/
Referencias
Consultas sobre documentos
https://docs.mongodb.com/manual/tutorial/query-documents/
https://docs.mongodb.com/manual/aggregation/
https://docs.mongodb.com/manual/reference/aggregation-commands-compari
son/
Para los curiosos
https://docs.mongodb.com/manual/core/document-validation/
https://docs.mongodb.com/manual/text-search/
https://docs.mongodb.com/manual/tutorial/store-javascript-function-on-server/
https://docs.mongodb.com/manual/applications/geospatial-indexes/