Download BD NoSQL - ABD-UCV

Document related concepts

NoSQL wikipedia , lookup

MongoDB wikipedia , lookup

Modelo de base de datos wikipedia , lookup

Base de datos documental wikipedia , lookup

Apache Cassandra wikipedia , lookup

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.