Gestores de Bases de Datos… NoSQL

Bases de datos NoSql

Si eres desarrollador o te relacionas con el área seguramente te has topado con los Gestores de Bases de Datos que utilizan el lenguaje SQL (Lenguaje estructurado de consultas, por sus siglas en inglés) y seguramente pensabas que era lo único, sin embargo, las cosas han cambiado. Existen Gestores de Bases de Datos “diferentes”.

Seré más clara; digamos que con un gestor de bases de datos relacionales la información se guarda en diferentes tablas en las que podemos utilizar un lenguaje para transformar los datos en objetos de la vida real mientras que en estos Gestores de Bases de Datos «diferentes», llamados NoSQL, tú no diseñas las tablas y estructura por adelantado además de que tienen su lenguaje propio de consultas en lugar el lenguaje estándar, de ahí su nombre.

Hablando en términos “computacionales”, cuando hablamos de bases de datos relacionales se garantiza la atomicidad, consistencia, aislamiento y durabilidad (ACID) mientras que no necesariamente para las NoSQL que en su mayoría solo se basan en el BASE (“Basic Availability, Soft-state, Eventual consistency”, alternativa que no requiere adherencia estricta a las transacciones)  principalmente. Lo anterior debido a que los sistemas modernos presentan desafíos distintos a los sistemas empresariales tradicionales como la alta frecuencia de lecturas y escrituras, cambios de esquema de datos frecuentes, etc. Hablando en términos “digeribles” los gestores de bases de datos relacionales te sirven más para modelos transaccionales en las que mantener la integridad de la información es vital y los NoSQL se adaptan a los sistemas modernos que no son tan estrictos. Algunos ejemplos más usados de este tipo de gestores son: Cassandra (Netflix, twitter, etc.), Jackrabbit, CouchDB, BigTable (Google), DynamoDB(Amazon), Redis, Neo4j, MongoDB, etc.

Una clasificación de estos gestores, en la que espero abundar más adelante, es:

  • Almacenes Key-Value (Redis, Amazon SimpleDB, Oracle BerkeleyDB y Tokyo Cabinet)
  • Bases de datos columnares  (Data warehouses y sistemas de Business Intelligence)
  • Bases de datos orientadas a documentos (Google BigTable, MongoDB, Apache CouchDB y Apache Cassandra)
  • Bases de datos orientadas a grafos (Neo4J, Hyperbase- DB e InfoGrid)
  • Bases de datos orientadas a objetos (db4o, Versant y Objectivity/DB)

Cabe mencionar que en los gestores NoSQL las consultas son más rápidas pero más limitadas cargándole la complejidad a la aplicación. Si lo que quieres soporte transaccional integral debes seguir usando los gestores relacionales.

En muchos casos, los grandes sitios, comenzaron usando gestores relacionales pero han ido combinando y/o creando sus propias herramientas para soportar las exigencias de ser tan populares. Así que si pensamos en grande deberíamos considerar la combinación, por ejemplo Linkedin comenzó con el relacional pero desarrolló su propia NoSQL (Voldemort), Facebook tiene arquitectura híbrida con Memcahed y MySQL, Casandra/HBase para la búsqueda en la bandeja de entrada. ¿Cómo ves?

Para finalizar, te puedo decir que en este tema como en muchos de tecnología no puedo afirmar que uno o el otro son mejores, ni tampoco que los gestores NoSQL vienen a sustituir a los relacionales pues en muchos de los casos el indicado es el o los indicados son los que se adaptan a nuestras necesidades. En mi opinión, antes de considerar cambiar de un gestor relacional o combinar con uno NoSQL entonces deberás considerar:

  1. Costo-beneficio de la migración o combinación de gestores.
  2. Características de los gestores que quieres utilizar.
  3. Tráfico a tu sitio-aplicación.
  4. Tecnología de desarrollo y compatibilidad con el gestor.
  5. Capital Humano experto en la herramienta y/o capacitación adicional que pudiera implicar la migración o uso de otro gestor.

Deja un comentario

Una idea sobre “Gestores de Bases de Datos… NoSQL”

A %d blogueros les gusta esto: