Download BD NoSQL - ABD-UCV
Document related concepts
Transcript
Asignatura: ABD Sección: C1 Integrantes: Erlimar Rodríguez 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 datos documentales 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 datos relacionales Esquema explícito predefinido . Tablas de datos uniformes. Normalizado. Los objetos se expanden en varias tablas. Duplicación reducida. Conocimiento previo esquema. Consultas dinámicas esquemas estáticos del de 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 Modelado de datos natural. Amigables al programador proporcionan relaciones estrictas entre los documentos. Las relaciones están integradas en los mismos documentos. Guardan datos semiestructurados. Escalado horizontal sencillo y flexible. Modelo de datos: colecciones de documentos que contienen colecciones de claves-valor. 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 (Binary JSON) BD -> GPL AGPL, Drivers -> Apache 2.0, Documentación -> Creative Commons 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 • Escalabilidad horizontal. • Desarrollada en Java. Multiplataforma. • API sencilla y limpia. CLI • Desde la version 0.8 usa CQL. Cluster Keyspace ColumFamily SuperColumn Column Cassandra Base de datos Orientados a Objeto Consecuencias del paradigma. Identidad de un objeto. Deja de existir un lenguaje SQL. Esquema de datos representado por clases. Evita el desajuste por impedancia. BDOO Características: Basadas en Java y .NET Agregación. Utilidad de las BDOO Encapsulamiento. Herencia. Dispositivos moviles. Polimorfismo. Sistemas de control. Aplicaciones de internet. Base de datos Tabular Que es BigTable? Sistema de almacenamiento distribuido. Almacena la informacion en tablas multidimensionales. No es una BD relacional. Pensado para crecer 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.