SlideShare ist ein Scribd-Unternehmen logo
1 von 44
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/

Weitere ähnliche Inhalte

Was ist angesagt?

Introduction to NoSQL Databases
Introduction to NoSQL DatabasesIntroduction to NoSQL Databases
Introduction to NoSQL Databases
Derek Stainer
 
(BDT317) Building A Data Lake On AWS
(BDT317) Building A Data Lake On AWS(BDT317) Building A Data Lake On AWS
(BDT317) Building A Data Lake On AWS
Amazon Web Services
 

Was ist angesagt? (20)

Introduction to NoSQL Databases
Introduction to NoSQL DatabasesIntroduction to NoSQL Databases
Introduction to NoSQL Databases
 
Apache Cassandra
Apache CassandraApache Cassandra
Apache Cassandra
 
Apache cassandra
Apache cassandraApache cassandra
Apache cassandra
 
NoSQL databases
NoSQL databasesNoSQL databases
NoSQL databases
 
Nosql seminar
Nosql seminarNosql seminar
Nosql seminar
 
Bases de Datos NoSQL
Bases de Datos NoSQLBases de Datos NoSQL
Bases de Datos NoSQL
 
Nosql databases
Nosql databasesNosql databases
Nosql databases
 
Relational databases vs Non-relational databases
Relational databases vs Non-relational databasesRelational databases vs Non-relational databases
Relational databases vs Non-relational databases
 
How to Design a Modern Data Warehouse in BigQuery
How to Design a Modern Data Warehouse in BigQueryHow to Design a Modern Data Warehouse in BigQuery
How to Design a Modern Data Warehouse in BigQuery
 
Cassandra at eBay - Cassandra Summit 2012
Cassandra at eBay - Cassandra Summit 2012Cassandra at eBay - Cassandra Summit 2012
Cassandra at eBay - Cassandra Summit 2012
 
GCP Data Engineer cheatsheet
GCP Data Engineer cheatsheetGCP Data Engineer cheatsheet
GCP Data Engineer cheatsheet
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
(BDT317) Building A Data Lake On AWS
(BDT317) Building A Data Lake On AWS(BDT317) Building A Data Lake On AWS
(BDT317) Building A Data Lake On AWS
 
Mongodb vs mysql
Mongodb vs mysqlMongodb vs mysql
Mongodb vs mysql
 
Data pipelines from zero to solid
Data pipelines from zero to solidData pipelines from zero to solid
Data pipelines from zero to solid
 
sistema gestor BD PostgreSql
sistema gestor BD PostgreSqlsistema gestor BD PostgreSql
sistema gestor BD PostgreSql
 
MongoDB World 2019: The Journey of Migration from Oracle to MongoDB at Rakuten
MongoDB World 2019: The Journey of Migration from Oracle to MongoDB at RakutenMongoDB World 2019: The Journey of Migration from Oracle to MongoDB at Rakuten
MongoDB World 2019: The Journey of Migration from Oracle to MongoDB at Rakuten
 
Bases de Datos No Relacionales (NoSQL)
Bases de Datos No Relacionales (NoSQL) Bases de Datos No Relacionales (NoSQL)
Bases de Datos No Relacionales (NoSQL)
 
NoSQL Architecture Overview
NoSQL Architecture OverviewNoSQL Architecture Overview
NoSQL Architecture Overview
 
Basics of MongoDB
Basics of MongoDB Basics of MongoDB
Basics of MongoDB
 

Andere mochten auch

Bases De Datos En Excel
Bases De Datos En ExcelBases De Datos En Excel
Bases De Datos En Excel
angela1140
 

Andere mochten auch (10)

Bd no sql conceptos basicos
Bd no sql conceptos basicosBd no sql conceptos basicos
Bd no sql conceptos basicos
 
NoSQL: Introducción a las Bases de Datos no estructuradas
NoSQL: Introducción a las Bases de Datos no estructuradasNoSQL: Introducción a las Bases de Datos no estructuradas
NoSQL: Introducción a las Bases de Datos no estructuradas
 
Bd nosql tecnicas III
Bd nosql tecnicas IIIBd nosql tecnicas III
Bd nosql tecnicas III
 
Introducción al mundo NoSQL
Introducción al mundo NoSQLIntroducción al mundo NoSQL
Introducción al mundo NoSQL
 
Un acercamiento a las bases de datos NoSQL
Un acercamiento a las bases de datos NoSQLUn acercamiento a las bases de datos NoSQL
Un acercamiento a las bases de datos NoSQL
 
Big Data y Minería de datos
Big Data y Minería de datos Big Data y Minería de datos
Big Data y Minería de datos
 
Bases De Datos En Excel
Bases De Datos En ExcelBases De Datos En Excel
Bases De Datos En Excel
 
Diferencias entre base de datos relacional y no relacional
Diferencias entre base de datos relacional y no relacionalDiferencias entre base de datos relacional y no relacional
Diferencias entre base de datos relacional y no relacional
 
Bases De Datos "Conceptos Basicos"
Bases De Datos "Conceptos Basicos"Bases De Datos "Conceptos Basicos"
Bases De Datos "Conceptos Basicos"
 
Data Modeling for Big Data
Data Modeling for Big DataData Modeling for Big Data
Data Modeling for Big Data
 

Ähnlich wie Introducción a NoSQL

Ähnlich wie Introducción a NoSQL (20)

Act4 bd teo
Act4 bd teoAct4 bd teo
Act4 bd teo
 
04 presentacion acosta_claudio
04 presentacion acosta_claudio04 presentacion acosta_claudio
04 presentacion acosta_claudio
 
Base de datos
Base de datosBase de datos
Base de datos
 
Base de Datos
Base de DatosBase de Datos
Base de Datos
 
Introducción mongodb y desarrollo
Introducción mongodb y desarrolloIntroducción mongodb y desarrollo
Introducción mongodb y desarrollo
 
Desayuno de arquitectos: Big data en azure
Desayuno de arquitectos: Big data en azureDesayuno de arquitectos: Big data en azure
Desayuno de arquitectos: Big data en azure
 
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4jBases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
 
Base de datos
Base de datosBase de datos
Base de datos
 
Principales bases de datos
Principales bases de datosPrincipales bases de datos
Principales bases de datos
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Presentacion
PresentacionPresentacion
Presentacion
 
NoSQL: la siguiente generación de Base de Datos
NoSQL: la siguiente generación de Base de DatosNoSQL: la siguiente generación de Base de Datos
NoSQL: la siguiente generación de Base de Datos
 
Base de datos
Base de datosBase de datos
Base de datos
 
BASES DE DATOS
BASES DE DATOSBASES DE DATOS
BASES DE DATOS
 
Desarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQL
Desarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQLDesarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQL
Desarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQL
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Big data y las apis (big data spain)
Big data y las apis (big data spain)Big data y las apis (big data spain)
Big data y las apis (big data spain)
 
Principales bases de datos
Principales bases de datosPrincipales bases de datos
Principales bases de datos
 
El mundo Big Data y las APIs
El mundo Big Data y las APIsEl mundo Big Data y las APIs
El mundo Big Data y las APIs
 
Video_MartinFowler.pptx
Video_MartinFowler.pptxVideo_MartinFowler.pptx
Video_MartinFowler.pptx
 

Kürzlich hochgeladen

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Kürzlich hochgeladen (10)

investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 

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:”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
  • 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/

Hinweis der Redaktion

  1. 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.
  2. ¿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.
  3. 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