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.