SlideShare una empresa de Scribd logo
Advanced technology simplifies your world
Introducción a NoSQL
Laboratorio Innovación
19/03/2014
@lasneyx
es.linkedin.com/in/miguelmartinforero
Miguel Martín-Forero – COO en @Cycle_IT
Algo sobre mí
Introducción a NoSQL
• ¿Qué es NoSQL?
• Taxonomía
• Características
• Uso básico
• Vendedores
• Penetración en mercado
• Pros & Contras
¿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”
¿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
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!
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.
Taxonomía: cuatro categorías principales
DocumentoColumna Clave-valor Grafo
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.
Columna: ejemplo
UserProfile = {
Cassandra = {emailAddress:”casandra@apache.org” , age:”20”}
TerryCho = {emailAddress:”terry.cho@apache.org” , gender:”male”}
Cath = {emailAddress:”cath@apache.org” , age:”20” , gender:”female” , address:”Seoul”}
}
Familia Columna
Claves de fila
Columna
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.
Columna: Vendedores
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”
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”.
Columna: Trends
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.
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"
}
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.
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.
Vendedores
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.
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.
MarkLogic
• Última versión estable 7
• Privada: “Enterprise NoSQL”
• Utilizada por grandes como Warner Bros., Dow
Jones, Citigroup, Boeing, etc.
Documento: Trends
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.
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.
Key-value: ejemplo
{
"Great Expectations": "John",
"Pride and Prejudice": "Alice",
"Wuthering Heights": "Alice"
}
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.
Vendedores
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.
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.
Riak
• Última versión estable 1.4.8
• Licencia Apache
• Sus fuertes son: disponibilidad, tolerancia a
fallos, simplicidad operacional y escalabilidad.
Key-value: Trends
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.
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.
Grafo: Ejemplo
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.
Grafo: vendedores
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”
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.
Grafo: Trends
Trends global
Enlaces externos
General
[1] http://nosql-database.org/
[2] NoSQL Explained: http://www.mongodb.com/learn/nosql
[3] Comparación varias: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
[4] NoSQL: http://en.wikipedia.org/wiki/Nosql
Columna
[1] Column (data store): http://en.wikipedia.org/wiki/Column_(data_store)
[2] ColumnFamily: http://en.wikipedia.org/wiki/ColumnFamily
[2] Keyspace (data store): http://en.wikipedia.org/wiki/Keyspace_(data_model)
[3] CAP theorem: http://en.wikipedia.org/wiki/CAP_theorem
[4] ACID: http://en.wikipedia.org/wiki/ACID
[5] Cassandra: http://cassandra.apache.org/
[6] Cassandra data model: http://rubyscale.com/blog/2010/09/13/understanding-the-cassandra-data-
model-from-a-sql-perspective/
[7]: Hbase: https://hbase.apache.org/
[8]: Accumulo: https://accumulo.apache.org/
Enlaces externos
Documento
[1] Document (data store): http://en.wikipedia.org/wiki/Document-oriented_database
[2] MongoDB: http://www.mongodb.org/
[3] Pros & cons MongoDB: http://halls-of-valhalla.org/beta/articles/the-pros-and-cons-of-mongodb,45/
[4] Who uses mongoDB: http://www.mongodb.org/about/production-deployments/
http://www.mongodb.org/about/applications/
[5] MarkLogic: http://www.marklogic.com/
Key value
[1] Key-value: http://en.wikipedia.org/wiki/Key-value_store
[2] Amazon DynamoDB: http://aws.amazon.com/es/dynamodb/
[3] Project Voldemort: http://www.project-voldemort.com/voldemort/
[4] Redis: http://redis.io/
[5] Riak: http://basho.com/riak/
Grafo
[1] Graph: http://en.wikipedia.org/wiki/Graph_database
[2] Neo4j: http://www.neo4j.org/
[3] Clientes usando Neo4j: http://www.neotechnology.com/customers/
[4] OrientDB: http://www.orientechnologies.com/orientdb/

Más contenido relacionado

PPTX
Apache cassandra
libra_hch
 
PDF
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
Diego López-de-Ipiña González-de-Artaza
 
PPTX
NoSQL - MongoDB
Juan Azcurra
 
PPTX
Introduction to NoSQL Databases
Derek Stainer
 
PDF
Graph based data models
Moumie Soulemane
 
PPSX
A Seminar on NoSQL Databases.
Navdeep Charan
 
PDF
Bases de Datos NoSQL
Isabel Gómez
 
PPTX
Introduccion a SQL Server 2022
Eduardo Castro
 
Apache cassandra
libra_hch
 
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
Diego López-de-Ipiña González-de-Artaza
 
NoSQL - MongoDB
Juan Azcurra
 
Introduction to NoSQL Databases
Derek Stainer
 
Graph based data models
Moumie Soulemane
 
A Seminar on NoSQL Databases.
Navdeep Charan
 
Bases de Datos NoSQL
Isabel Gómez
 
Introduccion a SQL Server 2022
Eduardo Castro
 

La actualidad más candente (20)

PDF
DB1 Unidad 6: Indices
Franklin Parrales Bravo
 
PPTX
Non relational databases-no sql
Ram kumar
 
PPTX
Mongo Nosql CRUD Operations
anujaggarwal49
 
PPTX
NoSQL bases de datos no relacionales
Andrés Londoño
 
PDF
Exploring BigData with Google BigQuery
Dharmesh Vaya
 
PDF
Introduction to Spark with Python
Gokhan Atil
 
PDF
Common MongoDB Use Cases
DATAVERSITY
 
PDF
NoSQL databases
Marin Dimitrov
 
PDF
BigQuery implementation
Simon Su
 
PPTX
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...
José Antonio Sandoval Acosta
 
PDF
E2E Data Pipeline - Apache Spark/Airflow/Livy
Rikin Tanna
 
PDF
Realtime Indexing for Fast Queries on Massive Semi-Structured Data
ScyllaDB
 
PDF
MongoDB- Crud Operation
Edureka!
 
PDF
Google BigQuery
Matthias Feys
 
DOCX
Cuadro sinoptico
camilo_sk1202
 
PPTX
SQLite
maymania
 
PPTX
Introduction to MongoDB
MongoDB
 
PPTX
Key-Value NoSQL Database
Heman Hosainpana
 
PPTX
Sharding Methods for MongoDB
MongoDB
 
DB1 Unidad 6: Indices
Franklin Parrales Bravo
 
Non relational databases-no sql
Ram kumar
 
Mongo Nosql CRUD Operations
anujaggarwal49
 
NoSQL bases de datos no relacionales
Andrés Londoño
 
Exploring BigData with Google BigQuery
Dharmesh Vaya
 
Introduction to Spark with Python
Gokhan Atil
 
Common MongoDB Use Cases
DATAVERSITY
 
NoSQL databases
Marin Dimitrov
 
BigQuery implementation
Simon Su
 
Programación de Base de Datos - Unidad II: Aplicaciones con Arquitectura Clie...
José Antonio Sandoval Acosta
 
E2E Data Pipeline - Apache Spark/Airflow/Livy
Rikin Tanna
 
Realtime Indexing for Fast Queries on Massive Semi-Structured Data
ScyllaDB
 
MongoDB- Crud Operation
Edureka!
 
Google BigQuery
Matthias Feys
 
Cuadro sinoptico
camilo_sk1202
 
SQLite
maymania
 
Introduction to MongoDB
MongoDB
 
Key-Value NoSQL Database
Heman Hosainpana
 
Sharding Methods for MongoDB
MongoDB
 
Publicidad

Destacado (11)

PPTX
Bd no sql conceptos basicos
Escuela de Computación UCV
 
PPSX
Presentacion BD NoSQL
Andrea Antunes
 
PDF
NoSQL: Introducción a las Bases de Datos no estructuradas
Diego López-de-Ipiña González-de-Artaza
 
PPTX
Bd nosql tecnicas III
Escuela de Computación UCV
 
PDF
Introducción al mundo NoSQL
César Rodas
 
PDF
Un acercamiento a las bases de datos NoSQL
Javier Guillot Jiménez
 
PPTX
Big Data y Minería de datos
Luis Joyanes
 
PPT
Bases De Datos En Excel
angela1140
 
PDF
Diferencias entre base de datos relacional y no relacional
UPCI
 
PPTX
Bases De Datos "Conceptos Basicos"
Cesar David Fernandez Grueso
 
PDF
Data Modeling for Big Data
DATAVERSITY
 
Bd no sql conceptos basicos
Escuela de Computación UCV
 
Presentacion BD NoSQL
Andrea Antunes
 
NoSQL: Introducción a las Bases de Datos no estructuradas
Diego López-de-Ipiña González-de-Artaza
 
Bd nosql tecnicas III
Escuela de Computación UCV
 
Introducción al mundo NoSQL
César Rodas
 
Un acercamiento a las bases de datos NoSQL
Javier Guillot Jiménez
 
Big Data y Minería de datos
Luis Joyanes
 
Bases De Datos En Excel
angela1140
 
Diferencias entre base de datos relacional y no relacional
UPCI
 
Bases De Datos "Conceptos Basicos"
Cesar David Fernandez Grueso
 
Data Modeling for Big Data
DATAVERSITY
 
Publicidad

Similar a Introducción a NoSQL (20)

PPTX
2016-10-mongodb-v1-1610311318504545.pptx
JuancarlosHuertasNio1
 
PPTX
Presentacion de power point
BIBIANA MÉNDEZ HERNÁNDEZ
 
PPTX
Presentacion de power point
Brenda Gisela Gallardo Aguilar
 
PPTX
BASES DE DATOS
BIBIANA MÉNDEZ HERNÁNDEZ
 
PPTX
Bases de datos
JUAN JOSE MADRIGAL RUIZ
 
PDF
INTRODUCCION BASES DE DATOS - NOSQL - MONGODB
Richard Eliseo Mendoza Gafaro
 
PPTX
NoSQL: la siguiente generación de Base de Datos
Diego López-de-Ipiña González-de-Artaza
 
PDF
NoSql introducción -Innova4j
Innova4j
 
PPTX
Introducción mongodb y desarrollo
Juan Ladetto
 
DOCX
Base de datos no sql
hnacostan
 
PDF
Act1.7 nosql terminado
Rafael Navarro Prieto
 
PDF
Act1.7 nosql terminado corregido
Rafael Navarro Prieto
 
PDF
Actividad 1.7: NoSQL
Elisa Navarro Zuara
 
PDF
SGBD NoSQL
Ulises WD
 
PPTX
Apache Cassandra
Luis Ojeda
 
PPTX
Principales bases de datos
Claudia San Agustín
 
PPTX
Act. 4 screencast y base de datos norma
Norma del Carmen Sánchez Castro
 
PDF
Desarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQL
Roanny Lamas
 
PPSX
04 presentacion acosta_claudio
claudio acosta lara
 
2016-10-mongodb-v1-1610311318504545.pptx
JuancarlosHuertasNio1
 
Presentacion de power point
BIBIANA MÉNDEZ HERNÁNDEZ
 
Presentacion de power point
Brenda Gisela Gallardo Aguilar
 
Bases de datos
JUAN JOSE MADRIGAL RUIZ
 
INTRODUCCION BASES DE DATOS - NOSQL - MONGODB
Richard Eliseo Mendoza Gafaro
 
NoSQL: la siguiente generación de Base de Datos
Diego López-de-Ipiña González-de-Artaza
 
NoSql introducción -Innova4j
Innova4j
 
Introducción mongodb y desarrollo
Juan Ladetto
 
Base de datos no sql
hnacostan
 
Act1.7 nosql terminado
Rafael Navarro Prieto
 
Act1.7 nosql terminado corregido
Rafael Navarro Prieto
 
Actividad 1.7: NoSQL
Elisa Navarro Zuara
 
SGBD NoSQL
Ulises WD
 
Apache Cassandra
Luis Ojeda
 
Principales bases de datos
Claudia San Agustín
 
Act. 4 screencast y base de datos norma
Norma del Carmen Sánchez Castro
 
Desarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQL
Roanny Lamas
 
04 presentacion acosta_claudio
claudio acosta lara
 

Último (20)

PDF
Solución actividad de Diagrama de Pareto
MaraJos722801
 
PDF
Distribución de frecuencias y diagrama de pareto en Excel
Eleazar88
 
PPTX
Actividad integradora 6 Crear un archivo multimedia
susana0271
 
PDF
Tecnología 2.0 (1).pdf, diagrama de pareto
paulavallejo21
 
PDF
Conceptos básicos de programación - Paula Obando
edeppaulaobando
 
DOCX
#USOLASTICPARA Proyecto integrador M1S4PI JuarezGonzalez _Maria_M1S4PI.doc...
MariaSusanaJuarezGon
 
PDF
VelezOrtiz_Yadira_M1S3AI6 Presentación digital
Yadira Elizabeth Vélez Ortiz
 
PDF
actividad tecnologia (1).pdflksjksIUQWDIUWEGDHI
anavallejo2323
 
PDF
Conceptos básicos de programación trabajo grupal
darcyrobayo2007
 
PDF
actividad tecnologia periodo 1 2025 (1).pdf
jjfch3110
 
PDF
El candado imposible de abrir | Seguridad máxima explicada - Revista Técnica ...
Cerrajero 365 Valencia
 
PDF
Chile Claro Swap Project Guidebook Version 1.4.1b.pdf
DarkoAlmanzaTrujillo
 
PDF
Tecnología. Programación pseint 10-7 Sol Riaño Támara
edepsolriano
 
PDF
Distribución de frecuencias y Diagrama de Pareto en Exce (2).pdf
samuelcuaran
 
PDF
excel.pdf valentinamueses111 trabajo tecnologia
4zz5vkthyk
 
DOCX
Informe de Tecnologia Diagrama de Pareto Juan Martinez, Alexandra Delgado, L...
edepisabellanaranjo
 
PDF
2do grado medios de transportes.pdf para el primario
AndreaAlegre18
 
PDF
Distribución de Frecuencias Excel Eleazar Muñoz
Eleazar88
 
PDF
Diagrama de Pareto en PDF pareto el mejor
zaidmarinb11
 
PDF
Problema de pareto resuelto iandanielpdf
IanDanielGiraldoRami
 
Solución actividad de Diagrama de Pareto
MaraJos722801
 
Distribución de frecuencias y diagrama de pareto en Excel
Eleazar88
 
Actividad integradora 6 Crear un archivo multimedia
susana0271
 
Tecnología 2.0 (1).pdf, diagrama de pareto
paulavallejo21
 
Conceptos básicos de programación - Paula Obando
edeppaulaobando
 
#USOLASTICPARA Proyecto integrador M1S4PI JuarezGonzalez _Maria_M1S4PI.doc...
MariaSusanaJuarezGon
 
VelezOrtiz_Yadira_M1S3AI6 Presentación digital
Yadira Elizabeth Vélez Ortiz
 
actividad tecnologia (1).pdflksjksIUQWDIUWEGDHI
anavallejo2323
 
Conceptos básicos de programación trabajo grupal
darcyrobayo2007
 
actividad tecnologia periodo 1 2025 (1).pdf
jjfch3110
 
El candado imposible de abrir | Seguridad máxima explicada - Revista Técnica ...
Cerrajero 365 Valencia
 
Chile Claro Swap Project Guidebook Version 1.4.1b.pdf
DarkoAlmanzaTrujillo
 
Tecnología. Programación pseint 10-7 Sol Riaño Támara
edepsolriano
 
Distribución de frecuencias y Diagrama de Pareto en Exce (2).pdf
samuelcuaran
 
excel.pdf valentinamueses111 trabajo tecnologia
4zz5vkthyk
 
Informe de Tecnologia Diagrama de Pareto Juan Martinez, Alexandra Delgado, L...
edepisabellanaranjo
 
2do grado medios de transportes.pdf para el primario
AndreaAlegre18
 
Distribución de Frecuencias Excel Eleazar Muñoz
Eleazar88
 
Diagrama de Pareto en PDF pareto el mejor
zaidmarinb11
 
Problema de pareto resuelto iandanielpdf
IanDanielGiraldoRami
 

Introducción a NoSQL

  • 1. Advanced technology simplifies your world Introducción a NoSQL Laboratorio Innovación 19/03/2014
  • 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.
  • 8. Taxonomía: cuatro categorías principales DocumentoColumna Clave-valor Grafo
  • 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.
  • 10. Columna: ejemplo UserProfile = { Cassandra = {emailAddress:”[email protected]” , age:”20”} TerryCho = {emailAddress:”[email protected]” , gender:”male”} Cath = {emailAddress:”[email protected]” , age:”20” , gender:”female” , address:”Seoul”} } Familia Columna Claves de fila Columna
  • 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.
  • 27. Key-value: ejemplo { "Great Expectations": "John", "Pride and Prejudice": "Alice", "Wuthering Heights": "Alice" }
  • 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.
  • 43. Enlaces externos General [1] http://nosql-database.org/ [2] NoSQL Explained: http://www.mongodb.com/learn/nosql [3] Comparación varias: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis [4] NoSQL: http://en.wikipedia.org/wiki/Nosql Columna [1] Column (data store): http://en.wikipedia.org/wiki/Column_(data_store) [2] ColumnFamily: http://en.wikipedia.org/wiki/ColumnFamily [2] Keyspace (data store): http://en.wikipedia.org/wiki/Keyspace_(data_model) [3] CAP theorem: http://en.wikipedia.org/wiki/CAP_theorem [4] ACID: http://en.wikipedia.org/wiki/ACID [5] Cassandra: http://cassandra.apache.org/ [6] Cassandra data model: http://rubyscale.com/blog/2010/09/13/understanding-the-cassandra-data- model-from-a-sql-perspective/ [7]: Hbase: https://hbase.apache.org/ [8]: Accumulo: https://accumulo.apache.org/
  • 44. Enlaces externos Documento [1] Document (data store): http://en.wikipedia.org/wiki/Document-oriented_database [2] MongoDB: http://www.mongodb.org/ [3] Pros & cons MongoDB: http://halls-of-valhalla.org/beta/articles/the-pros-and-cons-of-mongodb,45/ [4] Who uses mongoDB: http://www.mongodb.org/about/production-deployments/ http://www.mongodb.org/about/applications/ [5] MarkLogic: http://www.marklogic.com/ Key value [1] Key-value: http://en.wikipedia.org/wiki/Key-value_store [2] Amazon DynamoDB: http://aws.amazon.com/es/dynamodb/ [3] Project Voldemort: http://www.project-voldemort.com/voldemort/ [4] Redis: http://redis.io/ [5] Riak: http://basho.com/riak/ Grafo [1] Graph: http://en.wikipedia.org/wiki/Graph_database [2] Neo4j: http://www.neo4j.org/ [3] Clientes usando Neo4j: http://www.neotechnology.com/customers/ [4] OrientDB: http://www.orientechnologies.com/orientdb/

Notas del editor

  • #10: 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.
  • #12: ¿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.
  • #14: 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