Curso:
Big Data
Preguntas
• ¿Qué es una base de datos NoSQL?
Contenidos que veremos el día de hoy
Big Data: Procesamiento en Tiempo Real
1. Procesamiento en Tiempo Real
2. Arquitectura
3. Apache Kafka
4. Bases de datos NoSQL
Al finalizar esta sesión, comprenderá los
conceptos y diferencias de las bases de
datos NoSQL respecto a otras bases de
datos.
Nuestro objetivo
Big Data : Procesamiento en tiempo real
• Bases de datos NoSQL
Introducción
• NOSQL
• No solo SQL
• Los sistemas SQL ofrecen muchas características (no todo el mundo las
usará) y restricciones.
• La mayoría de los sistemas NOSQL son bases de datos distribuidas o
sistemas de almacenamiento distribuido.
• Céntrese en el almacenamiento de datos semiestructurados, el alto
rendimiento, la disponibilidad, la replicación de datos y la escalabilidad.
Introducción
• Los sistemas NOSQL se centran en el almacenamiento de "big data“
• Aplicaciones típicas que usan NOSQL
• Medios de comunicación social
• Enlaces web
• Perfiles de usuario
• Marketing y ventas
• Posts y tweets
• Mapa de carreteras y datos espaciales
• Correo electrónico
Sistemas NOSQL
• Tablas grandes
• Sistema NoSQL propiedad de Google
• Almacén basado en columnas o de columnas grandes
• DynamoDB (Amazon)
• Almacén de datos de clave-valor
• Cassandra (Facebook)
• Utiliza conceptos tanto del almacén de clave-valor como de sistemas
basados en columnas.
Sistemas NOSQL
• Características de NOSQL relacionadas con bases de datos distribuidas y
sistemas distribuidos
• Escalabilidad
• disponibilidad, replicación, and consistencia eventual
• Modelos de replicación
• Master-slave
• Master-master
• Fragmentación de archivos
• Acceso a datos de alto rendimiento
Sistemas NOSQL
• Categorias de sistemas NoSQL
• Sistemas NOSQL basados en documentos
• Almacenes de clave-valor NOSQL
• Sistemas NOSQL basados en columnas o columnas anchas
• Sistemas NOSQL basados en grafos
• Sistemas NOSQL híbridos
• Bases de datos de objetos
• bases de datos XML
Teorema CAP
CAP es el acrónimo de consistencia, disponibilidad Tolerancia de partición: la tolerancia de
partición es la tolerancia del sistema de base
y tolerancia de partición formulado por Eric
de datos a una partición de red, y cada
Brewer.
partición debe tener al menos un nodo vivo, es
Coherencia: al realizar una operación de lectura, decir, cuando dos nodos no pueden
los datos recuperados son los mismos en varios comunicarse entre sí, aún atienden solicitudes
nodos. Por ejemplo, si tres usuarios realizan una de lectura/escritura para que los clientes
operación de lectura en tres nodos diferentes, pueden comunicarse con uno o ambos nodos.
todos los usuarios obtienen el mismo valor para
una columna en particular en todos los nodos.
Disponibilidad: el reconocimiento del éxito o
fracaso de cada solicitud de lectura/escritura se
denomina disponibilidad del sistema. Si dos
usuarios realizan una operación de escritura en
dos nodos diferentes, pero en uno de los nodos la
actualización ha fallado, entonces, en ese caso, se
notifica al usuario sobre la falla.
12
BASE
BASE es el acrónimo de un conjunto de Consistencia eventual: el estado que sigue al
estado flexible es la consistencia eventual.
propiedades relacionadas con el diseño de bases
de datos basado en el teorema CAP. El conjunto Se dice que la base de datos ha alcanzado la
de propiedades está básicamente disponible, en consistencia una vez que los cambios en los
estado flexible y eventualmente consistente. Las datos se actualizan en todos los nodos. La
bases de datos NoSQL exhiben las propiedades consistencia eventual establece que una
BASE. operación de lectura realizada por un usuario
seguida inmediatamente por una operación de
Básicamente disponible: se dice que una base de
escritura puede devolver datos inconsistentes.
datos está básicamente disponible si el sistema
siempre está disponible a pesar de una falla en la
red.
Estado flexible: el estado blando significa que los
nodos de la base de datos pueden ser
incoherentes cuando se realiza una operación de
lectura.
13
ACID
ACID es el acrónimo de un conjunto de coherente después de una transacción exitosa.
Si la base de datos permaneció consistente
propiedades relacionadas con las transacciones de
antes de que se ejecutara la transacción, debe
la base de datos. Las propiedades son atomicidad
(A), consistencia (C), aislamiento (I) y durabilidad permanecer consistente incluso después de la
ejecución exitosa de la transacción.
(D).
Aislamiento (I): el aislamiento es una
Los sistemas de administración de bases de datos
relacionales exhiben propiedades ACID. propiedad que evita el conflicto entre
transacciones simultáneas, en las que varios
Atomicidad (A): es una propiedad que establece usuarios acceden a los mismos datos, y
que cada transacción debe considerarse como una garantiza que otro usuario no sobrescriba los
unidad atómica donde se ejecutan todas las datos actualizados por un usuario. Cuando dos
operaciones de una transacción o no se ejecuta usuarios intentan actualizar un registro,
ninguna. No debe haber ningún estado intermedio deberían poder trabajar de forma aislada sin la
donde las operaciones se completen intervención del otro, es decir, una transacción
parcialmente. En el caso de transacciones no debería afectar la existencia de otra
parciales, el sistema volverá a su estado anterior. transacción.
Coherencia (C): es una propiedad que garantiza
que la base de datos permanecerá en un estado
14
ACID
Durabilidad (D): la durabilidad es una propiedad
que garantiza que la base de datos sea lo
suficientemente duradera como para retener
todas las actualizaciones, incluso si el sistema
falla, es decir, una vez que una transacción se
completa con éxito, se vuelve permanente. Si una
transacción intenta actualizar un dato en una base
de datos y se completa con éxito, entonces la base
de datos tendrá los datos modificados. Por otro
lado, si se confirma una transacción, pero el
sistema falla antes de que los datos se escriban en
el disco, los datos se actualizarán cuando el
sistema vuelva a funcionar.
15
Sistemas NOSQL basados en documentos y MongoDB
• Almacén de documentos
• Colecciones de documentos similares
• Los documentos individuales se asemejan a objetos complejos o
documentos XML
• Los documentos son autodescriptivos
• Puede tener diferentes elementos de datos.
• Los documentos se pueden especificar en varios formatos.
• XML
• JSON
Modelo de datos MongoDB
• Documentos almacenados en formato binario JSON (BSON).
• Documentos individuales almacenados en una colección.
• Comando de ejemplo
• El primer parámetro especifica el nombre de la colección.
• Las opciones de recopilación incluyen límites en el tamaño y la
cantidad de documentos.
• Cada documento de la colección tiene un campo ObjectID único
llamado _id
Modelo de datos MongoDB
• Una colección no tiene un esquema.
• Estructura de los campos de datos en los documentos elegidos en
función de cómo se accederá a los documentos
• El usuario puede elegir un diseño normalizado o desnormalizado
• Creación de documentos mediante la operación de inserción
• Eliminación de documentos mediante la operación de eliminación
Slide 24- 19
Ejemplo de documentos simples en
MongoDB (a) Diseño de documento
desnormalizado con subdocumentos
incrustados (b) Matriz incrustada de
referencias de documentos
Slide 24- 20
Ejemplo de documentos simples
en MongoDB (c) Documentos
normalizados (d) Inserción de los
documentos (c) en sus
colecciones
Características de los sistemas distribuidos MongoDB
• Método de compromiso de dos fases
• Se utiliza para garantizar la atomicidad y la coherencia de las transacciones de
varios documentos.
• Replicación en MongoDB
• Concepto de conjunto de réplicas para crear múltiples copias en diferentes nodos
• Variación del enfoque master-slave
• Copia primaria, copia secundaria y árbitro
• Arbiter participa en las elecciones para seleccionar nuevas primarias si es
necesario
Características de los sistemas distribuidos MongoDB
• Replicación en MongoDB
• Todas las operaciones de escritura aplicadas a la copia principal y propagadas a las
secundarias.
• El usuario puede elegir la preferencia de lectura.
• Las solicitudes de lectura se pueden procesar en cualquier réplica
• Fragmentación en MongoDB
• La partición horizontal divide los documentos en particiones inconexas
(fragmentos)
• Permite agregar más nodos según sea necesario.
• Fragmentos almacenados en diferentes nodos para lograr el equilibrio de carga.
Características de los sistemas distribuidos MongoDB
• Fragmentación en MongoDB
• El campo de partición (clave de partición) debe existir en todos los documentos de
la colección.
• Debe tener un índice.
• Partición de rango
• Crea fragmentos especificando un rango de valores clave
• Funciona mejor con consultas de rango
• Partición hash
• Particionamiento basado en los valores hash de cada clave de fragmento
Actividad
Desarrollar el laboratorio planteado.