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 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.
Hace 20 años era fácil vivir sin un teléfono móvil, 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 sistemas 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.
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 la 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 de 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.
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.
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 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:
Existe un gran mito, muy difundido entre los PRO-SQL, y es que piensan que "en bases de datos NoSQL no existen estructuras". 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.