Está en la página 1de 5

Espacio Reservado

ALMACENES DE DATOS A LA MEDIDA, NUEVO ENFOQUE EN EL MANEJO DE INFORMACIN


Resumen
El presente documento se centra los almacenes de datos NoSQL, los cuales, actualmente se presentan como una alternativa de almacenamiento de informacin a los motores de bases de datos tradicionales (Relacionales). Describe la clasificacin de los diferentes almacenes de datos basados en su enfoque, la cual contempla el ambiente y la forma en la que la informacin va a ser almacenada y procesada. Por ultimo presenta un paralelo entre el enfoque Relacional y el NoSQL, mencionando ventajas y desventajas tanto conceptuales como de rendimiento y funcionalidad. Palabras clave: NoSQL, Almacenes de datos, Modelo Relacional, Redes Sociales, Web 2.0, grafo, documentales, clave valor, multivalor, orientada a objetos, tabular.

Primer Primer Andres Camacho Pimentel1 Segundo S. Andrey Fernando Ortiz2 Tercer Tercer Miguel Leonardo Correa3

Introduccin
Cuando se habla de grandes cantidades de informacin y del almacenamiento de esta, el referente casi que obligado es el modelo relacional, el cual ha regido el mercado desde la dcada de los 70s, gracias a Edgar Frank Codd y Larry Elison, los cuales desarrollaron y estandarizaron el modelo, tal cual lo conocemos en la actualidad. Grupos han surgido ante la idea de replantear el Modelo Relacional, que a pesar de ser eficiente, an no se adapta a todas las necesidades derivadas a partir del manejo de grandes cantidades de datos. Como resultado han nacido formas diferentes para almacenar y manejar informacin, cobijadas bajo el concepto de NoSQL, en donde lo primordial radica en la capacidad de consulta, sacrificando un pequeo porcentaje en cuanto a funcionalidad (operaciones y a generacin de reportes), integridad y espacio de almacenamiento en disco (las BD NoSQL tienden a ser de mayor tamao) se refiere, a favor de un mayor rendimiento y velocidad de operacin. Constantemente surgen preguntas orientadas hacia el posible reemplazo de las bases de datos Relacionales por las NoSQL, pero hasta el momento esto solo ser verdad en aquellos casos en los que el objeto de negocio sea almacenar grandes cantidades de datos y no el 100% de integridad de los mismos, caso especfico las Redes Sociales.

Not Only SQL, a new approach in the management of data stores. Abstract
Estudiante de Ingeniera de Sistemas de la Universidad Distrital. 2 Estudiante de Ingeniera de Sistemas de la Universidad Distrital. 3 Estudiante de Ingeniera de Sistemas de la Universidad Distrital.
1

This paper focuses on NoSQL data store, which now appear as an alternative of storage engines to the traditional databases (Relational). Describe the classification of the different kinds of data stores based on their approach, which includes the environment and how that information will be stored and processed. Finally presents a parallel between the relational approach and NoSQL, citing advantages and disadvantages in conceptual, performance and functionality. Key words: NoSQL, data warehouses, relational model, social networking, web 2.0, graph, documentaries, key value, multivalued, objectoriented, tabular.
1

Qu es NoSQL?
Hasta hace pocos aos (para muchos desarrolladores hasta la fecha), las bases de datos Relacionales eran usadas para casi todo tipo de aplicaciones que involucraran gestin de datos. Sus amplias caractersticas las hacan atractivas para cualquier tipo de proyecto, llegando a pensar que con ellas se podra resolver cualquier tarea o problema que se pudiera imaginar con bases de datos. Fueron esa gran gama de caractersticas lo que constituira su taln de Aquiles.

El manejo de bases de datos Relacionales se volvi demasiado complejo gracias a la gran cantidad de cosas que con ellas se pueden hacer, "Las bases de datos relaciones nos ofrecen demasiado. Nos fuerzan a adaptar nuestros objetos para adaptarlos a una RDBMS (sistema de gestin de bases de datos relacional)"[1]. Muchas veces, la gran cantidad de caractersticas sobrepasaba el alcance de los proyectos y aquellas herramientas diseadas para facilitar el manejo de datos se convertan en un problema, hoy fuertemente cuestionado. Con el auge de la Web 2.0, los gestores de datos, enfrentaron el mayor de todos los retos hasta ahora conocidos: Ofrecer velocidad y alto rendimiento para millones de usuarios interactuando indirectamente y en simultneo con informacin alojada en bases de datos hasta ahora Relacionales. Con tantos usuarios, es ms que necesario tener bases de datos distribuidas para alojar la informacin, pero con el modelo Relacional las transacciones y operaciones entre estas son poco eficientes. En este contexto nace lo que se conoce como almacenes de datos no Relacionales o almacenes de datos NoSQL. El termino NoSQL fue usado por primera vez en 1998 para referirse a bases de datos que omitan el uso de SQL [2]. Ms adelante, alrededor del ao 2009, el termino NoSQL fue usado nuevamente, pero esta vez en un contexto diferente; ahora se usaba para englobar aquellos almacenes de datos no Relacionales. El responsable de este nuevo significado fue Eric Evans empleado de Rackspace, quien lo defini como el punto central en la bsqueda de alternativas para solucionar los problemas que las bases de datos relacionales no pueden [3]. Hasta la fecha, el trmino NoSQL se sigue aplicando para aquellos almacenes de datos de tipo no Relacional. Pero concretamente Qu es NoSQL? NoSQL hace referencia a Not only SQL. Ms que una contracorriente, los almacenes de datos que clasifican dentro de esta categora entran como apoyo a las bases de datos tradicionales en situaciones especficas, ms exactamente, donde las bases de datos relacionales poseen problemas de desempeo o modelado. Las bases de datos NoSQL estn divididas en subconjuntos los cuales presentan soluciones a situaciones que pueden ser recurrentes. Esta flexibilidad en el diseo es la que permite un mejor desempeo y efectividad. Al tener en cuenta la situacin el diseo favorece
2

el tratamiento de la informacin, especialmente para leer y escribir en dicha estructura. Pero no en todas las situaciones es conveniente utilizar determinado almacn de datos. En ocasiones la implementacin ms cmoda es una integracin entre diferentes almacenes de datos los cuales intervengan en diferentes puntos de tratamiento de la informacin, hacindolo de la mejor forma posible.

1.1. Por qu NoSQL?


Los sistemas de informacin desarrollados bajo el manto de la Web 2.0 (como en el caso de las Redes Sociales) se han cargado al hombro la gran responsabilidad de procesar y albergar grandes cantidades de informacin a diario; para 2009 Facebook reporto que el tamao total de fotos compartidas llego a los 1.5 petabytes, mientras que Google proceso alrededor de 24 petabytes de datos por da [4]. El manejo de grandes cantidades de datos ha desencadenado problemas para los motores de almacenamiento de informacin tradicionales basados en el modelo relacional (RDBMS), lo que ha llevado a explorar modelos de manejo de informacin alternativos y poco convencionales. Entre los problemas que llevaron a esta situacin se tienen:

Almacenar y acceder a gran cantidad de

datos eficientemente se convierte en una tarea difcil de manejar. El crecimiento continuo y acelerado del tamao de los datos almacenados hace necesario disponer de ms recursos de hardware que permitan procesar tal cantidad de datos sin perder notoriamente desempeo y eficiencia del sistema. Manipular grandes grupos de datos implica trabajar con procesos en paralelo, disminuyendo el rendimiento del sistema [5]. Modelar situaciones en los que la informacin no se encuentra completa o est muy dispersa es de gran complejidad y requiere de mayores esfuerzos para alcanzar un modelo consistente, los cuales muchas veces son innecesarios.

Para solucionar estos problemas se suele emplear la escalabilidad, tanto vertical aumentando los recursos de un solo servidor, como horizontal distribuyendo la carga de datos en un nmero mayor de servidores.

La escalabilidad vertical garantiza la consistencia de los datos almacenados en la base de datos al no tener que realizar replicas en diferentes nodos. El problema llega con el tiempo cuando los recursos con los que cuenta el servidor no soportan la carga de transacciones que debe realizar a diario con una mayor cantidad de informacin. Se pueden mejorar estos recursos, pero eventualmente con el tiempo se alcanza el lmite permitido, debiendo cambiar por completo el servidor por uno con la capacidad de realizar todas las tareas necesarias. As, este tipo de escalabilidad es ideal para sistemas en los que no se maneja un nmero muy grande de informacin y se necesita de una mayor consistencia de los datos, por encima de otras caractersticas como la disponibilidad o la tolerancia a fallos. La escalabilidad horizontal, por su parte, aplica tcnicas con las cuales distribuir la informacin entre un mayor nmero de nodos. Al hacer esto necesariamente se pierden gradualmente varias de las propiedades ACID, las cuales se deben cumplir en los modelos relacionales. Entre estas tcnicas podemos encontrar la escalabilidad por replicacin, en la cual un dato se almacena en ms de un nodo, incrementando el rendimiento en la lectura, volviendo al sistema ms robusto a los fallos y disminuyendo la latencia al poner la informacin ms cerca de los usuarios. Pero, como consecuencia tambin se pierde rendimiento en la escritura de datos. Esto ocurre al tener que realizar una rplica del dato a tratar en los nodos dispuestos para su almacenamiento, dependiendo de la disponibilidad y de las propiedades de consistencia de la base de datos. Otra de las tcnicas para distribuir la informacin es la fragmentacin. Aca se realiza una divisin de los datos y se distribuyen en muchos nodos. Esto quiere decir que un conjunto de datos (tablas para el caso de los RDBMS) se almacena no en un solo nodo sino en un grupo de estos. Gracias a esto al sistema se le pueden agregar nuevos nodos con los cuales aumentar la capacidad y el rendimiento de operaciones sin necesidad de modificar la aplicacin. Pero la complejidad e ineficiencia para realizar operaciones tpicas como los join no permite que se implemente adecuadamente una solucin con bases de datos relacionales. Independiente de la tcnica empleada para distribuir la base de datos, al hacerlo se pierde una de tres propiedades: la disponibilidad, la consistencia o la tolerancia a fallos. Determinar cul de estos es menos importante requiere de un anlisis de las necesidades del sistema; para ello se usa el teorema de CAP. El teorema define lo siguiente en un sistema de almacenamiento de
3

datos distribuido solo dos caractersticas pueden ser proporcionadas, la disponibilidad, la consistencia y la tolerancia a los fallos[6]. Cuando la consistencia es importante, el nmero de nodos que deben ser ledos para que un dato sea aceptado (R) ms el nmero de nodos en los que se debe guardar un dato antes de terminar la operacin (W) debe ser mayor que el nmero de nodos en los cuales un dato se replica (N). Para este caso las bases de datos relacionales son la mejor eleccin aplicando tcnicas de replicacin adecuadas. Mientras que si la consistencia no es importante (consistencia dbil o eventual) R ms W puede ser menor o igual a N. En este caso es donde NoSQL se convierte en la mejor eleccin. NoSQL permite la escalabilidad horizontal. Al usar NoSQL no se ve afectado el sistema por la cada de un nodo. Se pueden agregar o quitar nuevos servidores sin que por ello represente una perdida en el rendimiento, facilitando el manejo del almacenamiento de la informacin aumentando significativamente los recursos del sistema. NoSQL permite el modelamiento de sistemas orientados a objetos. De esta forma se elimina la necesidad de convertir estos a un modelo relacional, simplificando el trabajo de los desarrolladores gracias a la exclusin del uso de dos lenguajes diferentes (comnmente lenguaje orientado a objetos y lenguaje relacional) en el desarrollo de un mismo aplicativo. Al no tener que normalizar el modelo de datos, se simplifican las transacciones entre datos muy dispersos, mejorando la velocidad de ingreso de nuevos datos y la bsqueda de los ya existentes. Por ltimo, al no estar ligado a un modelo estndar, se abre la posibilidad de usar dos o ms tipos de almacenamiento de datos, facilitando el procesamiento de la informacin y mejorando el rendimiento del sistema.

1.2. Tipos de NoSQL


El movimiento NoSQL reconoce gran variedad de modelos no-relacionales, pero tan solo unos pocos cuentan con la suficiente documentacin para que otros usuarios puedan implementarlo en sus proyectos. En general, se han estudiado cuatro modelos principales, los cuales son usados en su gran mayora por grandes empresas de internet como Google, Facebook, LinkedIn, Twitter, Netflix, entre muchas otras.

1.2.1.

Clave / Valor

Los almacenes de datos basados en Clave/Valor

aprovechan dos formas de almacenar datos, los array y HashMap, y la memoria en cache. La primera es usar estructuras de datos bsicas tales como los array o los HashMap, los cuales se pueden asociar en pares de Clave/Valor. La clave es un valor nico en el conjunto de datos, por lo que la bsqueda de un dato ser ms sencilla y rpida. Estas estructuras bsicas cuentan con la ventaja de poder ser liberadas de memoria una vez dejen de usarse, no ocupando espacio si no es necesario almacenarlo. Aunque tambin cuenta con esta propiedad, sirviendo en casos en los que se requiera de la persistencia de la informacin. La segunda forma es usar la memoria en cache. Esta tcnica es ampliamente utilizada en mltiples sistemas como los sistemas operativos, bases de datos y en general en aplicaciones web. Estas ltimas son consideradas como un modelo NoSQL, pues tienen la capacidad de almacenar informacin como pginas web, imgenes, usando grupos de clave/valor para la persistencia de la informacin.

Los RDBMS parten de la idea de que los atributos o propiedades de los datos pueden ser definidos desde un inicio y que las relaciones entre grupos de datos estn bien establecidas y sistemticamente referenciadas, adems aade ndices a sus conjuntos de datos, los cuales son (o deben) ser aprovechados para realizar consultas a una mayor velocidad. Pero al parecer estos conceptos estn perdiendo fuerza, y conceptos alternativos empiezan a chocar contra los ya existentes en esta corriente. Muchos conceptos RDBMS ya han perdido la batalla. Si bien es cierto que los RDBMS pueden lidiar con muchas de las irregularidades y ausencias de estructuras bien definidas, en un contexto de datos masivos, dispersos y con estructuras poco definidas, an siguen perdiendo la pelea. Para poder trabajar con este tipo de datos, optimizando el rendimiento y la efectividad, un RDMS debera desnormalizar sus tablas reemplazndolas por colecciones de datos (no imponen estructuras fijas a los datos que las componen), eliminar las limitaciones que impone a los conjuntos de datos que almacena y disminuir las garantas transaccionales (ayuda en la escalabilidad), pero finalmente, despus de todas estas modificaciones terminara parecindose ms a un producto NoSQL que a un producto RDBMS.

1.2.2. 1.2.3.

Tabulares Documentales

Son almacenes de datos que soportan mucha ms complejidad que los almacenes de datos Clave/Valor. No trabajan con filas, estas son reemplazadas por el concepto de Documento. En este contexto un documento consiste en un .. Este tipo de almacn de datos est diseado para permitir gran escalabilidad Horizontal, lo que quiere decir que sin importar que tan grande se vuelva un almacn de datos, simplemente se debern aadir ms componentes de Hardware para soportar el tamao, sin que el rendimiento se vea afectado.

1.3.1. Ventajas del NoSQL sobre el Modelo Relacional


Elegir almacenes de datos de acuerdo a las necesidades de tratamiento de informacin permite mejorar el rendimiento de manera significativa, ya que no se debe traducir el modelado del aplicativo al modelado relacional si no que se busca uno que se adecue de manera ms natural. Como ejemplo tenemos el uso de almacenes de datos NoSql orientados a Grafos en las Redes Sociales, las relaciones entre cada uno de los nodos y la interaccin entre estos son algo propio de los almacenes orientado a Grafos. El tener la posibilidad de un modelo de almacn de datos que se adapte al modelado de tratamiento de informacin del aplicativo no solo simplifica la implementacin, si no que mejora considerablemente los tiempos de lectura y escritura sobre la base de datos.

1.2.4.

Grafos

1.3. NoSQL Vs Modelo Relacional


Los retos que presentan los RDBMS derivados del procesamiento masivo de datos a escala Web no son propios de un producto, sino que pertenecen a todo el conglomerado de bases de datos agrupadas en este contexto. Todas intentan cumplir las reglas que impone el modelo Relacional, quien asume que todos los datos son densos y bastante uniformes, razn por la cual tiende a crear un modelado bastante estructurado para la administracin de los datos.
4

1.3.2. Desventajas del NoSQL sobre el Modelo Relacional


NoSQL brinda la flexibilidad para manejar grandes cantidades de datos poco estructurados y

hace fcil su manejo, pero en contra parte la integridad transaccional, el indexado de elementos y la facilidad de consulta se ven afectadas. Irnicamente una de las caractersticas que ms se pierde en NoSQL es SQL[7]. NoSQL no es recomendable para situaciones donde el objeto de negocio implique 100% de integridad transaccional en los datos o por lo menos un porcentaje bastante acercado, por ejemplo el uso de NoSQL para administrar los estados de cuentas de ahorros en un banco constituira una mala prctica, debido a que los datos que se manejan en un banco deben conservar las caractersticas que provee el modelo ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad). Por otro lado, tampoco es recomendado para situaciones en las que el objeto de negocio implique consultas bastante complejas, debido a que las consultas soportadas por NoSQL son bastante bsicas y no permiten el uso de joins entre conjuntos de datos. Ejemplo de donde no debe usarse, podra ser con conjuntos de datos usados para reportes financieros, clculos Investigativos, clculos predictivos, etc.

[3] Eric Evans, NoSQL: Whats in a name, disponible en http://blog.symlink.com/2009/10/30/nosql_whats_in_a_name.html [4] [5] Shashank Tiwari, Professional NoSQL. John Wiley & Sons, Inc., Canada, 2011, pp. 8 [6] Kai Orend, Analysis and Classification of NoSQL Databases and Evaluation of their Ability to Replace an Object-relational Persistence Layer, Tesis de maestra, Facultad de Informtica, Technische Universitt Mnchen, Munich, Alemania, 2010 [7] Shashank Tiwari, Professional NoSQL. John Wiley & Sons, Inc., Canada, 2011, pp. 5

1.4. Conclusiones
Los almacenes de datos NoSQL ofrecen una posibilidad atractiva al presentar diversos modelamientos que se adaptan a situaciones especficas. Los almacenes de datos NoSQL son ms rpidos en tareas de lectura y escritura, siempre y cuando se use un tipo de almacn de datos ajustado al dominio y propsito interno al tratamiento de la informacin. Los almacenes de datos NoSQL no poseen operaciones como las que posee el modelo relacional, estas relegan esa labor al aplicativo. Los almacenes de datos NoSQL no garantizan las transacciones por lo que no se puede garantizar un 100% de la integridad de la informacin. Las mejores soluciones que hagan uso de NoSQL se presentan al integrar diferentes almacenes de datos en un mismo aplicativo, en donde cada uno se encarga de sectores de la informacin, de acuerdo a las distintas necesidades de administracin y almacenamiento que se tengan dentro de la aplicacin.
[1] Jhon Travis, Inauguracin de la comunidad de NoSQL San Francisco. [2] Carlo Strozzi, A relational database managment system, disponible en http://www.strozzi.it/cgibin/CSA/tw7/I/en_US/nosql/Home%20Page 5

También podría gustarte