Presentacion BD NoSQL

1,706 views

Published on

Administración de Base de Datos
Exposición BD NoSQL

Published in: Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,706
On SlideShare
0
From Embeds
0
Number of Embeds
95
Actions
Shares
0
Downloads
106
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Presentacion BD NoSQL

  1. 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. 2. • ¿Qué es NoSQL?. • ¿Qué es una BD NoSQL?. • ¿Por qué surge?. • Características. • Ventajas y Desventajas. • Arquitectura de una BD NoSQL. 2
  3. 3. • Teorema CAP. • Transacciones BASE. • CAP vs BASE vs ACID. • Taxonomía de BD NoSQL. • ¿SQL ó NoSQL?. • Caso de Estudio. 3
  4. 4. • Es una amplia clase de SMBD. • Difiere del RDBMS. 4
  5. 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. 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. 7. …Llegó la web, el software como servicio, los servicios en la nube y las startups de éxito con millones de usuarios… 7
  8. 8. 8 Billones de usuario Datos NO Estructurados+
  9. 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. 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.
  11. 11. • Consistencia Eventual: 11
  12. 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
  13. 13. • Alta velocidad de respuesta a peticiones: 13
  14. 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. 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. 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. 17. • No son suficientemente maduros para algunas empresas. • Falta de experiencia. • No trata con datos críticos que requieren ACID. • Problemas de compatibilidad. 17
  18. 18. 18
  19. 19. 19 Consistency (Consistencia) Partition Tolerance (Tolerancia a Partición) Availability (Disponibilidad) A P RDBMS NoSQL NoSQL
  20. 20. 20 • Bassically Available. (Básicamente Disponible) • Soft-State. (Estado suave) • Eventual Consistency. (Consistencia eventual)
  21. 21. 21 • Consistencia. • Disponibilidad. • Tolerancia a la partición. CAP •Tolerancia a la partición. •Disponibilidad. BASE •Coherencia. •Disponibilidad.ACID
  22. 22. Orientada a Grafos Familias de Columnas Clave - Valor Documentos 22
  23. 23. • La información es representada en nodos. • Ya está normalizada. • No es necesario definir cantidad de atributos. • Registros de longitud variable. • Recorrido. 23
  24. 24. • Índice. • ¿Cuándo usarlas?. • Algunas BD: Neo4j, HyperGraphDB. 24
  25. 25. • Ejemplo: 25 Carolina MensajeMensajeSara Carlos Ana Amigo de Amigo de Amigo de Amigo de Amigo de Me gusta Me gusta Últ. Ant.
  26. 26. • Guarda los valores en columnas. • Los datos son almacenados como secciones de las columnas de datos. • ¿Cuándo usarlas? • Beneficios. • Ventajas. 26
  27. 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. 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. 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
  30. 30. • Básicamente sería... 30 Clave Valor 85051-0 • Precursor: Amazon Dynamo. • Algunas BD: Riak y Redis. 86694-1 Índice
  31. 31. Claves John Smith Lisa Smith Sam Doe 000 001 754375 002 200 201 202 854575 886 887 345435 889 Valores : : 31 • Ejemplo:
  32. 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.
  33. 33. 33 • Características. • Precursor: Lotus Notes. • Algunas BD: Apache CouchDB y RavenDB.
  34. 34. 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} ] } { 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
  35. 35. La Clave… A la hora de decidirnos entre una arquitectura u otra, debemos tener en cuenta… 35
  36. 36. 36
  37. 37. { nombre: “Mongo”, tipo: “BD”, clase: “NoSQL”, taxonomía: “Documentos” } 37
  38. 38. • ¿Qué es MongoDB?. • Características Principales. • Estructura de MongoDB. • Arquitectura de MongoDB. • Modelo de Datos. • Esquema Flexible. 38
  39. 39. 39 • Estructura de un Documento. • Índices en MongoDB. • Respaldo y Restauración. • ¿Quiénes usan MongoDB? • Videos demostrativos: “Primeros pasos con MongoDB”.
  40. 40. 40 • BD multiplataforma de código abierto. • NoSQL orientada a documentos.
  41. 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. 42 Posee una estructura escalable debido a las las siguientes propiedades: • Escalabilidad horizontal (Auto-Sharding). • Replicación para alta disponibilidad.
  43. 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
  44. 44. 44 • Replicación para alta disponibilidad: Esclavo Esclavo Maestro Esclavo Esclavo Driver Escritura Lectura Escritura Lectura Lectura Maestro Maestro XEsclavo
  45. 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. 46 Motor central de la BD, puede correr como programa o demonio y posee tres funcionalidades:  Standalone Server.  Config Server.  Shard Partition. • Mongod:
  47. 47. 47 “Database Router” Brinda transparencia a las aplicaciones cliente. • Mongos:
  48. 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:
  49. 49. 49
  50. 50. 50
  51. 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. 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. 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. 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. 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.
  56. 56. 56 _id Único Disperso Secundario Compuesto No Disperso Hash TTL Texto Geoespaciales ÍNDICES MongoDB Tipos:
  57. 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. 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. 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" } )
  60. 60. 60
  61. 61. “Primeros pasos con MongoDB” 61 • Iniciando MongoDB. • Creando BD. • Creando Colecciones 1. • Creando Colecciones 2. • Índices.
  62. 62. 62
  63. 63. 63

×