1. Andrea Antunes C.I.: 20.362.606
María E. Pulido C.I.: 20.289.633
José Zambrano C.I.: 20.220.232
Universidad Central de Venezuela
Facultad de Ciencias
Escuela de Computación
Administración de Bases de Datos
1
2. • ¿Qué es NoSQL?.
• ¿Qué es una BD NoSQL?.
• ¿Por qué surge?.
• Características.
• Ventajas y Desventajas.
• Arquitectura de una BD NoSQL.
2
3. • Teorema CAP.
• Transacciones BASE.
• CAP vs BASE vs ACID.
• Taxonomía de BD NoSQL.
• ¿SQL ó NoSQL?.
• Caso de Estudio.
3
4. • Es una amplia clase
de SMBD.
• Difiere del RDBMS.
4
5. • Sistema de almacenamiento de información.
• No cumple con el esquema entidad-relación.
• No impone una estructura de datos.
• Almacena los datos en diferentes formatos.
5
6. …No existen tablas!!!
En RDBMS
En NoSQL
6
23652498
19532643
15973820
Ana
Juan
María
Pérez
López
Jiménez
García
Suárez
Null
Null
4329916
Null
23652498
19532643
15973820
Ana
Juan
María
Pérez
López
Jiménez
García
Suárez 4329916
7. …Llegó la web, el software como
servicio, los servicios en la nube y
las startups de éxito con millones
de usuarios…
7
9. 9
• Poca eficiencia en aplicaciones en las BD
relacionales.
• Aumento de operaciones de lectura y escritura.
• Gran conjunto de transacciones.
• Sentencias complejas.
• Dificultades en la escalabilidad del sistema.
10. • Consistencia Eventual.
• Ausencia de esquema en los registros de datos.
• Alta velocidad de respuesta a peticiones.
• Estructura distribuida.
• Escalabilidad horizontal.
10
• Estructura distribuida.
• Escalabilidad horizontal.
12. • Ausencia de esquema en los registros de datos:
12
ID Nombre Apellido Id_CArea
1 Frank Lara 2
2 Ana Guzmán 3
3 Pedro López 2
Id_CArea Ciudad Estado Cod_Area
1 MBO ZL 0261
2 CCS DC 0212
3 LAS NE 0295
+ =
{
“ID”:1,
“Nombre”:”Frank”,
“Apellido”: “Lara”,
“Cod_Area”:”0212”,
“Ciudad”:”CCS”,
“Estado”:”DC”
}
Info. Usuario
Info. Dirección
14. • Estructura distribuida:
14
Zorro Función Hash DFCD3454
El zorro corre
por el hielo
Función Hash 52ED879E
El zorro rojo
camina por
el hielo
Función Hash 46042841
Data Clave
15. • Escalabilidad:
15
CPU
1 GB RAM
CPU
1 GB RAM
CPU
1 GB RAM
Escala
CPU
1 GB RAM
CPU
1 GB RAM
CPU
4 GB RAM
CPU
2 GB RAM
Escala
16. • Manejo de gran volumen de datos.
• Escalamiento sencillo.
• Diferentes DBs NoSQL para diversos
proyectos.
• Uso de memoria como principal ubicación
de escritura.
• Código abierto.
16
17. • No son suficientemente maduros para
algunas empresas.
• Falta de experiencia.
• No trata con datos críticos que
requieren ACID.
• Problemas de compatibilidad.
17
21. 21
• Consistencia.
• Disponibilidad.
• Tolerancia a la partición.
CAP
•Tolerancia a la partición.
•Disponibilidad.
BASE
•Coherencia.
•Disponibilidad.ACID
23. • La información es representada en nodos.
• Ya está normalizada.
• No es necesario definir cantidad de atributos.
• Registros de longitud variable.
• Recorrido.
23
26. • Guarda los valores en columnas.
• Los datos son almacenados como secciones de
las columnas de datos.
• ¿Cuándo usarlas?
• Beneficios.
• Ventajas.
26
27. • Precursor: Google BigTable.
• Conceptos fundamentales:
• Algunas BD: Hbase, Cassandra, Hypertable.
27
Familia de Columnas
Súper Columna
Columna
R
o
w
K
e
y
Sup_Col_Name1
C_N1
C_V1
C_Nn
C_Vn
Sup_Col_Namem
C_N1
C_V1
C_Nn
C_Vn
….. …..…..
28. 28
Id Nombre Edad Intereses
1 Ricky Fútbol, Cine, Béisbol
2 Pedro 20
3 Juan 25 Música
Id Nombre
1 Ricky
2 Pedro
3 Juan
Id Edad
2 20
3 25
Id Intereses
1 Fútbol
1 Cine
1 Béisbol
3 Música
Orientado a Fila
(Modelo RDBMS)
Orientado a
Columnas
Null
Multivalor• Ejemplo:
29. • Conjunto de duplas (Clave, Valor).
• Existen contenedores.
• Permite variar la estructura de la información.
• Validación de los datos en la aplicación Cliente.
• Acceso.
• Desventajas.
29
32. 32
• Almacena los datos en documentos.
• Son duplas Clave-(Valor => documento).
• No existe un esquema estricto.
• Los documentos dentro de una colección
pueden tener campos diferentes.
• Acceso.
41. 41
• Escalable, alto rendimiento y disponibilidad.
• Puede trabajar en modo maestro-esclavo.
• Basada en esquemas BSON (Binary JSON ).
• Posee un rico y sencillo sistema de consulta.
• Soporte de índices.
• Replicación y soporte a prueba de fallos.
42. 42
Posee una estructura escalable debido a las
las siguientes propiedades:
• Escalabilidad horizontal
(Auto-Sharding).
• Replicación para alta
disponibilidad.
43. 43
• Escalabilidad horizontal (Auto-Sharding):
Rango de Clave Rango de Clave Rango de Clave
0…100 0…50 51…100 0…25 26…50
…….
51…75 76…100
mongod mongod mongod mongod mongod
mongod mongod
Escalabilidad para Escribir
45. 45
Los principales componentes de MongoDB
son los siguientes:
• Mongod (Núcleo de la base de datos).
• Mongos (Controlador de particionamiento).
• GridFS (Función de almacenamiento).
46. 46
Motor central de la BD, puede correr como
programa o demonio y posee tres funcionalidades:
Standalone Server.
Config Server.
Shard Partition.
• Mongod:
48. 48
Función que almacena y extrae ficheros de la BD.
Define dos colecciones: files y chunks.
Ficheros mayores a 16MB se dividirán en partes
menores, y cada bloque se guardará como un
documento en la colección de bloques.
• GridFS:
51. 51
Sistema mongo Base de datos
Colección
Documento
Campo
String
Integer
Float
Timestamp
Binary
Documento
Arreglo
Nombre en forma de cadena
l
v
a
a
e
l
o
r
52. 52
• Las colecciones no fuerzan una estructura
idéntica para los documentos.
• Los documentos no necesitan la misma cantidad
de campos, y aquellos comunes pueden contener
diferentes tipos de datos.
• Cada documento necesita un número relevante
de campos de la entidad.
53. 53
La BD MongoDB guarda las estructuras de
datos en documentos tipo BSON, usando un
esquema dinámico con la siguiente disposición:
{
campo1 : valor1 ,
campo2 : valor2 ,
campo3 : valor3 ,
...
campoN : valorN
}
54. 54
• Son similares a los de otras BD y puede soporta
índices en cualquier campo o subcampo
contenido en los documentos de una colección.
• Por defecto, se crea un índice sobre la clave _id
de los documentos de una colección, aunque
también pueden ser creados vía ensureIndex:
Ej.: db.unicorns.ensureIndex({ name : 1});
55. 55
Características:
• Se definen sobre un nivel por colección.
• Se pueden crear sobre uno o varios campos
utilizando un índice compuesto.
• Utilizan una estructura de datos B-tree y
mejoran el rendimiento de consultas.
• Cada consulta utiliza sólo un índice.
57. 57
Limitaciones:
• Una colección no puede tener más de 64 índices.
• Las claves de índice no pueden ser mayor
que 1024 bytes (1KB) porque no pueden ser
indexados.
• El nombre de un índice, incluido los espacios
debe ser inferior a 128 caracteres .
58. 58
Respaldos:
Se utiliza el ejecutable mongodump:
Ej.: mongodump --db Gen
Restauración:
Utilizamos mongorestore:
Ej.: mongorestore --db Gen --drop --
dbpath dump/Gen
59. 59
SQL MongoDB
CREATE TABLE users ( id MEDIUMINT NOT NULL
AUTO_INCREMENT, user_id Varchar(30), age Number,
status char(1), PRIMARY KEY (id));
db.users.insert({user_id: "abc123", age: 55, status:
"A"})odb.createCollection("users")
DROP TABLE users db.users.drop()
INSERT INTO users(user_id,age, status) VALUES
("bcd001", 45, "A")
db.users.insert( { user_id: "bcd001", age: 45, status: "A"} )
SELECT * FROM users db.users.find()
SELECT COUNT(*) FROM users db.users.count()odb.users.find().count()
SELECT * FROM users WHERE status = "A" ORDER BY
user_id DESC
db.users.find( { status: "A" } ). sort( { user_id: -1 } )
UPDATE users SET status = "C" WHERE age > 25
db.users.update( { age: { $gt: 25 } }, { $set: { status: "C" } },
{ multi: true })
DELETE FROM users WHERE status = "D" db.users.remove( { status: "D" } )