Introducción a NoSQL

1,542 views
1,384 views

Published on

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.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,542
On SlideShare
0
From Embeds
0
Number of Embeds
17
Actions
Shares
0
Downloads
101
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • 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
  • Introducción a NoSQL

    1. 1. Advanced technology simplifies your world Introducción a NoSQL Laboratorio Innovación 19/03/2014
    2. 2. @lasneyx es.linkedin.com/in/miguelmartinforero Miguel Martín-Forero – COO en @Cycle_IT Algo sobre mí
    3. 3. Introducción a NoSQL • ¿Qué es NoSQL? • Taxonomía • Características • Uso básico • Vendedores • Penetración en mercado • Pros & Contras
    4. 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. 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. 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. 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. 8. Taxonomía: cuatro categorías principales DocumentoColumna Clave-valor Grafo
    9. 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. 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. 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.
    12. 12. Columna: Vendedores
    13. 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. 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”.
    15. 15. Columna: Trends
    16. 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. 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. 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. 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.
    20. 20. Vendedores
    21. 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. 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. 23. MarkLogic • Última versión estable 7 • Privada: “Enterprise NoSQL” • Utilizada por grandes como Warner Bros., Dow Jones, Citigroup, Boeing, etc.
    24. 24. Documento: Trends
    25. 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. 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. 27. Key-value: ejemplo { "Great Expectations": "John", "Pride and Prejudice": "Alice", "Wuthering Heights": "Alice" }
    28. 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.
    29. 29. Vendedores
    30. 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. 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. 32. Riak • Última versión estable 1.4.8 • Licencia Apache • Sus fuertes son: disponibilidad, tolerancia a fallos, simplicidad operacional y escalabilidad.
    33. 33. Key-value: Trends
    34. 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. 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.
    36. 36. Grafo: Ejemplo
    37. 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.
    38. 38. Grafo: vendedores
    39. 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. 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.
    41. 41. Grafo: Trends
    42. 42. Trends global
    43. 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. 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/

    ×