Características MONGO DB

20
MONGO DB

Transcript of Características MONGO DB

Page 1: Características MONGO DB

MONGO DB

Page 2: Características MONGO DB

¿Qué es MongoDB?

MongoDB es un gestor de base de datos

NO-SQL orientado a documentos.

Page 3: Características MONGO DB

¿Las bases de datos de Mongo

poseen tablas?En vez de tablas, MongoDB almacena sus datos en

colecciones, las cuales son equivalentes a las tablas

de los gestores de base de datos relacionales. Una

colección almacena uno o más documentos, los

cuales se corresponden con los registros de una tabla

y cada documento posee uno o más campos, los

cuales se corresponden con las columnas de una

tabla.

Page 4: Características MONGO DB

TABLAS -> COLECCIONES

REGISTROS -> DOCUMENTOS

COLUMNAS -> CAMPOS

JOINs -> DOCUMENTOS EMBEBIDOS

Page 5: Características MONGO DB

¿A que se le llama documentos?

Un documento es la unidad básica de datos

en MongoDB. Su estructura de datos es

muy similar a la de JSON (Javascript Object

Notation) pero almacenados en un formato

mucho más rico conocido BSON (Binary

JSON).

Page 6: Características MONGO DB

{

_id: ObjectId(7df78ad8902c)

title: 'MongoDB Overview',

description: 'MongoDB is no sql database',

by: 'tutorials point',

url: 'http://www.tutorialspoint.com',

tags: ['mongodb', 'database', 'NoSQL'],

likes: 100,

comments: [

{

user:'user1',

message: 'My first comment',

dateCreated: new Date(2011,1,20,2,15),

likes: 0

}, ...

]

}

Page 7: Características MONGO DB

Tablas VS Colecciones

La gran diferencia es que los documentos de una misma

colección, a diferencia de los registros de las tablas, pueden

no tener los mismos campos (Es decir, pueden poseer

distinta estructura). Una persona puede agregar un nuevo

campo a algunos de los documentos de una colección sin

tener que agregar el mismo campo a todos los documentos

de la misma colección. Esta característica convierte a Mongo

en una BD muy flexible con respecto a las alternativas

relacionales.

Page 8: Características MONGO DB

Las bases de datos de Mongo, ¿Utilizan

esquemas de BD?MongoDB hace uso de esquemas dinámicos. En Mongo se

pueden crear colecciones sin definir su estructura, es decir,

sin especificar el nombre de cada uno de sus campos y sus

respectivos tipos. Se puede alterar la estructura de los

documentos simplemente añadiendo nuevos campos o

borrando los ya existentes. Aunque no sea obligatorio, en la

práctica es común que todos los documentos de una

colección posean una estructura homogénea.

Page 9: Características MONGO DB

¿Qué ventajas poseen los esquemas

dinámicos?Los esquemas dinámicos facilitan el proceso de desarrollo

iterativo. Raramente se necesitará almacenar operaciones

del tipo “ALTER TABLE”.

Page 10: Características MONGO DB

¿Cuáles son los usos típicos para

MongoDB?MongoDB fue diseñado para sistemas de propósito general,

haciéndolo apropiado para un gran número de casos. Por

ejemplo: CMS, Aplicaciones móviles, gaming, plataformas e-

commerce, analytics, logging, cache, etc.

Page 11: Características MONGO DB

Características de Mongo:● MongoDB esta escrito en su totalidad en C++.

● La versión de 32bits no es aconsejable usarla en un

entorno en producción. Solo a modo de desarrollo.

● MongoDB no soporta joins ni transacciones. Sin embargo

posee índices secundarios, un propio lenguaje de

consulta muy expresivo, escrituras de documentos

atómicas, y lecturas consistentes.

● Para las versiones de 32 bits de Mongo, la base de datos

sólo puede alcanzar los 2GB.

Page 12: Características MONGO DB

Características de Mongo:

● Esquemas flexibles. Las colecciones en MongoDB poseen un

esquema flexible, totalmente dinámico. Las colecciones no fuerzan a

los documentos a poseer una determinada estructura.

● Modelos de datos embebidos. Los documentos embebidos o

anidados son documentos que se definen dentro de otro documento.

Esta es una forma de capturar las relaciones entre los datos

almacenando “subdocumentos” en una misma estructura. Estos se

conocen como modelo de datos desnormalizados (permiten obtener y

manipular los datos relacionados en una sola operación).

Page 13: Características MONGO DB
Page 14: Características MONGO DB

Características de Mongo:● Operaciones de escritura atómicas a nivel

documento. Esto quiere decir que MongoDB solo

garantiza “transacciones” a nivel documento. Es decir,

MongoDB no puede garantizar que la edición de dos o

más documentos en una misma operación se realicen en

forma conjunta. En modelos normalizados, la aplicación

es la encargada de llevar a cabo operaciones de

lectura/escritura en forma separada para actualizar los

documentos relacionados.

Page 15: Características MONGO DB

Características de Mongo:● Crecimiento de un documento. Si un documento supera

el tamaño de memoria reservado para el mismo,

MongoDB relocaliza el documento en disco. La

relocalización de documentos conlleva mayor tiempo de

procesamiento y puede conducir a un almacenamiento

fragmentado. Es importante considerar la normalización

de los documentos.

Page 16: Características MONGO DB

Características de Mongo:● Memory-mapped files. Los archivos de base de datos se almacenan en

páginas. Estas páginas conservan la forma en que se almacenan en

memoria byte a byte. Esto significa que MongoDB trata los archivos de

datos como si estuvieran en memoria. Esta es la característica

fundamental del motor de almacenamiento de MongoDB.

● Escalabilidad Horizontal con Shards

Sharding es un método utilizado para almacenar datos a través de

múltiples computadoras. MongoDB hace uso de este método para brindar

soporte a data sets muy grandes y aplicaciones de gran rendimiento.

Cada Shard es una instancia independiente de MongoDB que almacena

una partición de la BD. Los Shards, en conjunto conforman una única BD

lógica.

Page 17: Características MONGO DB
Page 18: Características MONGO DB

¿Apoya MongoDB transacciones ACID? MongoDB no soporta transacciones de múltiples documentos.

Sin embargo, MongoDB proporciona operaciones atómicas en un solo documento. A menudo,

estas operaciones atómicas de nivel de documento son suficientes para resolver los

problemas que requerirían transacciones ACID en una base de datos relacional.

Por ejemplo, en MongoDB, puede incrustar datos relacionados en matrices anidadas o

documentos anidados dentro de un solo documento y actualizar todo el documento en una

sola operación atómica. Bases de datos relacionales pueden representar el mismo tipo de

datos con varias tablas y filas, lo que requeriría el soporte de transacciones para actualizar

los datos de forma atómica.

MongoDB permite a los clientes leer documentos insertados o modificados antes de que

comete estas modificaciones en el disco, independientemente del nivel de preocupación de

escritura o la configuración de un diario. Como resultado, las aplicaciones pueden observar

dos clases de comportamientos:

● Para los sistemas con múltiples lectores simultáneos y escritores, MongoDB permitirá a los

clientes para leer los resultados de una operación de escritura antes de que vuelva la

operación de escritura.

Page 19: Características MONGO DB

¿Requiere MongoDB mucha memoria RAM?No necesariamente. Es posible ejecutar MongoDB en una máquina con

una pequeña cantidad de memoria RAM libre.

MongoDB usa automáticamente toda la memoria libre en el equipo

como su caché. Monitores de recursos del sistema muestran que

MongoDB utiliza una gran cantidad de memoria, pero su uso es

dinámico. Si otro proceso de repente necesita mayor espacio de

memoria RAM del servidor, MongoDB liberará parte de su memoria

asignada para el otro proceso.

Técnicamente, el subsistema de memoria virtual del sistema operativo

gestiona la memoria de MongoDB. Esto significa que MongoDB utilizará

tanta memoria libre como pueda (esto reduce el intercambio a disco).

Page 20: Características MONGO DB

Tabla Comparativa SQL - Mongo

http://docs.mongodb.org/manual/reference/sql-comparison