740 likes | 1.91k Views
BD NoSQL. Integrantes: Asignatura: ABD Erlimar Rodríguez Sección: C1 Roger Rondón Reinaldo Guevara. Modelo Relacional. Basado en la teoría de conjuntos. Datos en tablas bidimensionales. Se basa en el concepto de relación. Sencillo y fácil de modificar.
E N D
BD NoSQL Integrantes: Asignatura: ABDErlimar Rodríguez Sección: C1 Roger Rondón Reinaldo Guevara
Modelo Relacional • Basado en la teoría de conjuntos. • Datos en tablas bidimensionales. • Se basa en el concepto de relación. • Sencillo y fácil de modificar. • Operadores con gran poder de manipulación de datos. • No incluye comportamiento de los datos.
NoSQL • Es un término usado para agrupar una serie de almacenes de datos no relacionales. • No proporciona garantías ACID. • Normalmente no tienen esquemas fijos de tablas ni sentencias "join". • Acuñado a principios de 2009 por un empleado de Rackspace, Eric Evans.
¿Por qué surge NoSQL? • Poca eficiencia en determinadas aplicaciones en las bases de datos relacionales. • Aumento de lecturas y escrituras. • Gran conjunto de transacciones con gran numero de escrituras. • Sentencias complejas. • Los primeros precursores son desarrolladores Web y Java. • Solucionan terabytes e incluso petabytes de datos para la Web 2.0. • Máquinas de un costo más reducido, gracias a su nivel de escalabilidad.
Arquitectura de la BD NoSQL • Emplean una arquitectura distribuida. • Utilizan tablas hash distribuidas. • Estructuras de datos sencillas. • Ofrecen garantías de consistencia débiles.
Teorema CAP • Lanzado como una conjetura en el año 2000 por Eric Brewer. • Asegura solo dos de éstas: consistencia, disponibilidad y tolerancia a particiones.
Teorema CAP • CP: el sistema ejecutará las operaciones de forma consistente, aunque se pierda la comunicación entre nodos (partición del sistema). • AP: el sistema siempre responderá a las peticiones, aunque se pierda la comunicación entre nodos (partición del sistema). • CA: el sistema siempre responderá a las peticiones y los datos procesados serán consistentes.
Transacciones BASE • Consistencia débil. • Prima la disponibilidad. • Mejor esfuerzo. • Respuestas aproximadas OK. • Agresivo (optimista). • Más sencillo y más rápido
Clasificación de Sistemas NoSQL • Las aplicaciones web modernas tienes distintos desafios: - Datos a escala web. - Alta lecturas y escrituras. - Cambios de esquema de datos frecuentes. - Las aplicaciones sociales no necesitan el mismo nivel de ACID. Los principales tipos de BD: • Bases de datos documentales • Bases de datos Clave/Valor • Base de datos en grafos • Base de datos orientados a objeto • Bases de datos tabular
Bases de datosdocumentales • Documentos { FirstName:"Bob", Address:"5 Oak St.", Hobby:"sailing" } • Formatos: XML, YAML, JSON, BSON, binarios como PDF. • Claves • Recuperación
RDB vs Document-Oriented DB Bases de datosrelacionales • Esquema explícito predefinido . • Tablas de datos uniformes. • Normalizado. • Los objetos se expanden en varias tablas. • Duplicación reducida. • Conocimiento previo del esquema. • Consultas dinámicas de esquemas estáticos Bases de datos orientadas a documentos • Esquema implícito dinámico. • Colección de documentos con estructura variable. • Desnormalizado. • Los documentos se autocontienen. • Los datos suelen estar duplicados. • Solo es necesario conocer el nombre del documento. • Consultas estáticas de esquemas dinámicos
Características • No proporcionan relaciones estrictas entre los documentos. • Las relaciones están integradas en los mismos documentos. • Guardan datos semi-estructurados. • Escalado horizontal sencillo y flexible. • Modelo de datos: colecciones de documentos que contienen colecciones de claves-valor. • Modelado de datos natural. • Amigables al programador • Desarrollo rápido • Orientadas a la web. • Óptimizado para la nube.
Ejemplos • MongoDB • CouchDB • Terrastore • RavenDB • OrientDB • ThruDB • SisoDB • RaptorDB • CloudKit • Perservere • Jackrabbit
SMBD NoSQL, Document-oriented, Open Source, escrito en C++ • Para el almazenamiento de datos usa el formato BSON (BinaryJSON) • BD -> GPL AGPL, Drivers -> Apache 2.0, Documentación -> CreativeCommons
Descripción de recursos: • Binarios oficiales disponibles para Windows, Mac OS X, Linux y Solaris, así como el código fuente. • Drivers oficiales disponibles para C, C#, C++, Haskell, Java, JavaScript, Perl, PHP, Python, Ruby, Scala entre otros. • Consultas JavaScript ad-hoc que permiten localizar datos usando cualquier criterio de cualquier atributo de documento. • Soporte a expresiones regulares en consultas. • Replicación Maestro/esclavo similar a MySQL. • Escalamiento horizontal usando auto-sharding. • Almazenamiento de archivos grandes usando GridFS. • Soporte a indexación de atributos, semejante a los RDBMS. • Documentación detallada.
Ejemplo práctico • Obtener información: db.serverStatus(); db.stats(); • Usar/Crear DB use db • Crear documento simple: db.colors.save({name:”red”,value:”ff0000”});
Ejemplo práctico • Creando una colección de documentos de caracteres: > var chars = "abcdefghijklmnopqrstuvwxyz" > for(var i =0; i<chars.length; i++) { ... var char = chars.substr(i, 1); ... var doc = {char:char, code: char.charCodeAt(0)}; ... db.alphabet.save(doc); ... }
Ejemplo práctico • Consulta/Recuperación de datos: • db.alphabet.find(); • It • db.alphabet.find().forEach(printjson); • db.alphabet.find({char: "o"}); • db.alphabet.find({code:{$lte:100}});
Bases de datos en grafos • Grafos • Nodos (vértices) Relaciones (aristas) • Modelo de datos: nodos, relaciones con pares clave valor en ambos
Bases de datos en grafos Algunos campos donde se desempeñan bien los grafos: • Recomendaciones • Inteligencia de negocios • Computación Social • Logística • Genealogía • Indexación de datos • Administración de sistemas
Bases de datos en grafos Algunas ventajas: • Consultas más amplias y no demarcadas por tablas • No hay que definir un número determinado de atributos • Los registros también son de longitud variable • Se puede recorrer directamente la base de datos de forma jerárquica Ejemplos: AllegroGraph, VertexBD, Neo4j
Neo4j • Software libre de bases de datos orientada a grafos, implementado en Java, desarrollado por Neo Technology. • Bajo GPL v3, módulos bajo AGPL. • Motor de persistencia embebido, basado en disco, completamente transaccional Java que almacena datos estructurados en grafos más que en tablas. • Almacena datos en un grafo de propiedades. Nodos, relaciones. • Las consultas recorren los grafos, identifican rutas, y las rutas ordenan a los nodos. • Los índices encuentran nodos y relaciones para realizar posteriormente búsquedas más rápidas.
Neo4j • Interfaz web • PowerShell • Gremlin (DSL para grafos) • Cypher (lenguaje declarativo) Me encanta el ejemplo jeje
Bases de datos Clave-Valor Modelo de datos • Cluster • Keyspace • ColumFamily • SuperColumn • Column • Escalabilidad horizontal. • Desarrollada en Java. Multiplataforma. • API sencilla y limpia. CLI • Desde la version 0.8 usa CQL.
Base de datosOrientados a Objeto Consecuencias del paradigma. • Identidad de un objeto. • Deja de existir un lenguaje SQL. • Esquema de datosrepresentadoporclases. • Evita el desajusteporimpedancia.
BDOO Características: • Agregación. • Encapsulamiento. • Herencia. • Polimorfismo. Basadas en Java y .NET Utilidad de las BDOO • Dispositivosmoviles. • Sistemas de control. • Aplicaciones de internet.
Base de datos Tabular QueesBigTable? • Sistema de almacenamientodistribuido. • Almacena la informacion en tablasmultidimensionales. • No esuna BD relacional. • Pensadoparacrecer en un alto volumen.
Google File System (GFS) • Sistema de archivos distribuidos. • Eficiencia, fácil acceso, almacenamiento masivo (clusters), procesamiento paralelo. • Nodos: Maestro y Chunkservers (almacenadores) • Cada porción es replicada en al menos 3 servidores. • No está programado en el kernel, funciona como una librería.
Estructura de BigTable • Datos son indexados usando el nombre de la fila, la columna y un timestamp. • Se puede describir como un mapa distribuido, persistente y multidimensional. • Los datos de las celdas son tratados como un array no interpretado de bytes.
Ventajas • Pueden manejar enormes cantidades de datos. • Se ejecutan en clusters de máquinas baratas. • No generan cuellos de botella. • Responden a las necesidades de escalabilidad horizontal que tienen cada vez más empresas.
Desventajas • No están lo suficientemente maduros para algunas empresas:Problema de credibilidad importante con muchas empresas. • La falta de experiencia: Difícil encontrar personas con los conocimientos técnicos apropiados. • Problemas de compatibilidad:Tiene su propia API, las interfaces de consultas son únicas y tienen peculiaridades.