Noticias, tutoriales y curiosidades sobre tecnología informática.

Autor

Reginaldo Perez Ver el perfil de Reginaldo Perez en LinkedIn

Advertising

jueves, 11 de agosto de 2016

Introducción a NoSQL


NoSQL (a veces llamado "no sólo SQL") es una amplia clase de sistemas de gestión de bases de datos que difieren del modelo clásico del sistema de gestión de bases de datos relacionales (RDBMS)
en aspectos importantes, el más destacado es que no usan SQL como el principal lenguaje de consultas


NoSQL abarca muchos tipos de sistemas de almacenamiento y recuperación de datos. No es un nombre particularmente preciso, ya que muchos de estos sistemas están adoptando los lenguajes de consulta SQL como propios. Es más preciso llamarlos bases de datos no relacionales, ya que es  en el modelo de datos - no necesariamente el lenguaje de consulta - que se diferencian de las bases de datos relacionales.


Cuatro tipos básicos de bases de datos no relacionales


Actualmente, hay en general cuatro tipos de bases de datos no relacionales de uso común:


  • Clave-Valor
  • Documentales
  • Orientadas a Columnas
  • Gráficas
Así como el modelo de datos, hay otro aspecto clave que influirá en la forma de elegir  la arquitectura de su aplicación y qué compromisos tenemos que hacer: ¿Qué tan fácil será que un motor de base de datos en particular  ejecute una sola base de datos a través de más de un servidor?


Bases de datos distribuidas vs una solo instancia


Sólo un puñado de bases de datos NoSQL de uso común son verdaderamente para un único servidor. Sin embargo, de las que están diseñadas para ser escalables, cada una difiere en su enfoque.

El impacto primario de los diferentes enfoques son:

  • La consistencia de los datos frente a su disponibilidad.
  • Si el tamaño de su conjunto de datos puede ser mayor que el tamaño de almacenamiento de su máquina más grande.
  • La introducción de puntos únicos de fallo.
  • La cantidad de trabajo que hay que hacer en la capa de aplicación.

Almacenamientos clave-valor



La mayoría de nosotros está familiarizado con los almacenamientos clave-valor: Trabajan como hashes o diccionarios.



En términos de bases de datos no relacionales, las características definitorias de los almacenamientos clave-valor son las siguientes:


  • Cada valor individual le corresponde una sola clave.
  • El valor es opaco al sistema de base de datos.
  • En un sistema de clave-valor puro, la clave es su único índice.

Así que, ¿para qué usar un almacén de datos que parece ofrecer tan poco?

Precisamente porque  hacen tan poco,  los almacenamientos clave-valor pueden ser bastante flexibles:

  • Puede almacenar cualquier cosa: binarios, POJO, texto, datos de la sesión, lo que usted elija.
  • Se puede cambiar de un par clave-valor al siguiente.
  • Son rápidos: No hay casi nada de sobrecarga en el almacenamiento y la recuperación de un par clave-valor. No hay búsquedas en disco durante el proceso de consulta, sin complejos JOINs para resolver, sin indexación para completar.
  • La distribución de pares clave-valor es fácil: son unidades discretas de datos.
Esto hace que el almacenamiento clave-valor es una buena elección para:

  • Almacenar el estado del objeto.
  • Almacenar el estado de la sesión.
  • La descarga o  almacenamiento en caché de datos de una fuente más costosa (por ejemplo, una herramienta de mainframe o análisis de datos).
  • El almacenamiento de datos de alta velocidad.
  • El almacenamiento de datos impredecibles y variados.
  • El almacenamiento de grandes volúmenes de datos mediante la adición de más servidores.
La mayor desventaja del almacenamiento clave-valor es que más allá de el almacenamiento y recuperación básico, se requiere que usted haga todo lo demás en la capa de aplicación.


Ejemplos de Almacenamientos clave-valor


  • LevelDB: sencilla, de una sola instancia y requiere pocos recursos.

  • Riak: base de datos distribuida en consonancia con el tiempo que se ejecuta a través de grandes grupos de servidores.

  • Couchbase: base de datos distribuida con fuerza constante que se ejecuta en clusters y tiene la fuerte funcionalidad de una base de datos documental.



Base de datos documentales



Las bases de datos documentales comparten algunas cosas en común con los almacenamientos clave-valor:



  • Los documentos son fáciles de distribuir.
  • Esquema  no ejecutados.
  • Como la mayoría de las bases de datos documentales, puede utilizar una clave para buscar sobre la marcha en todo el documento.
En lo que se difieren de los almacenamientos clave-valor en que las bases de dato documentales  indexan  y permiten consultar el contenido de los datos. Eso significa que están mucho más cerca de lo que conocemos como una base de datos que un simple mecanismo de almacenamiento y recuperación de datos.

Las bases de datos documentales están bien adaptadas a las aplicaciones web. Por otro lado los formatos de documentos estructurados, tales como JSON, son fáciles de indexar  y por lo tanto de consultar.

Usted podría considerar una base de datos documental para:

  • perfiles de usuario.
  • almacenamiento de sesión.
  • cualquier contenido textual estructurado: catálogos de productos, paquetes de noticias de medios sociales, gestión de contenidos y así sucesivamente.
  • El estado del objeto (si es serializado fácilmente a JSON o XML).

Hay dos principales ventajas y desventajas:

  • Mantener la   verificación del esquema  se convierte en su trabajo.
  • Las consulta todavía no están tan optimizadas como en las bases de datos SQL.

Ejemplo de datos documentales



  • MongoDB: La más famosa de las bases de datos no relacionales,  utiliza el encadenamiento sencillo en el método para la consulta, es fácil para empezar y tiene una gran comunidad, pero cae a escalas más grandes.
  • CouchDB: uno de los pioneros de NoSQL, no es tan bueno para grandes conjuntos de datos Sin embargo, esto debe cambiar con su versión 2.0.
  • Couchbase: Combina  almacén de claves-valor,  MapReduce, actualizaciones de sub-documento, y un lenguaje de consulta SQL  para convertirse en una base de datos documental.
  • Elasticsearch: Aunque no es principalmente una base de datos documental, elasticsearch le permite almacenar, indexar documentos y realizar búsquedas.

Base de datos Orientada a Columnas




Las base de datos orientada a columnas fueron diseñados para que sean fáciles de almacenar y permitir consultar rápidamente una serie de datos. Las filas pueden contener cualquier número de columnas y cada columna tiene su propio número arbitrario de valores asociados a ella. Lo más interesante es que los datos de una columna se almacenan de forma secuencial en el disco, por lo que es rápido ejecutar consultas a través de todos los datos.
La principal disyuntiva con una base de datos  orientada a columna es que se pierde cierta flexibilidad. Se debe pensar por adelantado acerca de la forma en que  la información va ser almacenada pero, lo más importante, se debe tener en cuenta cómo se van a consultar los datos y como esto va a influir en la forma en que se almacenan en el disco.



Ejemplos de datos Orientada a Columnas






  • Cassandra: La más famosa base de datos orientada a  columna también utiliza el método Dynamo de distribución de datos en torno a un clúster, dándole alta disponibilidad de escritura /  lectura a expensas de la coherencia.
  • HBase: Viniendo del mundo de Hadoop, HBase es fuertemente consistente a expensas de la disponibilidad.

Base de datos Gráficas


Los tres tipos de bases de datos anteriores comienzan con  primeros los datos y tratan a la consulta casi como una consideración secundaria. Las bases de datos  gráficas, en cambio, son todas acerca de la consulta, y están basados ​​en la teoría de grafos de Euler.


En la teoría de grafos, un conjunto de datos consta de nodos en un gráfico y las conexiones entre los nodos. Lo interesante son las rutas que permiten las conexiones entre los nodos.

Un ejemplo común de un caso de uso de la base de datos gráfica es una red social. Cada nodo es una persona y las conexiones son las formas en que las personas se conectan el uno al otro. 

Esto hace que las bases de datos de gráficos ideal para los sitios de citas y así sucesivamente.  También ayuda a identificar los elementos inusuales en los conjuntos de datos, como la actividad fraudulenta en la banca.

La gran desventaja es que, para tener consultas ejecutadas en una cantidad aceptable de tiempo, los datos conectados deben residir en el mismo servidor. Eso hace que una base de datos gráfica sea más difícil de escalar. También podría ser necesario ejecutar algún otro tipo de base de datos para almacenar  los datos de los nodos en el gráfico.

Ejemplos de Base de datos Gráficas


  • Neo4j: con mucho, la base de datos gráfica más conocido, Neo4J utiliza un lenguaje de consulta sobre la base de representaciones de arte ASCII de la consulta.
  • ArrangoDB: una base de datos de múltiples modelos que se ocupa de los documentos y consulta tipo gráfico.


0 comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...