Breve introducción a las bases de datos NoSQL, es decir, no relacionadas, que tuvo lugar en @cycle_it durante uno de los laboratorios de innovación.
Se trataron las bases de datos NoSQL, hablando de las principales categorías: Columna, Documento, Clave-Valor y Grafo. Se mencionan algunos ejemplos de vendedores en cada categoría como Cassandra, Hadoop/HBase, Redis, MongoDB, Riak, Neo4J, etc.
3. Introducción a NoSQL
• ¿Qué es NoSQL?
• Taxonomía
• Características
• Uso básico
• Vendedores
• Penetración en mercado
• Pros & Contras
4. ¿Qué es NoSQL?
Proporciona un mecanismo para el
almacenamiento y obtención de info que se
modela en un formato distinto a las relaciones
tabulares propias de las bases de datos
relacionales1
1 Wikipedia: NoSQL
“
”
“NoSQL realmente es NoREL, es decir, Base de Datos No-
Relacional”
5. ¿Qué es NoSQL?
Las bases de datos NoSQL están encontrando su lugar en el big data
y en las aplicaciones web que necesitan tiempo real
Real Time
Web
Applications
6. Beneficios NoSQL
• Preparadas para grandes volúmenes de información estructurada, semi-
estructurada o sin estructurar.
• Facilitan iteración rápida: metodologías ágiles y despliegue continuo.
• Coherente con la programación orientada a objetos.
• Arquitectura eficiente y escalable en lugar de una arquitectura cara y
monolítica. Y opensource!
7. Taxonomía
Es difícil clasificar este tipo de bases de datos dada
su heterogeneidad. No obstante está ampliamente
aceptada una clasificación basada en el modelo de
datos; lo que comúnmente se conoce como
Taxonomía.
9. Columna
Es un objeto del nivel más bajo en un
keyspace o más fácil, es una tupla
compuesta por tres elementos:
Nombre único: Referencia la columna
Valor: Contenido de la columna
Timestamp: Determina validez
Un keyspace es un objeto que almacena todas las familias de
columnas de un diseño; es como un esquema.
11. Columna: Pros y contras
• Más eficiente consultar la información
• Es costoso reconstruir “filas completas” al estar distribuida la info
en numerosos nodos.
• La ordenación y consultas tienen sus particularidades: las
columnas se ordenan tras ser insertadas y se ordena por atributo.
• Hay que “pensar” cómo insertar la información.
• La forma de acceder queda del lado del programador.
13. Cassandra
• Última versión estable 2.0.6
• Licencia Apache
• Para cuando “necesitas escalabilidad y alta disponibilidad
sin castigar el rendimiento”.
• Utilizada en Netflix, eBay, Twitter, Reddit y otros.
• “Probada, tolerante a
fallos, rendimiento, descentralizada, durabilidad, control, fl
exible”
14. Apache Hbase (Hadoop)
• Última versión estable 0.94
• Licencia Apache
• Para cuando “necesitas acceso de escritura aleatorio en
tiempo real para acceder a tu Big Data: tablas enormes
con miles de millones de files con millones de columnas”
• “Escalabilidad lineal y modular, consistente en lecturas y
escrituras, failover automático, Java API”.
16. Documento (info semi-estructurada)
El documento encapsula la información en
algún formato o codificación estándar:
XML, YAML, JSON o BSON e incluso formatos
binarios como PDF, Microsoft Office
documents, etc.
“
”
Los documentos son similares a las tablas de las bases de datos
relacionales, pero mucho menos rígidos: no existe ningún esquema.
17. Documento: ejemplos
Al igual que con la categoría Columna ambos registros contienen
valores similares, pero no tienen por qué compartir los mismos campos:
no existen campos vacíos.
{
FirstName: "Jonathan",
Address: "15 Wanamassa Point Road",
Children: [
{Name: "Michael", Age: 10},
{Name: "Jennifer", Age: 8},
{Name: "Samantha", Age: 5},
{Name: "Elena", Age: 2}
]
}
{
FirstName: "Bob",
Address: "5 Oak St.",
Hobby: "sailing"
}
18. Documento: conceptos
• Keys: los documentos se acceden mediante una clave única
(cadena, URI o ruta).
• Obtención: la base de datos ofrece una API o lenguaje de consulta
que permite obtener el contenido de los documentos.
• Organización: en función de la implementación/vendedor existen
diferentes formas de organización:
colecciones, etiquetas, metadata, directorios, etc.
19. Documento: Pros y contras
• Todas las de NoSQL
• No hay joins: código feo, múltiples queries, pérdida flexibilidad,
posible duplicidad de info.
• Uso de memoria al tener que almacenar los nombres de las
claves con cada documento.
• Posibles problemas de concurrencia: las operaciones de escritura
tienen preferencia sobre las lecturas.
21. MongoDB
• Última versión estable 2.4.9
• Licencia GNU AGPL v3.0 y Comercial MongoDB, Inc.
• Almacenamiento BSON.
• Usada por muchos como eBay, SAP, sourceforge, etc.
• Soporte completo a índices para cualquier atributo.
• Replicación y alta disponibilidad.
• Map/Reduce: agregación flexible y procesamiento de información.
• GridFS para almacenar ficheros de cualquier tamaño.
22. Apache CouchDB
• Última versión estable 1.5.0
• Licencia Apache
• Base de datos que “utiliza JSON para los documentos, JavaScript para
consultas MapReduce y HTTP como API de acceso”
• Perfecta para aplicaciones web modernas y aplicaciones móviles.
23. MarkLogic
• Última versión estable 7
• Privada: “Enterprise NoSQL”
• Utilizada por grandes como Warner Bros., Dow
Jones, Citigroup, Boeing, etc.
25. Key-value
Este tipo de motores de bases de datos almacenan
información en «diccionarios». Podemos imaginar una
BD clave–valor como una colección de vectores
asociativos (al estilo de los tipos Object en ECMAScript,
por ejemplo)
“
”
La asociación entre la clave y el valor se conoce a menudo como
binding; palabra que también suele usarse para nombrar al proceso de
creación de una nueva asociación.
26. Key-value: operaciones
• Add: añade un nuevo valor.
• Reassign: reemplaza el valor de algún par que ya existe en la colección.
• Remove: elimina una tupla de la colección eliminando el binding a partir de la
clave.
• Lookup: devuelve el valor a partir de una clave determinada.
28. Key-value: Pros y contras
• Las habituales de NoSQL
• No existe forma de indicar que una columna es obligatoria: NOT
NULL.
• No hay forma de establecer tipos de datos para validar entradas.
• No hay forma para indicar si los nombres de las claves son correctos.
• No hay forma de indicar FK.
30. Amazon DynamoDB
• Solución Cloud
• Licencia comercial
• Utilizada en
washingtonpost.com, AdRoll, scopely, WeatherBug.
• Existe versión open-source del proyecto llamado Project
Voldemort utilizada en LinkedIn para solucionar algunos
problemas de almacenamiento con alta escalabilidad.
31. Redis
• Última versión estable 2.8.7
• Licencia BSD
• Almacena información de forma estructurada ya que las
claves pueden contener: strings, hashes, lists, sets y
sorted sets.
• Usada por stackoverflow, flickr, digg, Blizzard
Entertainment, etc.
32. Riak
• Última versión estable 1.4.8
• Licencia Apache
• Sus fuertes son: disponibilidad, tolerancia a
fallos, simplicidad operacional y escalabilidad.
34. Grafo
La info se representa como nodos de un grafo y sus
relaciones con las aristas del mismo, de manera que
se pueda usar teoría de grafos para recorrer la base
de datos ya que esta puede describir atributos de los
nodos (entidades) y las aristas (relaciones).
“
”Estas bases de datos están absolutamente normalizadas ya que necesitan que
cada tabla contenga una única columna y cada relación tan solo dos; así
cualquier cambio en la estructura tiene sólo efecto local.
35. Grafo: conceptos
• Nodo: representa entidades como personas, negocios, etc.
• Propiedad: información relevante relacionada con los nodos.
• Aristas: son las líneas que conectan nodos entre sí o nodos y
propiedades. Representan relaciones: la info importante se
almacena en aristas.
37. Grafo: Pros y contras
• Son habitualmente más rápidas para conjuntos de datos asociativos.
• Mapean fácilmente en aplicaciones orientadas a objetos.
• Escalan de forma más natural hacia conjuntos de datos ya que no
suelen requerir operaciones costosas basadas en joins.
• Las habituales de NoSQL.
• Las bases de datos relacionales son habitualmente más rápidas
cuando realizan la misma operación en grandes volúmenes de info.
39. Neo4j
• Última versión estable 2.0.1
• Licencia GPLv3 / AGPLv3 y Comercial
• “Alta escalabilidad, robusta (completamente ACID)”
• “Usada en aplicaciones críticas por miles de
startups, empresas y gobiernos alrededor del
mundo”
40. OrientDB
• Última versión estable 1.6.3
• Licencia Apache
• Soporte transacciones ACID: recupera info
pendiente ante problemas.
• Soporta lenguaje SQL con extensiones para
gestionar relaciones sin SQL join, gestionar árboles
y grafos.
• Preparada para la web: soporte nativo HTTP,
protocolo RESTful y JSON.
El timestamp permite diferenciar contenido válido de valores obsoletos; según el teorema CAP (para un sistema distribuido es imposible proporcionar al mismo tiempo garantías para consistencia, disponibilidad y tolerancia a la partición.Está relacionado con ACID: Atomicidad, Consistencia, Aislamiento y Durabilidad, que es el conjunto de propiedades que garantizan que las transacciones en una base de datos se procesan con fiabilidad.
¿Por qué más eficiente?Por ej, en lugar de crear una tabla con toda la información que representa a una persona (UID, nombre, apellidos, fecha nacimiento, género, etc) esta info se distribuye creando familias de columnas por ej: “UID, nombre, apellidos” “fecha nacimiento, género”, etc. Por lo que si quieres buscar sólo por mujeres nacidas entre 1980 y 1990 basta con acceder sólo a la segunda familia de columnas, si el resto de la info es irrelevante para ti.
Netflix: Usada en varios productos y su corehttp://techblog.netflix.com/search/label/CassandraeBay: http://www.datastax.com/resources/casestudies/ebayTwitter: https://blog.twitter.com/2010/cassandra-twitter-todayReddit: http://www.redditblog.com/search/label/Cassandra