Decidí que después de lo que dije ayer de las bases de datos, es mi deber explicarme un poco más. ¿Por qué no me gustan las bases de datos? Porque es una burbuja dentro de la computación. Porque es la solución imperfecta que encontramos ante la súbita idea de que los datos son quizá más importantes que lo que hacemos con ellos. Porque no juegan bien con el resto del mundo.
Te explicaré lo de burbuja. En la computación tenemos otra forma de guardar datos aparte de las BDs, se llaman file systems. Estoy seguro que los conoces, aunque quizá no te hayas percatado de la redundancia. Pregúntate cuál es la razón para mantener 2 ideas tan parecidas. De hecho hay plataformas que no las separa, pero ese es un tema aparte. Lo que yo veo de diferencia es que una tiene SQL y la otra miles de lenguajes. Un lado tiene una estructura predefinida y otra es un jardin donde la hierba crece silvestre. El SQL no es turing completo, quizá sea por la misma razón que las tablas permanecen funcionando como las cadenas en la era de C.
Así como los primeros ingenieros no se habían percatado de que todos los programas son propensos a tener bugs; así mismo, nadie estaba preparado para el paradigma de guardarlo todo. El data mining, si lo piensan, es una idea muy interesante pero trágica. Es aceptar que no somos capaces de vislumbrar el valor de las cosas. Es decir, la mayoría de lo que guardo es inútil, pero con que encuentre una cosita, con eso habrá valido la pena.
Quiero pensar que estos 2 últimos puntos demuestran el valor de las BDs, después de todo sí son útiles. ¿Pero entonces por qué las descalificas o las haces menos? Porque son respuestas buenas, pero no nos podemos conformar con eso. El MapReduce no resuelve lo que las BDs, pero sí arroja luz de que hay aun espacio no explorado. Hay una solución que no es una BD pero que permanecerá al alcance de la mano, sólo que no nos hemos enfocado, por la luz que representa las BDs.
Veamoslo de otra forma, un problema serio que tengo es la separación entre la BD y el código. La BD NO está versionada. Los procedimientos almacenados escapan de la mente de algunos developers. Los constrains no existen en todas las BDs. Algunos quieren triggers y otros no se percatan cuando ocurren. Usar BDs es casi una labor de outsourcing. Afortunadamente están apareciendo cosas que hacen que el abismo este más cerca. Pero no es suficiente. Y por eso debemos de mantenernos en contra de las BDs, no vaya el mundo a creer que no hay de otra.