NoSQL como el futuro de las bases de datos
Actualmente las bases de datos ya no se entienden como hace una década: todo ha evolucionado con la llegada de Internet y los motores de bases de datos no son la excepción.
El panorama en el que vivimos es el de un mundo súper conectado, en el que se generan millones de datos por segundo a través de aplicaciones, redes sociales, blogs, foros, entre muchos otros sistemas.
La lluvia de información trae tantas soluciones como problemas a nuestras vidas, pero muchos más a las personas que tienen que mantener la información de una manera legible para los humanos, por lo tanto entender las bases de datos como tan solo un almacén es un grave error en el que podemos estar incurriendo ahora mismo.
El mundo conectado
Hace 20 años era fácil vivir sin un teléfono celular, sin una cuenta de correo electrónico, sin acceder a Internet. Hoy en día esa desconexión es casi impensable por la misma dinámica del sistema globalizado: la familia, amigos, las empresas, los institutos usan redes sociales; las universidades utilizan sistemas de e-learning, muchas empresas utilizan sistema de gestión para muchos de sus procesos, los bancos apoyan el comercio electrónico, mercados financieros y muchas otras actividades que demuestran que la dinámica está cambiando hacia el acceso a todos los servicios a través de Internet, incluso se piensa en el futuro sobre medicina a distancia y objetos conectados entre objetos (The Internet of Things).
Esto parece una consecuencia de la hiperconexión; como efecto colateral se generan datos que son almacenados en grandes repositorios de datos de los proveedores de servicios, los ISPs y, porque no, la NSA.
La situación actual de los sistemas de bases de datos
Existen dos fuertes movimientos en el universo de las bases de datos: uno es el movimiento “SQL” y otro el movimiento “NoSQL”, ambos con sus pros y contras.
A las bases de datos SQL también se les llama bases de datos relacionales, son las que más se estudian en las carreras universitarias relacionadas con computación e informática, han servido mucho para hacer aplicaciones transaccionales en las que mantener y proteger la integridad de la información es vital.
Por otro lado tenemos las “NoSQL” , acrónimo de Not Only SQL, que aboga más por la evolución del Internet; no es exactamente un tipo de base de datos, sino un conjunto de tipos de bases de datos, por ejemplo, con las bases de datos documentales que son las más conocidas, se podría hacer prácticamente todo lo que se hace actualmente con una relacional. Cabe destacar que en NoSQL no existe ACID (Atomicity, Consistency, Isolation, Durability) como en las bases de datos relacionales, pero existe algo llamado BASE (Basic Availability, Soft State, Eventual Consistency) que da características para el manejo de datos.
En la mayoría de los sistemas se usan bases de datos relacionales, por ser las más tradicionales y las que más se conocen. Muchos de los grandes sitios como Facebook, Twitter, Google y Yahoo se han cimentado en MySQL o PostgreSQL, pero en los últimos años se han dado cuenta de que esto no es suficiente y se originó la llamada “Guerra de las bases de datos”.
Algunos de los protagonistas de esta guerra son empresas y organizaciones muy conocidas: Facebook, Apache, 10gen, LinkedIn. Aunque muchos servicios empiezan a usar NoSQL hay otros que son dependientes de SQL: el cambio implicaría un costo enorme. Una de esas empresas es Twitter: emplea tanto SQL como NoSQL en sus sistemas, con lo que se demuestra que ambas pueden convivir perfectamente.
SQL como el pasado de las bases de datos
Las bases de datos relacionales son muy utilizadas actualmente, pero empiezan a ser insuficientes respecto a la forma de almacenamiento de información en Internet, con lo que se generan cuellos de botella y estructuras muy rígidas que impiden un crecimiento constante, a la par con las fuentes de datos.
Hay personas tratando de mantener la llama encendida, como el proyecto MariaDB (el famoso fork de MySQL) que ha introducido el motor de Cassandra (una base de datos NoSQL) demostrando que muchas personas apuestan por la interoperabilidad de SQL y NoSQL.
NoSQL como el futuro
Hablar hoy de NoSQL como el futuro de los sistemas de bases de datos puede sonar un poco apresurado, pero hay movimientos importantes: el notable afán de Facebook por crear motores de bases de datos como Cassandra y RocksDB, y el uso de NoSQL en otras redes sociales como Twitter y Linkedin, que indican que todo apunta hacia servicios que usen repositorios datos con NoSQL únicamente.
Pero hay dos problemas que retrasan este hecho. El primero es la resistencia al cambio pues se piensa que los motores de bases de datos no pueden resolver muchos problemas de la vida real (cabe señalar que la mayoría de los proyectos no usan ni el 50% de las bondades que ofrece SQL), un ejemplo concreto radica en los nuevos desarrollos, muchos piensan que con NoSQL no se garantiza la integridad de los datos, o la consistencia, pero hay métodos para poder hacer esto con bases de datos documentales por nombrar alguna.
El origen de este problema, en mi opinión es tomar el tema de NoSQL desde un punto de vista SQL: es como comparar un automóvil con un helicóptero, ambos sirven para transportarse hasta la ciudad, pero el funcionamiento de cada uno de ellos no es similar, pilotar un helicóptero pensando que es automóvil es un grave error.
El segundo gran problema es la diversidad de tipos de NoSQL que existen: clave/valor, documentos, grafos, tabular, entre otras. Las personas se confunden y abruman al tener que decidir cuál usar. Esa elección puede ser errada. Siempre será una apuesta muy fuerte saber si tu proyecto se alineará adecuadamente con el tipo de base de datos que se ha elegido.
Para hacer esta elección es recomendable tener claro lo siguiente:
-
Qué tipo de proyecto se hará, si es para Internet o para el uso en intranet.
-
Cuál es la cantidad esperada de usuarios y si muchas de las funciones deben hacer uso de las transacciones complejas, o si, de lo contrario son escrituras y lecturas manejadas desde el software.
-
Qué tecnología se va a usar para el desarrollo (si usa Django por ejemplo, lo recomendable es usar BD Relacional, ya que es más natural el manejo de los datos en aplicaciones hechas en ese framework).
Con esos tres puntos claro se puede ver en el catálogo de opciones qué base de datos se adapta más a lo que se busca. Este es un sitio muy bueno para saber información sobre los motores de BD NoSQL.
Derrumbando un gran mito
Existe un gran mito, muy difundido entre los PRO-SQL, y es que piensan y pregonan que “en bases de datos NoSQL no existen estructuras”. Esta idea podría hacer referencia a una frase célebre dicha en una telenovela venezolana de los noventa llamada “Por Estas Calles” y decía así: “Como vaya viniendo, vamos viendo”, haciendo referencia a la improvisación, pero no, en NoSQ, existen estructuras, que las estructuras son más flexibles en comparación a SQL ya es otra cosa y de aquí nace el término schema-free.