Anadalis Pérez Rguez / anadalis.perez@ssp.jovenclub.cu
Para el almacenamiento de la información, existen las bases de datos, estas pueden ser relacionales y no relacionales o NoSQL. Las bases de datos NoSQL son sistemas de almacenamiento de información que no cumplen con el esquema entidad-relación. Estas tienen gran diversidad de acercamientos y a la vez distintas soluciones, es decir, cada acercamiento puede estar más ajustado a un problema concreto que otro.
El término NoSQL, surge en 1998, refiriéndose a una base de datos relacional de código abierto que no usaba un lenguaje de consultas SQL (Structured Query Language) y no fue retomado hasta el 2009 cuando Johan Oskarsson, entonces empleado de Last.fm, organizó un evento para tratar las bases de datos distribuidas de código abierto no relacionales, llamándolas “NOSQL”, Not-Only SQL.
Estas bases de datos son sistemas de almacenamiento de información que tienen una estructura de datos diferente a la que se está acostumbrado a ver normalmente; mientras en una base de datos relacional se definen términos como tabla y join, las no relacionales no tienen esquemas fijos de tablas ni sentencias join, por lo que no cumplen con el esquema entidad-relación. Permiten almacenar los datos en otros formatos como clave-valor, mapeo de columnas, documentos o grafos, por lo que son más flexibles. Pueden manipular grandes volúmenes de datos de forma rápida, ya que guardan toda la información que pueden en memoria, utilizando el disco como una herramienta de persistencia [Pereira.2011].
Dentro de las bases de datos que pertenecen al movimiento NoSQL, existen varios acercamientos tales como:
– Orientadas a documento como CouchDB o MongoDB.
– Orientadas a grafos como Neo4j.
– Clave/valor, como SimpleDB o Voldemort.
– Orientadas a objetos como Db4o.
– Tabulares como Cassandra o Hypertable.
Para saber si se puede emplear o no una base de datos NoSQL se requiere un análisis previo de las condiciones existentes y de los objetivos que se pretenden lograr con el uso de la misma.
Uso de bases de datos NoSQL
No todas las aplicaciones necesitan almacenar y procesar datos de la misma manera, y por lo tanto la arquitectura de almacenamiento debería pensarse de forma acorde a las necesidades. Si pretende desarrollar una aplicación que requiera la lectura/escritura de grandes cantidades de datos y pueda dar servicio a millones de usuarios sin perder rendimiento, entonces debe plantearse el uso de una base de datos NoSQL [Pereira 2011].
Cuando se trata con grandes aplicaciones de escritura escalables, las bases relacionales no son recomendadas, ya que la normalización de datos, los joins, y las transacciones ACID(2) son anti-patrones para la escritura escalable. No obstante, después de haber decidido que se va a usar una base de datos no relacional, hace falta escoger qué acercamiento es el indicado para dar solución al problema concreto en el que se encuentra. Una de las bases de datos no relacionales usada en estos momentos por diferentes empresas debido a las ventajas que proporciona es Cassandra.
El término NoSQL se refiere a una multitud de bases de datos que intentan solventar las limitaciones que el modelo relacional se encuentra en entornos de almacenamiento masivo de datos, y concretamente en las que tiene en el momento de escalar, donde es necesario disponer de servidores muy potentes y de balanceo de carga.
Características
Las características de las bases de datos distribuidas no relacionales, propietarias o no, son las siguientes:
– Consistencia Eventual: No se implementan mecanismos rígidos de consistencia como los presentes en las bases de datos relacionales, donde la confirmación de un cambio implica una comunicación del mismo a todos los nodos que lo repliquen. Esta flexibilidad hace que la consistencia se dé, eventualmente, cuando no se hayan modificado los datos durante un periodo de tiempo. Esto se conoce también como BASE (coherencia eventual flexible básicamente disponible), en contraposición a ACID, su analogía en las bases de datos relacionales.
– Estructura distribuida: Generalmente se distribuyen los datos mediante mecanismos de tablas de hash distribuidas (DHT) ya que realmente se trata, según las distintas implementaciones, de redes p2p.
– Escalabilidad horizontal: La implementación típica se realiza en muchos nodos de capacidad de procesado limitado, en vez de utilizar grandes Mainframes.
– Tolerancia a fallos y Redundancia. Hay muchas bases de datos NoSQL que no utilizan el lenguaje de consultas SQL (por ejemplo, MongoDB usa JSON), pero hay algunas que si lo hacen, como por ejemplo BigTable (GQL), que lo ha transformado manteniendo su estructura básica.
Ventajas de las Bases de Datos NoSQL
– Pueden manejar enormes cantidades de datos: Esto se debe a su propia estructura distribuida.
– Se ejecutan en grupos de máquinas baratas: Estos sistemas no requieren de mucha computación, en comparación con los sistemas gestores de bases de datos tradicionales y basados en SQL, por lo que se pueden montar en máquinas de un costo más reducido y en mayor número, gracias a su nivel de escalabilidad.
– No generan cuellos de botella solo lo estrictamente necesario: Son mucho más rápidas ante una gran cantidad de peticiones simultaneas, aún cuando son sistemas simples que no tienen una estructura de consulta compleja ni con capacidad declarativa para en una sola línea realizar una cantidad interna de operaciones desorbitada.(Anon, 2010b)
– Son de código abierto: Los productos de código abierto proporcionan a los desarrolladores grandes beneficios. El software de código abierto tiende a ser más confiable, seguro y rápido de implementar que las alternativas propietarias.(Anon, 2010b)
Diferentes bases de datos NoSQL para distintos proyectos:
– MongoDB y Redis son buenas opciones para el almacenamiento de escritura con alta frecuencia, rara vez leen los datos estadísticos, tales como web y contador de visitas.
– Hadoop, una base de datos distribuida que puede almacenar grandes volúmenes de información tales como estadísticas del tiempo o el trabajo de análisis de negocio.
– Memcache, una base de datos transeúnte, destaca en la web el almacenamiento de sesiones y las estadísticas a corto plazo.
– Cassandra y Riak tienen un buen rendimiento en entornos con aplicaciones de alta disponibilidad, donde el tiempo de funcionamiento máximo es de vital importancia.
Impresionantes implementaciones NoSQL de empresas como Amazon, Facebook, la BBC(4) y Google se basan en bases de datos NoSQL.
A pesar de tener múltiples beneficios, el uso de Cassandra puede que en ocasiones no sea tan fácil y traiga consigo algunos elementos contradictorios.
Desventajas de las Bases de Datos NoSQL.
– No están lo suficientemente maduras para algunas empresas: A pesar de sus puestas en práctica en algunas grandes entidades, las bases de datos NoSQL aún se enfrentan a un problema de credibilidad importante con muchas organizaciones. Los críticos señalan la falta de madurez de NoSQL y los posibles problemas de inestabilidad.
– Limitaciones de Inteligencia de Negocios: Hay una o dos cuestiones acerca de las capacidades de inteligencia de negocios o BI (del inglés business intelligence) de las bases de datos NoSQL y las respuestas no son precisamente positivas. Las bases de datos NoSQL no tienen muchos ganchos para el uso general de herramientas de BI, mientras que la más simple consulta ad-hoc y análisis implica conocimientos de programación bastante buenos. Sin embargo, las soluciones están disponibles, Quest Software, compañía dedicada a la fabricación de herramientas informáticas para la gestión de sistemas y entornos de software, por ejemplo, ha creado Toad, que es una aplicación informática de desarrollo SQL y administración de base de datos, considerada una herramienta útil para los Oracle DBAs (administradores de base de datos) y es muy utilizada para bases de datos en Internet, que proporciona capacidades de consulta ad-hoc para algunas bases de datos NoSQL.
– La falta de experiencia: La novedad de NoSQL significa que no hay una gran cantidad de desarrolladores y administradores que conocen la tecnología, lo que hace difícil a las empresas encontrar personas con los conocimientos técnicos apropiados.
– Problemas de compatibilidad: A diferencia de las bases de datos relacionales, que comparten ciertos estándares, las bases de datos NoSQL tienen pocas normas en común. Cada base de datos NoSQL tiene su propia API, las interfaces de consultas son únicas y tienen peculiaridades. Esta falta de normas significa que es imposible cambiar simplemente de un proveedor a otro, por si no quedara satisfecho con el servicio.
No todas las aplicaciones necesitan almacenar y procesar datos de la misma manera, por lo que el tipo de base de datos a usar depende de las necesidades que tenga el usuario. En muchas ocasiones se usan las tradicionales bases de datos relacionales sin tener en cuenta las no relacionales y el potencial que estas brindan.
Referencias
1- http://manuelpereiragonzalez.b logspot.com/2011/05/que-sonlas-bases-de-datos-nosql.html Pereira, Manuel. Blog de Manuel Pereira Gonzalez: ¿Qué son las bases de datos NOSQL? Junio 2011. [11 de enero de 2012].
2- http://migranitodejava.blogspo t.com/2011/06/cassandra.html Max. Mi granito de java: Cassandra. Junio 2011a. [citado 11 de enero de 2012].
3- http://www.inmensia.com/tag/sql Mellado, Juan. SQL | inmensia. Marzo 2010. [citado 11 de enero de 2012].
4- http://www.interadictos.es/category/cassandra/ Mikel. Interadictos» Cassandra. Octubre 2011b. [11 de enero de 2012].
5- http://www.josek.net/2010/03/ cassandra-nsql/ Josek. Cassandra se perfila como «la reina» del NoSQL. Marzo 2010. [citado 11 de enero de 2012]..
6- http://www.ecured.cu/index.php/NoSQL