Está en la página 1de 38

Taller de Bases de Datos NoSQL

4 Créditos

2 horas semanales

Docente: Andrés Pastorini


Algunos Conceptos Iniciales

● Base de Datos Relacional


● Base de Datos NoSQL
● Base de Datos NewSQL
Aspectos Involucrados

● Datos
○ Seguridad
○ Disponibilidad
○ Consistencia Total vs Eventual
○ Restricciones
● Diseño
○ SCHEMALESS
○ PERFORMANCE
○ ESCALABILIDAD
○ Orientado a API vs Orientado a Dominio
Aspectos involucrados

● Infraestructura
○ Cpu, Almacenamiento, Ram, Red, Nodos, Cluster
● Administración
○ Replica, Shard, Sharding, Nodos Virtuales, Roles (usuarios, nodos)
● Desarrollo
○ CRUD Simple
○ Lenguaje simple
○ Pensar en Objetos
○ Librerías Cliente
○ Lógica y restricciones en capa de Datos o en capa de Aplicación
Escalabilidad Horizontal y Vertical
RDBMS

● Datos Consistentes por sobre flexibilidad y escalabilidad.


● Almacenan datos en tablas relacionadas
● Esquemas rígidos

La necesidad de que los RDBMS sean más flexibles y escalables resulta


en el surgimiento de NoSql.
RDBMS

Las BD relacionales
• Utilizan un modelo de datos simple (basado en tablas y relaciones)
• Ofrecen herramientas para garantizar la integridad de datos y la consistencia de
la información (ACID)
• Utilizan un lenguaje de interrogación estándar, simple y potente
• Proporcionan utilidades para asegurar el acceso, manipulación y la privacidad
de los datos
Impulsores NoSql
las 3 V’s (2013)
• Volume: gran cantidad de datos
• Velocity: necesidad de ser analizados rápidamente
• Variety: datos estructurados y no estructurados, densos y
dispersos, conectados y desconectados

Ahora, 7 V’s (2016)


• Variability: datos cuyo significado cambia constantemente
• Veracity: veracidad, precisión
• Visualisation: presentar los datos de forma comprensible
• Value: extraer información para la toma de decisiones
Teorema de Brewer: “es imposible para un sistema computacional
distribuido ofrecer simultáneamente las siguientes tres garantías”

• Consistencia, todos los nodos vean los mismos datos al mismo tiempo
• Disponibilidad, garantizar que los clientes encuentra una copia de los datos
solicitados aunque haya nodos caídos en el cluster.
• Tolerancia a la partición, el sistema continúa funcionando a pesar de la
pérdida de mensajes o fallos parciales del sistema.
ACID

• Atomicity - todo o nada


• Consistency - coherencia de los datos
• Isolation - serialización de transacciones
• Durability - los cambios son permanentes
BASE

•Basically Available, está operativo la mayoría del tiempo

• Soft state, los datos en las diferentes réplicas no tienen que ser
mutuamente consistentes en todo momento.

• Eventually Consistent, se asegura la consistencia solo después de que


pase cierto tiempo.
NoSQL se basa en 4 principios:

• El control transaccional ACID no es importante, ni tampoco los Joins.


• Se promueve desnormalización.
• Algunos elementos relacionales son necesarios y aconsejables
• Gran capacidad de escalabilidad y de replicación en múltiples servidores.
Arquitectura NoSql

● Consistencia eventual
● Arquitectura distribuida donde los datos están almacenados
de forma redundante en varios servidores.
● Estructuras de datos simples como arrays asociativos
● Las consultas se realizan exclusivamente por key.
● Las consultas complejas se realizan mediante una
infraestructura de procesamiento externo como MapReduce
o Filtros.
Utilizar Nosql cuando:

• Se manejan volúmenes grandes de datos


• Tienen una frecuencia alta de accesos de lectura y escritura
• Con cambios frecuentes en los esquemas de datos
• Y que no requieren consistencia ACID
• Casos de aplicación:
• Servicios Web2.0 (redes sociales, blogs, etc.)
• Aplicaciones IoT
• Almacenamiento de perfiles sociales
• Juegos sociales
• Gestión de contenidos
Categorías NOSQL

● Clave Valor (Hashmap, hash table, Diccionario)


● Almacén de Documentos
● Almacén de Tuplas
● Orientado a Columnas
● Grafos
● Otras
Clave Valor

● Se suele usar función hash para mapear cada entrada a un área de


memoria o disco concreta, mejorando la performance en el acceso.
● Diseño pensado para Escalar Horizontalmente
● Para cada clave, almacena un valor.
Clave Valor
Clave Valor
Clave Valor

Ejemplo: Memcached (Key value Store)

● Solución de Caché
● Implementa una solución Memory Driven Hash Table distribuida que se
coloca por delante de una base de datos relacional para acelerar las
consultas, cacheando los accesos recientes de la ram.
Clave Valor

● Administración
○ Request Coordinator
○ Consistent Hashing Schemes
○ Replicación y redundancia
○ Estabilización (Se agregan o eliminan nodos)
Clave Valor

• Los datos se almacenan basados en una única clave


• Alto rendimiento para operaciones CRUD básicas pero bajo para atender
consultas complejas o manejar datos interconectados
• Operaciones atómicas a nivel de key
• Escalabilidad horizontal a través de sharding
Clave Valor

Recomendada para:
• Información de sesión en aplicaciones web
• Perfiles y preferencias de usuario
• Cache
• Carritos de la compra

No aptas para aplicaciones que requieren


● Datos interconectados (servicios de redes sociales, recomendadores,…)
● Consistencia para un conjunto de keys
● Búsquedas por la información almacenada en valor
Almacén de Documentos

• Datos almacenados como documentos


• Se puede realizar consultas por atributos no clave.
• Esquema flexible
• Operaciones atómicas a nivel de documento
• Escalabilidad horizontal a través de sharding
Almacén de Documentos - Casos de uso

Recomendadas para
• Blogs
• Event logging
• Meta datos para aplicaciones web y móviles
• Alternativas a RDBMS sin consultas complejas

No recomendadas para
• Consistencia para un conjunto de documentos
Almacén de Documentos - Consultas

● Se pueden definir filtros


● Se pueden definir índices únicos y no únicos
● Índices compuestos
● Indices geoespaciales
● índices basados en texto
Almacén de Documentos - Relaciones entre entidades

● Modelar relaciones con el patrón Embedded


● Modelar Relaciones con Referencias
● Modelar Relaciones con esquema Mixto
Familia de columnas

Los datos se almacenan en familias de columnas donde cada fila tiene una
clave y una o varias columnas. Las columnas no tienen que ser las mismas en
cada fila. Dispone de Operaciones atómicas a nivel de fila .
Familia de columnas
Familia de columnas - Casos de Uso

Recomendadas para

● Análisis de Datos
• Tiempo de validez por columna

No recomendadas
• Transacciones ACID para operaciones de lectura/escritura
Grafos

• Los datos se almacenan como nodos (vértices) y enlaces


• Están orientadas a analizar las relaciones (caminos mínimos, adyacencias,
medidas de centralidad,…) y no a computar agregaciones
• No se recomienda sharding ya que atravesar grafos en distintas máquinas es
difícil y costoso.
• Escalabilidad vertical
• ACID, similar a las BD relacionales
• Basados en teoría de grafos
Grafos - Casos de Uso

Recomendadas para:
• Almacenar datos conectados
• Aplicaciones espaciales o de rutas
• Motores de recomendación

No recomendadas para
• Actualizaciones frecuentes de todos o un subconjunto de propiedades de
nodos y enlaces
• Requisitos de escalabilidad horizontal
Otras categorías NoSql

● XML
● Orientadas a Objetos
● Bases de Datos Espaciales
● Bases de Datos Probabilísticas
Más comentarios

● En NoSQL, los datos se recuperan, en general, de forma más rápida que


en RDBMS.
● En NoSql, las consultas que se puede realizar son más limitadas.
● En NoSql la complejidad se traslada a la aplicación.
Bibliografía

Eric Redmond. Seven Databases in Seven Weeks: A Guide to Modern Databases and the
NoSQL Movement.
Ian Robinson, Jim Webber, and Emil Eifrém. Graph Databases 2nd Edition. 2015. O'Reilly
Media
Harrison et al. Next Generation Databases: NoSQL, NewSQL, and Big Data. 2015. Apress.

También podría gustarte