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/
© Copyright 2024