Al parecer el reinado de las bases de datos relacionales podría llegar a su fin, amenazado por NoSQL (Not Only SQL), un movimiento que se inició hace algunos años y que está impulsando el uso de nuevos sistemas de bases de datos que no se basan en el lenguaje de programación estándar SQL, y que serían, a ojos de los expertos, una alternativa a ciertas limitaciones en flexibilidad, procesamiento y escalabilidad que enfrentan los sistemas tradicionales para abordar el camino a big data. ¿Seguirán conviviendo ambos tipos de plataformas?
Durante cerca de 40 años el mercado ha operado con bases de datos relacionales; gigantes TI, como Microsoft, IBM y Oracle, cuentan con estas plataformas en su oferta. Sin embargo, la gran variedad de nuevas fuentes de información -redes sociales, imágenes, videos, etc.- ha duplicado en pocos años el universo digital y provocado una oleada de data de tal magnitud (cerca de 2,8 ZB), que ha puesto en apuros a estos sistemas, muy verticales y poco escalables para afrontar este volumen.
Según explica Paulina Alvarez, Solution Architect de RedHat, las bases de datos relacionales no permiten escalar horizontalmente y en grandes volúmenes de datos (big data) tienen una baja performance. Y es que, además, no fueron concebidas para data no estructurada, por lo que tienen limitaciones al enfrentarla.
De hecho, “están orientadas al desarrollo de aplicaciones que requieren trabajar con datos estructurados cuyo formato y tamaño están claramente definidos. Esto facilita su almacenamiento y posterior manipulación”, agrega Cecilia Reyes, Directora del Departamento de Informática de la Universidad Federico Santa María (USM).
Sin embargo, para Alvaro Garrido, Director de Tecnología del Instituto Profesional de Ciencias Tecnológicas (Ciisa), más que limitaciones, las bases de datos relacionales enfrentan restricciones, básicamente asociadas el cumplimiento de ciertas condiciones o reglas en éstas. Asimismo, en opinión de Jorge Pérez, Académico del Departamento de Ciencias de la Computación de la Universidad de Chile (UCH), aspectos de las bases de datos relacionales, que algunos desarrolladores consideran como limitaciones, años de investigación han demostrado que son ventajas. “Por ejemplo, muchos impulsores del movimiento NoSQL consideran que la separación entre la lógica de la aplicación (página web, por ejemplo) y la de consulta de los datos (registros de clientes almacenados, por ejemplo) no debiera existir; y el programador debiera tener acceso directo a manipular nativamente los datos desde la aplicación con un único lenguaje”, comenta. Sin embargo, la experiencia ha mostrado que realizar estas tareas de forma separada, tal como se hace en aplicaciones basadas en bases de datos relacionales, es más bien una ventaja porque se puede optimizar principalmente la extracción eficiente de los datos, “generando así códigos más limpios y mantenibles, con la subsecuente facilidad de adaptación a cambios”, añade.
Buen desempeño y escalabilidad en altos volúmenes
Las restricciones mencionadas han hecho que se busquen nuevas alternativas, dando vida al movimiento NoSQL, el paraguas que acoge a las distintas iniciativas a esta forma tradicional de almacenar los datos, “cuyo lenguaje de consulta no sigue el estándar SQL, propio de los modelos relacionales. Por lo mismo, los datos no necesitan estar lógicamente estructurados en tablas y tener vínculos entre ellas”, explica el docente de la UCH.
Paulina Alvarez, REDHAT. Cecilia Reyes, USM. Alvaro Garrido, CIISA. Jorge Pérez, UCH
Este movimiento creció al amparo de las principales compañías de Internet, enfrentadas al boom de los datos no estructurados. Twitter y Facebook, por ejemplo, hoy utilizan Cassandra, uno de los proyectos más conocidos en la línea de NoSQL, desarrollado por la red social de de Mark Zuckerberg.
¿Es el fin de un reinado? La respuesta, enfatizan los especialistas, es que si bien los sistemas NoSQL tienen varias ventajas, no son aplicables en cualquier área. De acuerdo a la académica de la USM, en ningún caso el movimiento NoSQL se debe considerar como una connotación negativa hacia SQL, es más bien una forma de decir que este lenguaje hoy en día, no es la única alternativa para crear y manejar bases de datos.
NoSQL permite manejar altos volúmenes de datos (big data), ya sea estructurados como no estructurados, con un buen desempeño para responder las consultas de los usuarios, es decir, con tiempos de espera mínimos. Esto, aclara el ejecutivo de Ciisa, se explica porque los sistemas NoSQL “no tienen un modelo complejo de consultas; en una sola línea de comando se pueden realizar muchas operaciones”. Además, hay un mayor uso de memoria que de disco, lo que mejora el rendimiento para obtener respuestas rápidas a las consultas. Por otra parte, esto posibilita ampliar el área de aplicación de los sistemas transaccionales (tradicionales) hacia sistemas en la web y multimediales.
Con las plataformas NoSQL también es posible, indica la ejecutiva de RedHat, escalar horizontalmente, manejar modelos de datos flexibles e implementaciones para cloud. Capacidades que reafirma la docente de la USM, quien señala que estos sistemas permiten “operar en forma distribuida, facilitando el ir escalando o creciendo, ajustándose bien a la computación en la nube”.
En opinión de Jorge Pérez, a pesar de ser muy diversas las plataformas que conviven bajo la denominación de NoSQL, se pueden identificar ciertas ventajas en algunas líneas de sistemas. Por ejemplo, eficiencia y elasticidad. “Esto se logra en sistemas de datos poco estructurados muy usados en aplicaciones de web 2.0. En éstos no son necesarios los ‘joins’ (una de las tareas más complejas de realizar con una base de datos relacional, que esencialmente consiste en relacionar piezas de datos almacenados en distintas tablas) y muchas de las plataformas NoSQL son capaces de funcionar de manera transparente con muchos servidores dividiendo partes de los datos y, por lo tanto, escalando en eficiencia. Pero, más importante aún, pueden soportar la inclusión de manera dinámica de nuevas máquinas para procesar los datos a medida que la carga va creciendo”, indica.
Falta de estándares
Una de las ventajas de los sistemas NoSQL, según se ha argumentado, es que son de código abierto, lo que supone una forma de entender el desarrollo y la evolución de la tecnología; libertad para elegir, mejorar e innovar. Pero, según explica el académico de la UCH, no sólo los sistemas NoSQL son OpenSource, también hay sistemas relacionales de código abierto que tienen estas ventajas. Desde su perspectiva, si bien muchas veces los seguidores de NoSQL hablan de lo positivo del código abierto, principalmente porque los desarrolladores pueden tener acceso a (y cambiar) la lógica interna del manejo de datos en los sistemas, “esto ha sido considerado negativo por mucho tiempo en la investigación formal de bases de datos, ya que rompe la lógica de separación entre la aplicación de alto nivel y la manipulación de datos. En sistemas NoSQL muchas veces el desarrollador se convierte en el optimizador de las consultas de datos”, lo que sería un retroceso de 20 o 30 años en la manipulación de datos a gran escala.
Y es que NoSQL tiene muchas ventajas, coinciden los especialistas, pero está lejos de ser la panacea que podría creerse. Tiene también objeciones, que según los expertos, más que técnicas tienen relación con su nivel de madurez. Se trata de una tecnología todavía “incipiente si se compara con las bases de datos relacionales”, comenta Paulina Alvarez. Por lo mismo, carece de estándares: si en las bases de datos relacionales se encontró el lenguaje SQL, en el caso del movimiento NoSQL cada sistema tiene sus propios lenguajes lo que podría hacer muy costoso para las empresas que adopten uno, cambiar después a otro, por ejemplo NetFlix. “En este sentido, a pesar de lo abierto de estos sistemas, las firmas pequeñas que inviertan mucho en la adopción, pueden permanecer presas de un sistema particular”, agrega Jorge Pérez.
Al tratarse de una tecnología emergente donde no hay estándares y las alternativas son múltiples, Alvaro Garrido advierte que existe un grado importante de no compatibilidad entre herramientas; cada base de datos NoSQL tiene sus propias interfaces, apis, etc. Por otra parte, tampoco existe un soporte tan robusto, lo que podría mejorar al ir madurando la tecnología y decantando en sólo algunas opciones más usadas.
Otros puntos a considerar en donde aún existen falencias, según coinciden los expertos, son la falta de rigurosidad y documentación: “Muchos de estos sistemas han sido desarrollados por hackers que poco interés tienen en entender por qué los sistemas funcionan y por lo tanto es muy difícil evaluar de manera rigurosa los pro y los contra de ellos”, explica el docente de la UCH. Faltan, agrega, benchmarks, estudios formales de su aplicabilidad, estabilidad, eficiencia en distintos escenarios, etc, y muchos de los sistemas tienen casi cero documentación de las decisiones de su diseño interno.
Punto débil: Fiabilidad
La consistencia de los datos es otro tema y para nada menor. De hecho uno de los puntos que más debates concita en torno a los sistemas NoSQL, es que mientras ofrecen la gestión de un mayor volumen y variedad de datos con mayor agilidad, no necesariamente brindan garantías de fiabilidad de la data. Puntualmente, “su mayor desventaja se presenta en que al priorizar por la disponibilidad y la inmediatez del dato para el usuario, trabajan con datos distribuidos y a veces replicados”, precisa Cecilia Reyes. Si el dato es muy volátil, agrega, puede generar inconsistencia o distintas versiones, algo que puede complicar a las aplicaciones transaccionales.
Como la mayoría de los sistemas NoSQL no están diseñados para eso, Jorge Pérez aclara que, en general, es difícil que alcancen la fiabilidad (consistencia) de las bases de datos relacionales en las que se pueden forzar modelos de consistencia fuertes en la presencia de restricciones de integridad, concurrencia, múltiples actualizaciones simultáneas, etc.
Al estar la data distribuida, de acuerdo a la profesional de RedHat, se puede hablar de tres niveles: fiabilidad en el sentido de detección de fallas a nivel de nodos, confiabilidad de datos en términos de consistencia entre lecturas y fiabilidad por corrupción de datos por concurrencia. “Existen modelos más o menos ‘débiles’ en cada uno de esos aspectos y de acuerdo a las necesidades del negocio, se puede aplicar alguna u otra solución”, comenta.
Bajar el nivel fiabilidad en pro de una mejor disponibilidad del dato ante una consulta, es razonable a juicio de la Directora del Dpto. de Informática de la USM, “porque no es tan vital para un sistema no transaccional contar con la última actualización del dato, como sí lo es no estar con el sistema caído”.
Cada sistema tiene su uso
Con sus pro y contras, NoSQL, vuelven a insistir los especialistas, es una atractiva alternativa, pero tampoco la respuesta a todo el almacenamiento de datos. Por ejemplo, si se necesita mantener relaciones complejas entre datos estructurados y consultarlos como tales, los sistemas NoSQL tienen poca aplicación, lo mismo si se requiere mantener la consistencia de los datos; pocos sistemas NoSQL podrán soportarlo. Como contraparte, las bases de datos relacionales están pensadas para almacenar datos y sus relaciones en una forma estructurada, manteniendo la consistencia en distintos niveles de forma que las tareas de replicación, recuperación, lectura y escritura simultánea, etc, se puedan realizar de manera confiable y eficiente. “Por lo mismo, pueden ser utilizadas con éxito principalmente en aplicaciones comerciales, administrativas y de gestión (como sistemas de ventas, personal, inventario, entre otros)”, explica Cecilia Reyes.
Sin embargo, si lo que se quiere es almacenar documentos (como PDF o imágenes) y éstos sólo se van a consultar, posiblemente una base de datos relacional no es la mejor opción. Almacenar otras formas de datos menos estructurados, como archivos XML, que por su naturaleza tienen una estructura de árbol, puede resultar forzado en una base de datos puramente relacional.
Así como las bases de datos relacionales tienen limitaciones para el tratamiento de datos menos estructurados y de gran tamaño (como imágenes, sonidos, mapas, textos, entre otros), las plataformas NoSQL son la alternativa en este tipo de data muy utilizada en aplicaciones en ambientes web, redes sociales, buscadores y sistemas de información geográfica, entre otros (como portales web, Twitter, Amazon, Google, etc).
Los expertos coinciden en que ambos tipos de sistemas seguirán existiendo y que no se puede hablar de la muerte de las bases de datos relacionales, que llevan cerca de cuatro décadas ya de uso exitoso. Cada tipo de sistemas tiene sus ventajas y aplicaciones. “En el pasado se han hecho afirmaciones similares del fin de las bases de datos relacionales, por ejemplo, con la aparición de las bases de datos orientadas a objeto, y el advenimiento de XML. Ambos vinieron a mostrar deficiencias de los sistemas relacionales que finalmente terminaron incorporándose en éstos, muchos de los cuales hoy soportan objetos y almacenamiento nativo de XML”, agrega Jorge Pérez.
Por otra parte, “los requerimientos de big data, elasticidad y data no estructurada son hechos indiscutibles, por los que las opciones que resuelvan dicho problema, tienen un presente y un futuro, igualmente indiscutible”, agrega Paulina Alvarez. Por lo mismo, es importante determinar cuáles son los requerimientos de negocio para definir una incursión en tecnologías NoSQL y evaluar alternativas. Finalmente, según la ejecutiva, la pregunta quizás debería ser: ¿Llegará el momento en que toda la información a almacenar contenga dichas características? Y cuando ese momento llegue, ¿los modelos tradicionales aún serán ‘tan tradicionales’ que haya que terminar con ellos?