De la base de datos clásica al NoSQL

Durante años nos hemos acostumbrado a trabajar con bases de datos. Información estructurada de manera rígida, estable, que alcanza su máxima expresión cuando usamos esquemas relacionales. Ficheros de bases de datos organizados en tablas, filas y columnas, que corresponden a entidades, registros y campos. Y sobre todo ello planean los modelos de datos relacional y entidad/relación (extendida, etc.). Traducido al lenguaje común, cuando se usan tablas en MySQL, Access o Filemaker, se está trabajando con sistemas de gestión de bases de datos relacionales. Pero en los últimos años estamos asistiendo al auge de sistemas de gestión de bases de datos no relacionales, en un movimiento al que se ha etiquetado como NoSQL.

Para apreciar la importancia del enfoque, basta con considerar que Facebook y Twitter, entre otros importantes sistemas, untilizan como soporte bases de datos NoSQL. El problema básico al que intentan hacer frente este tipo de sistemas es el que plantean entornos con una altísima carga de acceso y escritura simultánea de grandes volúmenes de datos, en formatos y estructuras heterogéneos. Se trata, entonces de bases de datos en las cuales los registros no son homogéneos en su estructura, y para los cuales se necesitan velocidades elevadísimas de localización y acceso a los datos físicos. A los que ya llevamos un tiempo en la gestión de información, esto nos puede traer recuerdos de las bases de datos documentales de la décadas de 1980 y 1990: grandes volúmenes de información textual, rapidez de acceso, estructuras de datos heterogéneas… pues no es lo mismo, probablemente es mucho mejor. Y los más jóvenes deben saber que una base de datos NoSQL se encuentra en el corazón de  sus teléfonos Android…

Las características principales de una base de datos NoSQL responden a:

  1. Modelos de datos variables y flexibles: siempre hay un modelo, una estructura, pero la rigidez del modelo relacional desaparece…
  2. Escalabilidad sencilla, pueden responder a necesidades pequeñas y a altos volúmenes de trabajo.
  3. Alta velocidad de respuesta a peticiones.
  4. Diferentes lenguajes de consulta (no SQL).

Las bases de datos NoSQL tienen cada vez mayor número de aplicaciones y posibilidades. Todavía no se trata de una tecnología completamente desarrollada,  y además debe considerarse que bajo el término NoSQl se pueden encontrar productos con diferentes enfoques, que pueden agruparse en bases de datos por valores clave, de documentos, de columnas ampliadas y de grafos… las bases de datos en RDF, por ejemplo, son bases de datos de grafos. Si tomamos en consideración otro ejemplo, los registros MARC, evidentemente son un tipo de información que se ajusta muy bien a las prestaciones que ofrece una NoSQL. Recientemente, Ramalho ha publicado en la recomendable Code4Lib Journal un trabajo en el cual han exportado registros bibliográficos desde ISIS a CouchDB, con buenos resultados. En un entorno cada vez con mayor cantidad de información etiquetada en XML, con esquemas diversos, las opciones que ofrecen las NoSQL parecen mucho más interesantes que las relacionales que todavía usamos generalmente. Quizá cabe citar, como uno de sus inconvenientes, la ausencia de unos mecanismos estandarizados de consulta.

Para saber más, resulta obligada la consulta de myNoSQL y de NOSQL Databases, que ofrecen gran cantidad de información sobre la cuestión. Y como no podría ser menos, la mayoría de las NoSQL son software libre, así que se pueden descargar y probar libremente… eso sí, no hay que esperar las interfaces clásicos de menús y ventanitas para su uso, que esto es algo serio ;-). La recomendación sería revisar CouchDb y MongoDB… nadie dijo que fuese sencillo, recuerda que el NoSQL es en la actualidad un activo tema de discusión entre especialistas en bases de datos.