jueves, 21 de febrero de 2019

Tipos de base de datos NoSQL

Se han creado varias variedades de bases de datos NoSQL para soportar necesidades específicas y casos de uso. Éstos se dividen en cuatro categorías principales:

Bases de datos de valores clave: 

Las bases de datos NoSQL de valor-clave hacen hincapié en la simplicidad y son muy útiles para acelerar una aplicación que admita el procesamiento de alta velocidad de lectura y escritura de datos no transaccionales. Los valores almacenados pueden ser cualquier tipo de objeto binario (texto, vídeo, documento JSON, etc.) y se accede a través de una clave. La aplicación tiene control total sobre lo que se almacena en el valor, convirtiéndolo en el modelo NoSQL más flexible. Los datos se comparten y se replican en un clúster para obtener escalabilidad y disponibilidad. Por esta razón, las bases de datos de valores clave a menudo no admiten transacciones. Sin embargo, son muy eficaces en aplicaciones de escala que se ocupan de datos de alta velocidad y no transaccionales.


Base de datos de documentos: 

Las bases de datos de documentos suelen almacenar documentos JSON, XML y BSON. Son similares a las bbdd de valores clave, pero en este caso, un valor es un solo documento que almacena todos los datos relacionados con una clave específica. Los campos populares del documento pueden indexarse para proporcionar una recuperación rápida sin conocer la clave. Cada documento puede tener la misma estructura o una estructura diferente.

Bases de datos de columnas anchas:

Las bases de datos NoSQL de columnas anchas almacenan datos en tablas con filas y columnas similares a las BBDD relacionales, pero los nombres y los formatos de las columnas pueden variar de fila a fila en la tabla. Las columnas de columnas anchas agrupan columnas de datos relacionados juntos. Una consulta puede recuperar datos relacionados en una sola operación porque sólo se recuperan las columnas asociadas con la consulta. En una BBDD, los datos estarían en diferentes filas almacenadas en diferentes lugares del disco, requiriendo múltiples operaciones de disco para su recuperación.

Bases de datos de grafos: 

una base de datos de grafos utiliza estructuras de grafos para almacenar, correlacionar y consultar relaciones. Proporcionan una adyacente libre de índice, de modo que los elementos adyacentes se unen entre sí sin usar un índice.

Las bases de datos multimodales aprovechan alguna combinación de los cuatro tipos descritos anteriormente y, por lo tanto, pueden soportar una gama más amplia de aplicaciones.
(2018, ARTICA ST)
( 2018 tecnologias-informacion.com)

Referencias: 
https://blog.pandorafms.org/es/bases-de-datos-nosql/
https://www.tecnologias-informacion.com/nosql.html

Gestores de Base de Datoa NoSQL


MongoDB


Es uno de los principales productos del mercado, de extensa popularidad y empleado por miles de empresas en todo el mundo. 

Escalabilidad de los datos en MongoDB

Es excepcional la escalabilidad de MongoDB, cuenta con la opción de escalar sus datos a través de múltiples centros de datos distribuidos en ubicaciones geográficamente diversas, de igual manera facilita cada vez más la obtención de datos y la escalabilidad a demanda.
MongoDB tiene un conjunto integrado de funciones que le permite derivar análisis y visualización de datos, realizar procesamiento en memoria, procesamiento de gráficos, búsqueda de texto y replicación global, ofreciendo una amplia variedad de aplicaciones en tiempo real usando solo la aplicación MongoDB.

La arquitectura de MongoDB 

La base de datos: Cada una de las bases de datos tiene un conjunto propio de archivos en el sistema de archivos con diversas bases de datos existentes en un solo servidor.

La colección: un conjunto de documentos de base de datos se puede llamar como una colección. El equivalente RDBMS de la colección es una tabla. Toda la colección existe dentro de una única base de datos. No hay esquemas cuando se trata de colecciones. Dentro de la colección, los diversos documentos pueden tener campos variados, pero la mayoría de los documentos dentro de una colección tienen el mismo objetivo o tienen el mismo objetivo final.

El documento: un conjunto de pares clave-valor puedes ser designado como un documento. Los documentos están asociados con esquemas dinámicos. La ventaja de tener esquemas dinámicos es que el documento en una sola colección no tiene que tener la misma estructura o campos. 

Empresas que usan MongoDB

Visión unificada
La primera de estas categorías incluye a la empresa MetLife . El gigante de los seguros trabaja con MongoDB para conseguir según afirman “una visión de 360 grados” de sus más de cien millones de clientes. La aplicación consiste en la creación de un repositorio central que ofrece una visión a partir de muchas fuentes de datos que provienen de otros repositorios o sistemas.
Internet de las cosas
En el mundo del Internet de las cosas, todos los dispositivos están conectados entre sí, generando y compartiendo información. Así, la empresa Bosch está poniendo a prueba una aplicación que es capaz de capturar datos del vehículo como el sistema de frenado, la dirección asistida, los limpiaparabrisas, etc. Con todos esos datos capturados, se pueden hacer diagnósticos de necesidad de mantenimiento preventivo.
Tecnologías móviles
The Weather Channel utiliza MongoDB para sus aplicaciones móviles que disfrutan cerca de cuarenta millones de personas en todo el mundo. La idea de que MongoDB se convierta en la parte backend del mundo de los smartphones y tablets toma cada vez más fuerza.

Analítica en tiempo real
Cuando hablamos de analítica en tiempo real nos referimos a la necesidad de conseguir resultados de manera inmediata. La ciudad de Chicago ha desarrollado una aplicación llamada WindyGrid que está basada en MongoDB, y recoge datos de policía, transporte e incendios. La aplicación además notifica alertas por obras en carretera, retrasos en recolección de basura, quejas por ruido o tweets públicos, entre otros.

Personalización
La aplicaciones con base en la personalización buscan crear experiencias hechas a la medida de los usuarios y en tiempo real. Para ello es necesario hacer un análisis rápido y certero del perfil de usuario, comportamiento, datos demográficos, gustos, etc. La agencia de viajes norteamericana Expedia ha creado Scratchpad, una aplicación basada en MongoDB que permite al usuario disponer de un bloc de notas digital para almacenar y personalizar sus búsquedas. A partir del seguimiento de las búsquedas y comparaciones, Expedia ofrece a sus clientes viajes y ofertas especiales en tiempo real.

Administración de contenido
Los permiten gestionar archivos junto a sus metadatos. Forbes construyó todo su sistema de gestión de contenidos en MongoDB. Además, utiliza MongoDB para analítica en tiempo real, al igual que el Ayuntamiento de Chicago. Cuando algún artículo se hace viral, Forbes detecta la forma en que se está compartiendo entre los usuarios y de este modo sabe qué tipo de contenido le debe ofrecer a sus lectores.

(2018 - 2019 Hipopoto S.L)


Couchbase Server

De un tiempo a esta parte Couchbase ha estado experimentando una gran acogida en el mercado posicionándose como un producto de referencia para diferentes casos de uso, en concreto el que comentamos en esta ocasión. Claves en este éxito son:
  • Modelo de datos versátil. Se puede utilizar como clave-valor, binarios u orientada a documentos JSON.
  • Incluye por defecto una caché tipo memcached, nos evita tener que incluir esa capa en la arquitectura nosotros mismos.
  • Operaciones Map-Reduce ejecutadas en el propio servidor.
  • Gran rendimiento en escrituras masivas de datos.
  • Escalado horizontal con “un sólo clic”.
  • N1QL, un lenguaje de consultas casi idéntico a SQL.

Cassandra


Es un sistema de gestión de bases de datos desarrollado por Facebook, cuyo objetivo era crear un DBMS sin fallos y que proporcione la máxima disponibilidad.
Cassandra es principalmente una base de datos de almacenes de columnas. Algunos estudios se refieren a Cassandra como un sistema híbrido, inspirado en BigTable de Google, (base de datos de almacén de columnas), y en DynamoDB de Amazon, (base de datos de valor clave).

Esto se consigue proporcionando un sistema de valor clave. Pero las claves de Cassandra apuntan a un conjunto de familias de columnas, dependiendo del sistema de archivos distribuido “BigTable” de Google y de las características de disponibilidad de Dynamo (tabla hash distribuida).

(23/01/2017, Alejandro Asensio)



Apache HBase


Es una base de datos NoSQL distribuida de código abierto y orientada a columnas. Hbase se ejecuta en el marco Apache Hadoop. HBase ofrece una manera eficiente y a prueba de errores para almacenar grandes volúmenes de datos dispersos con almacenamiento y compresión basados en columnas.
Puede implementar HBase en Amazon Elastic Cloud Compute (Amazon EC2) y gestionarlo usted mismo o aprovechar Apache HBase como un servicio gestionado en Amazon Elastic MapReduce (Amazon EMR).Si desea más información, consulte la Guía para desarrolladores de EM y esta publicación en el blog de big data de AWS
(2019, Amazon Web Services)



Neo4j 


Usa grafos para representar datos y las relaciones entre ellos. Un grafo se define como cualquier representación gráfica formada por vértices (se ilustran mediante círculos) y aristas (se muestran mediante líneas de intersección). Dentro de estas representaciones gráficas, tenemos varios tipos de grafos:
- Grafos no dirigidos: los nodos y las relaciones son intercambiables, su relación se puede interpretar en cualquier sentido. Las relaciones de amistad en la red social Facebook, por ejemplo, son de este tipo.
- Grafos dirigidos: los nodos y la relaciones no son bidireccionales por defecto. Las relaciones en Twitter son de este tipo. Un usuario puede seguir a determinados perfiles en esta red social sin que ellos le sigan a él.
- Grafos con peso: en este tipo de gráficas las relaciones entre nodos tienen algún tipo de valoración numérica. Eso permite luego hacer operaciones.
- Grafos con etiquetas: estos grafos llevan incorporadas etiquetas que pueden definir los distintos vértices y también las relaciones entre ellos. En Facebook podríamos tener nodos definidos por términos como ‘amigo’ o ‘compañero de trabajo’ y la relaciones como ‘amigo de’ o ‘socio de’.
- Grafos de propiedad: es un grafo con peso, con etiquetas y donde podemos asignar propiedades tanto a nodos como relaciones (por ejemplo, cuestiones como nombre, edad, país de residencia, nacimiento). Es el más complejo.
( 5/03/2018, Eva Lozano)



Referencias:
https://www.paradigmadigital.com/dev/almacenamientos-nosql-gestores-contenidos/ 

https://www.paradigmadigital.com/dev/neo4j-trabajando-grafos/


https://aws.amazon.com/es/nosql/columnar/

https://openwebinars.net/blog/empresas-que-usan-mongodb/


Base de datos NoSQL

Imagen relacionadaLas bases de datos NoSQL, también llamadas No Solo SQL, son un enfoque hacia la gestión de datos y el diseño de base de datos que es útil para grandes conjuntos de datos distribuidos.
 NoSQL, que abarca una amplia gama de tecnologías y arquitecturas, busca resolver los problemas de escalabilidad y rendimiento de big data que las bases de datos relacionales no fueron diseñadas para abordar. NoSQL es especialmente útil cuando una empresa necesita acceder y analizar grandes cantidades de datos no estructurados o datos que se almacenan de forma remota en varios servidores virtuales en la nube.

(2018 ,tecnologias-informacion.com)





¿Por qué otro tipo de base de datos? ¿Y las relacionales?


Las bases de datos relacionales no tienen nada de malo, pero llegó la web, los servicios en la nube y las aplicaciones con millones de usuarios.
Ante una aplicación con una gran escalabilidad,  las bases de datos pueden llegar a comportarse óptima mente, pero cuanto más crece su estructura y más escalable se quiere hacer un proyecto, más cuesta conseguir que una base de datos relacional sea intuitiva, por no hablar de la dificultad para conservar su simplicidad.

¿En que casos hay que pensar en una base de datos NoSQL?

En aquellos donde se pueda sacar partido a los puntos fuertes de este tipo de bases de datos. Proyectos en los que se prevea una escalabilidad en un futuro próximo, un gran acceso masivo y cuya estructura y esquemas deban tener grandes cambios para su crecimiento. Proyectos con grandísimas cantidades de información y cuya existencia no tenga sentido de no albergar las ultimas aplicaciones existentes en la web y por lo tanto en continuo cambio.

(2016,hiberus TECNOLOGÍA)



1. Integridad de datos

La integridad de datos es la garantía de que los datos almacenados mantendrán su exactitud y consistencias a través del tiempo. Tu código siempre deberá servir mientras tú mismo no modifiques su estructura.

2. Operaciones atómicas
Una operación atómica es cuando haces un cambio que afecta a múltiples entidades de la base de datos al mismo tiempo. Esto suele acompañarse con el concepto de “transacciones”: decirle a la BD que, o cambian todas las tablas que queremos al mismo tiempo, o no cambia nada y la base de datos queda intacta (el famoso “rollback”, todo o nada).

(Sep 16, 2017,Eugenio Mendoza)


Referencias: 
https://www.tecnologias-informacion.com/nosql.html

https://www.hiberus.com/crecemos-contigo/que-son-las-bases-de-datos-nosql/

https://medium.com/@eugeniomendoza/c%C3%B3mo-saber-si-necesitas-una-base-de-datos-nosql-b6cfd5bb7d9b

https://www.paradigmadigital.com/dev/almacenamientos-nosql-gestores-contenidos/

https://blog.pandorafms.org/es/bases-de-datos-nosql/