presentacion bd nosql
DESCRIPTION
Administración de Base de Datos Exposición BD NoSQLTRANSCRIPT
Andrea Antunes C.I.: 20.362.606María E. Pulido C.I.: 20.289.633José Zambrano C.I.: 20.220.232
Universidad Central de VenezuelaFacultad de Ciencias
Escuela de ComputaciónAdministración de Bases de Datos
1
BD NoSQL
•¿Qué es NoSQL?.•¿Qué es una BD NoSQL?.•¿Por qué surge?.•Características.•Ventajas y Desventajas.•Arquitectura de una BD NoSQL.
Agenda…
2
•Teorema CAP.•Transacciones BASE.•CAP vs BASE vs ACID.•Taxonomía de BD NoSQL.•¿SQL ó NoSQL?.•Caso de Estudio.
Agenda…
3
¿Qué es NoSQL?
• Es una amplia clase de SMBD.
•Difiere del RDBMS.
4
•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.
¿Qué es una BD NoSQL?
5
…No existen tablas!!!
¿Qué es una BD NoSQL?
En RDBMS
En NoSQL
6
CI
• 20364587
• 21567098
• 18765123
Nombre
• Ana• Juan• Luis
1° Apellido
• Pérez• López• Jiménez
2° Apellido
• Null• García• Lares
Teléfono
• 4326654• Null• 4414532
236524981953264315973820
AnaJuan
María
PérezLópez
Jiménez
GarcíaSuárez
Null
Null4329916
Null
CI
• 20364587• 21567098• 18765123
Nombre
• Ana• Juan• Luis
1° Apellido
• Pérez• López• Jiménez
2° Apellido
• García
Teléfono
236524981953264315973820
AnaJuan
María
PérezLópez
Jiménez
GarcíaSuárez 4329916
…Llegó la web, el software como servicio, los servicios en la nube y las startups de éxito con millones de usuarios…
¿Por qué surge?
7
¿Por qué surge?
8
Billones de usuario Datos NO Estructurados +
9
¿Por qué surge?• 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.
• Consistencia Eventual.• Ausencia de esquema en los registros de datos.• Alta velocidad de respuesta a peticiones.• Estructura distribuida.• Escalabilidad horizontal.
Características
10
• Estructura distribuida.• Escalabilidad horizontal.
• Consistencia Eventual:
Características
11
• Ausencia de esquema en los registros de datos:
Características
12
ID Nombre Apellido Id_CArea
1 Frank Lara 22 Ana Guzmán 33 Pedro López 2
Id_CArea Ciudad Estado Cod_Area
1 MBO ZL 0261
2 CCS DC 02123 LAS NE 0295
+ ={ “ID”:1, “Nombre”:”Frank”, “Apellido”: “Lara”, “Cod_Area”:”0212”, “Ciudad”:”CCS”, “Estado”:”DC”}
Info. Usuario
Info. Dirección
• Alta velocidad de respuesta a peticiones:
Características
13
• Estructura distribuida:
Características
14
Zorro Función Hash DFCD3454
El zorro corre por el hielo Función Hash 52ED879E
El zorro rojo camina por el
hieloFunción Hash 46042841
Data Clave
• Escalabilidad:
15
Características
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
• 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.
Ventajas
16
• No son suficientemente maduros para algunas empresas.
• Falta de experiencia.
• No trata con datos críticos que requieren ACID.
• Problemas de compatibilidad.
Desventajas
17
Arquitectura de BD NoSQL
18
Teorema CAP
19
Consistency (Consistencia)
Partition Tolerance
(Tolerancia a Partición)
Availability(Disponibilidad)
CA CP
AP
RDBMS NoSQL
NoSQL
Transacciones BASE
20
Teorema
CAP
B
A
S
E
• Bassically Available. (Básicamente Disponible)
• Soft-State. (Estado suave)
• Eventual Consistency. (Consistencia eventual)
CAP vs BASE vs ACID
21
•Consistencia.
•Disponibilidad.
•Tolerancia a la partición.
CAP
•Tolerancia a la partición.•Disponibilidad.
BASE
•Coherencia.•Disponibilidad.
ACID
Orientada a Grafos
Familias de Columnas
Clave - Valor Documentos
Taxonomía de BD NoSQL
22
• La información es representada en nodos.
• Ya está normalizada.
• No es necesario definir cantidad de atributos.
• Registros de longitud variable.
• Recorrido.
BD Orientada a Grafos
23
• Índice.
• ¿Cuándo usarlas?.
• Algunas BD: Neo4j, HyperGraphDB.
BD Orientada a Grafos
24
BD Orientada a Grafos• Ejemplo:
25
Carolina MensajeMensajeSara
Carlos
Ana
Amigo de
Amigo de
Amigo de
Amigo de
Amigo de Me gusta
Me gusta
Últ. Ant.
• Guarda los valores en columnas.• Los datos son almacenados como secciones de
las columnas de datos.• ¿Cuándo usarlas? • Beneficios.• Ventajas.
BD de Familia de Columnas
26
• Precursor: Google BigTable.• Conceptos fundamentales:
• Algunas BD: Hbase, Cassandra, Hypertable.
BD de Familia de Columnas
27
Familia de ColumnasSúper Columna
Columna
RowKey Sup_Col_Name1
C_N1
C_V1
C_Nn
C_Vn
Sup_Col_Namem
C_N1
C_V1
C_Nn
C_Vn
….. …..…..
BD de Familia de Columnas
28
Id Nombre Edad Intereses
1 Ricky Fútbol, Cine, Béisbol
2 Pedro 203 Juan 25 Música
Id Nombre
1 Ricky
2 Pedro3 Juan
Id Edad
2 203 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:
• 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.
BD Clave-Valor
29
• Básicamente sería...
BD Clave-Valor
30
Clave Valor
85051-0
• Precursor: Amazon Dynamo.• Algunas BD: Riak y Redis.
86694-1Índice
Claves
John Smith
Lisa Smith
Sam Doe
000001 754375002
200201202 854575
886887 345435889
Valores
:
:
BD Clave-Valor
31
• Ejemplo:
BD Orientada a Documentos
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.
BD Orientada a Documentos
33
• Características.• Precursor: Lotus Notes.• Algunas BD: Apache CouchDB y RavenDB.
34
• Ejemplo:
{ Nombre:"Pepe", Dirección:"C/ San Juan 15", Hijos:[ {Nombre:"Ana",Edad:10}, {Nombre:"Pedro", Edad:8}, {Nombre:"Juan", Edad:5}, {Nombre:"Félix", Edad:2} ] }
BD Orientada a Documentos
{ Nombre:”María", Dirección:“Guarenas", Fecha_Nac:”20/06/1980”, Teléfono:”0212-2515025” Hijos:[ {Nombre:“Luís",Edad:15}
]
}
Contenedor
ID: 23532ID: 84678
¿SQL o NoSQL? La Clave…
A la hora de decidirnos entre una
arquitectura u otra, debemos tener en
cuenta…
35
Caso de Estudio
36
Caso de Estudio
{ nombre: “Mongo”, tipo: “BD”, clase: “NoSQL”, taxonomía: “Documentos” }
37
•¿Qué es MongoDB?.•Características Principales.•Estructura de MongoDB.•Arquitectura de MongoDB.•Modelo de Datos.•Esquema Flexible.
Agenda…
38
Agenda…
39
•Estructura de un Documento.•Índices en MongoDB.•Respaldo y Restauración.•¿Quiénes usan MongoDB?•Videos demostrativos: “Primeros pasos con MongoDB”.
40
¿Qué es MongoDB?
• BD multiplataforma de código abierto.
• NoSQL orientada a documentos.
41
Características Principales•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
Estructura de MongoBDPosee una estructura escalable debido a las
las siguientes propiedades:
• Escalabilidad horizontal (Auto-Sharding).• Replicación para alta disponibilidad.
43
•Escalabilidad horizontal (Auto-Sharding):
Estructura de MongoBD
Rango de Clave Rango de Clave Rango de Clave
0…100 0…50 51…100 0…25 26…50
…….
51…75 76…100mongod mongod mongod mongod mongod
mongod mongod
Escalabilidad para Escribir
44
•Replicación para alta disponibilidad:
Estructura de MongoBD
Esclavo
Esclavo
Maestro
Esclavo
EsclavoDriv
er
EscrituraLectura
EscrituraLectura
Lectura
Maestro
MaestroXEsclavo
45
Arquitectura de MongoBD
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
Motor central de la BD, puede correr como programa o demonio y posee tres funcionalidades:
Standalone Server. Config Server. Shard Partition.
Arquitectura de MongoBD•Mongod:
47
“Database Router”
Brinda transparencia a las aplicaciones
cliente.
Arquitectura de MongoBD•Mongos:
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.
Arquitectura de MongoBD•GridFS:
49
Arquitectura de MongoBD
50
Modelo de Datos
51
Sistema mongo Base de datos
Colección
Documento
Campo
StringIntegerFloatTimestampBinaryDocumentoArreglo
Nombre en forma de cadena
Modelo de Datos
l
va
a
e
lor
52
Esquema Flexible•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
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}
Estructura de un documento
54
Índices en MongoDB•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
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.
Índices en MongoDB
56
_id
Único
Disperso
Secundario
Compuesto
No Disperso
Hash
TTL
Texto
Geoespaciales
ÍNDICESMongoDB
Índices en MongoDBTipos:
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 .
Índices en MongoDB
58
Respaldo y RestauraciónRespaldos:
Se utiliza el ejecutable mongodump:Ej.: mongodump --db Gen
Restauración: Utilizamos mongorestore:
Ej.: mongorestore --db Gen --drop --dbpath dump/Gen
59
Comparación SQL-MongoBDSQL 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" } )
60
¿Quiénes usan MongoDB?
Videos Demostrativos
“Primeros pasos con MongoDB”
61
• Iniciando MongoDB.• Creando BD. • Creando Colecciones 1.• Creando Colecciones 2.• Índices.
62
¿Dudas?
¿Preguntas?
¡Gracias por su Atención!
63