Es interesante el movimiento que se inició hace algunos meses y que está demostrando que los sistemas de bases de datos relacionales que habíamos conocido y admirado hasta la fecha podrían tener fecha de caducidad. Se trata del movimiento NoSQL, que como su propio nombre indica trata de impulsar alternativas muy distintas a las que hasta ahora ha propuesto toda la rama de productos basados en el lenguaje SQL.
No soy un experto en BBDD -bastante mal lo pasé en la carrera gracias en parte a un profesor muy odiado en la facultad, Santiago Eibe- pero sí que me interesa la evolución de un mercado que durante muchísimos años se ha sustentado en el concepto de las bases de datos relacionales, muy verticales y cuya escalabilidad ha empezado a verse comprometida con la aparición de grandes almacenes de datos que surgen de empresas y servicios gigantescos como las modernas redes sociales.
Esas situaciones han hecho que varios investigadores hayan comenzado a pensar en una forma distinta de almacenar esos datos, y de ahí ha surgido el término NoSQL, que engloba una serie de proyectos que están ganando mucho interés a la hora de servir como alternativas a las soluciones tradicionales de Microsoft, Oracle o IBM, y entre las que por supuesto incluyo a MySQL, la base de datos gracias a la cual funciona este blog y que sigue siendo un desarrollo muy respetable. Pero MySQL no lo es todo. Y SQL, desde luego, tampoco.
Lo explica muy claramente Dave Kellog en un artículo en su blog en el que analiza el actual estado del mercado de las bases de datos, y que se divide claramente en dos campos: las relacionales, y las NoSQL. El post de Kellog es fantástico para comprender este pequeño fenómeno mediático que está creándose entorno a NoSQL. Como sucedió otras veces en el pasado, NoSQL -es decir, cualquier plataforma que se apoya en ese concepto o término- parece ahora la panacea a todos los problemas, pero hay que tener cuidado: puede no ser aplicable a todos los campos.
Sin embargo, es interesante comprobar que Twitter ha comenzado su migración de MySQL a Cassandra (el proyecto OpenSource de Facebook que es uno de los más conocidos en el mundo NoSQL), que Digg ha hecho lo propio o que como venía diciendo uno de los proyectos Open Source más importantes en este terreno esté implementado por Facebook, una red social con más de 400 millones de usuarios (a día de hoy) y que genera una cantidad de datos -y por tanto, de accesos a bases de datos- realmente prodigioso.
El artículo «MySQL and Memcached: end of an era?» refleja también esa evolución que se está viviendo en las grandes plataformas. Puede que NoSQL sea por el momento más adecuado para esos grandes sistemas, pero lo que está claro es que algo está cambiando en el mundo de las bases de datos.
Solo estoy en desacuerdo con algo del artículo de Kellog: no creo que las RDBMS vayan a morir, a menos que las mate un modelo mejor. El caso es que muy pocos necesitan manejar volúmenes de datos que justifiquen cambiar a NoSQL, la mayoría lo que necesita es la fiabilidad que ofrece un RDBMS y están dentro de los límites de escalabilidad razonables.
Sí, el campo de juego ha cambiado, y como yo decía en mi blog hace unos días, puede ser que MySQL esté en peligro, pues era el tradicional rey en los casos que se necesitaba manejar grandes bases de datos con gran velocidad.
Yo soy justamente de la idea contraria. Creo que las bases de datos relacionales son solo útiles en muy pocos casos de producción en webs reales. Como ejemplo te puedo poner wordpress que prácticamente esta estructurado como una base de datos clave-valor, sobretodo en la parte de plugins. Es cuestión de ver para que se va a usar la web y si realmente te va a servir para algo. En la mayoría de casos no hay mas de 50 resultados que pueden ser ordenados a posteriori por javascript por ejemplo… Ahorrando así mucho proceso de servidor. Esto por ejemplo lo puedes ver en el timeline de facebook (creo). Yo hoy día solo hago tablas con varios campos o tablas clave-valor (con json o cosas así). Ya nunca uso relaciones entre dos tablas diferentes. Se programa mas rápido, los queries son mas simples, es escalable vía shards… Todo son ventajas.
Bueno, no creo que sea el fin, pero creo que todos podemos afirmar que usar incluso MySQL para un blog (no lo hago por meterme con nadie, yo mismo estoy en el saco por cosas parecidas) es una brutalidad. Existen soluciones muy interesantes como SQLite, a ver si se generalizan un poco y se empiezan a usar más comúnmente.
Para soluciones mayores no pensaba que se usase tanto MySQL, imaginaba más bien Oracle y similares, que aunque es básicamente lo mismo seguro que mejoran bastantes aspectos en el tema de la escalabilidad.
Uff… y vuelta a los archivos de texto… bueno si lo que necesitas no es algo crítico puede ser algo viable, no se olviden que LDAP es una base de datos basada en texto, pero no por eso significa que las BDRelacionales vayan a morir, estas cosas pasan cuando los diseñadores y aficionados quieren entrar en temas mas profesionales y se topan con un monton de requerimientos y conocimientos que no tienen y que probablemente no les guste… es una moda y las modas… pasan…
Bravo!
Totalmente de acuerdo contigo, Juan. Quien no conoce la historia esta obligado a repetirla. Pretenden hacernos volver a los modelos en red.
Juan no se cuan profesional eres , pero lo que esta ocurriendo no es una moda , simplemente la selección natural esta actuando. Esto creo que podría ser una muestra de los ejemplos expuestos anteriormente y una aportación propia.
Un blog y MySQL no es lógico , la frase que invocamos es «matar moscas a cañonazos»
Un RDBMS no funciona correctamente en infraestructuras con un numero de cores elevados , mal que nos pese Oracle corriendo en un SUN de 8 procesadores y 4 cores por procesador no es eficiente.
Y claro está un MySQL para un sistema almacenamiento bancario pues le costaría.
El protocolo LDAP no se pueden utilizar para gestión de datos con un indice alto de escritura y bajo de lectura ya que estamos perdiendo rendimiento.
Todos tenemos un pie en el que cojeamos y por tanto los diseños que implementamos también , eso no quiere decir que estén mal sino que posee la especialización que deseamos.
Claro que las relacionales no van a desaparecer, pero tampoco es para decir que NoSQL es una moda, si acaso el nombre que le han puesto. Sí es verdad que trae consigo bastante hype, pero tienen un uso muy claro: grandes sistemas (con millones de entradas), con baja latencia (normalmente servicios web) y que además requieren SENCILLA escalabilidad en previsión de un futuro crecimiento. Eso no lo ofrece MySQL, ni PostgreSQL ni Oracle. Sí existen algunas soluciones de bases de datos relacionales distribuidas, pero no son del todo escalables. Si fuese una moda ¿lo estarían usando Google (BigTable), Facebook (Cassandra, HBase), Yahoo (PNUTS, HBase), Amazon (Dynamo, SimpleDB)?, está claro que no es para todo el mundo, pero si tiene su nicho de mercado bien claro.
Pingback: NoSQL, el movimiento en contra de las bases de datos como las conociamos | Tu código fuente