La informática llegó, y vino para quedarse. Con frecuencia es absorbida en formas exóticas, produciéndose extrañas y divertidas consecuencias. Por ejemplo, se cuenta que en cierta universidad, de cuyo nombre no logro acordarme, allá por los lejanos años noventa, una tesis doctoral realizada en la facultad de Informática, tenía muy pocas posibilidades de éxito si ésta contenía alguna referencia a la psicología. La multidisciplinariedad no estaba bien vista. El argumento era: "zapatero a tus zapatos". En la misma universidad, en cambio, una tesis en la facultad de psicología, decían, tenía asegurada la máxima calificación si incluía cualquier elemento informático; con bastaba nombrar el arcano SPSS y mostrar algunos diagramas de barras y tartas, a ser posible con sensación de profundidad en la tercera dimensión.
Esta anécdota me recuerda la existencia de departamentos de "Matemática Aplicada" en ciertas facultades. ¿Acaso la matemática no aplicada -o más bien, no aplicable- da como para formar con ello un solo departamento complementario? ¿Acaso no toda actividad es matemática aplicada? Lo mismo que toda actividad es "Física aplicada" y "Química aplicada", y según algunos, incluso "Economía aplicada". La informática es ciencia, y es aplicable. ¿Acaso la psicología no lo es?
Es mucho más importante saber qué es un travestí
que saber qué es una base de datos
En este artículo me propongo desterrar algunos mitos sobre las bases de datos en Internet. La mayoría de la gente no sabe qué es una base de datos. Esto es normal, ya que en nuestra sociedad, es mucho más importante saber qué es un travestí, o cuál es, en el año corriente, la compleja secuencia de movimientos corporales de obligado cumplimiento una vez suenen las primeras notas de la canción estival, que saber qué es una base de datos
Estimado lector: si no sabe Usted que es un Drag-Queen, o cómo se baila el aserejé, le recomiendo que detenga en este punto la lectura y corra a informarse. Suponiendo este aspecto solucionado, pasemos a lo nuestro. Aquello que habitualmente denominamos como "Bases de Datos" se trata en realidad de "Bases de Datos Relacionales". Antes existían otros tipos, pero actualmente están en desuso, así que ignoraremos el calificativo.
Una base de datos es, al menos, un conjunto de tablas. Una tabla es una estructura de datos bidimensional, es decir, organizada en filas y columnas, que contiene información sobre algún tipo homogéneo de entidades. Cada fila contendrá información sobre cada entidad, por ejemplo, cada fila tendrá los datos de un cliente. Cada columna contendrá información sobre cada tipo de datos distinto relativo a cada entidad, por ejemplo: nombre, teléfono, dirección, etc.
En los proyectos en Internet, a la hora de almacenar los datos, compiten principalmente dos soluciones: una de ellas es usar ficheros de texto; la otra, usar tablas de bases de datos. Existen más posibilidades, pero vamos a fijarnos por ahora en estas dos.
En informática y en la vida real, existen muchas situaciones que denominamos "de compromiso". Por ejemplo, una boda puede ser un compromiso. Preferimos no ir, pero decidimos hacerlo, para evitar complicaciones. En informática, preferimos utilizar poco disco duro, pero podemos gastar unos cuantos MB de más si eso mejora las cosas.
Existe un compromiso entre "velocidad de ejecución" y "necesidad de almacenamiento". Si queremos una buena velocidad, necesitaremos disponer cómodamente de los medios de almacenamiento. Si lo que queremos es ahorrar espacio, podremos hacerlo sacrificando la velocidad.
Un buen ejemplo de esto son los ficheros comprimidos: ocupan menos espacio, pero es más lento acceder a ellos [ Nota 3 ]. ¿Acaso comprime Usted todo su disco duro? ¿Acaso jamás usa ficheros comprimidos? No, Usted entiende las cualidades de una y otra alternativa, y utiliza ficheros comprimidos o sin comprimir en función de sus necesidades.
Se dice: "el experto no piensa. El experto sabe". De igual forma, un programa generador de tarifas de seguros que tenga pre-calculadas todas las posibles tarifas para todos (o casi todos) los posibles clientes, ocupará mucho espacio en disco, pero será muy rápido. Apenas piensa, pero sabe. En cambio, podemos evitar almacenar toda esa información, guardando únicamente los datos básicos y algunas reglas, para que un programa listo calcule, eso sí, más lentamente, el precio de cada seguro.
A la hora de elegir entre bases de datos y ficheros planos, nos encontramos con una de estas situaciones de compromiso. Las bases de datos no son más rápidas que los ficheros planos. No siempre. Leer un fichero de texto con 50 líneas puede ser 10 veces más rápido que leer un sólo registro de una base de datos. Las bases de datos son estructuras de datos rodeadas de multitud de utilidades interesantísimas: toda esta parafernalia las hace más lentas. A veces [ Nota 4 ].
Por ejemplo, las bases de datos controlan el acceso a sus datos, de forma que no permiten que dos procesos (o dos usuarios) accedan "más o menos a la vez" a los mismos datos, para cambiarlos. Los ficheros planos, en general, no permiten esto, y es posible (y ocurre a veces) que dos procesos, al acceder "más o menos a la vez" al mismo fichero de texto para modificar su contenido, producen un resultado no previsto.
Si en nuestra web utilizáramos un fichero de texto como contador de visitas, y tuviéramos la mala suerte (o buena según veremos a continuación), de que por casualidad dos procesos leyeran el contenido del fichero (9421), lo incrementaran en uno (9422) y lo escribieran "más o menos a la vez", nos podríamos encontrar con que el contenido del fichero es 94229422, lo cual es una forma notable de aumentar el tráfico contabilizado en nuestro sitio web.
Pero el control de accesos simultáneos no es "gratis", tiene un coste en tiempo de ejecución, y los contadores en Bases de Datos son mucho más lentos que los contadores en ficheros de texto. Ante picos de tráfico, la lentitud de los accesos a bases de datos pueden hacer que las páginas, simplemente, no estén disponibles por timeout.
Algo parecido es lo que parece que les ocurre (o les ocurría) a la mayoría de los programas gestores de banners. Muchas páginas no se cargan, al quedarse bloqueadas en la carga del banner. Y el banner no aparece porque antes de ser mostrado, el programa gestor de banners está ocupado almacenando en la base de datos una buena cantidad de información que describe quién hace qué, cómo, cuándo y dónde.
Evitaremos molestar a nuestros usuarios si el servidor almacena en rápidos ficheros de texto (llamados normalmente "ficheros de LOG") lo que el usuario hace y después, en momentos de baja carga, los fines de semana, por la noche, o si se quiere, por el día, pero al menos, en otro proceso paralelo, y no en el mismo proceso que sirve la página al usuario, se copia el contenido del fichero de texto, en la base de datos.
"Al que algo quiere, algo le cuesta", y con esta solución tal vez perdamos la disponibilidad inmediata de los datos. A cambio, tal vez ganemos clientes, que no es moco de pavo. Este es un buen ejemplo de la "parálisis del análisis" que sufren algunos mercados, muestra de su falta de madurez, lo que, lejos de ser inconveniente, representa un atractivo para inversores y emprendedores.
Los aficionados al binomio "libro y sillón" sabemos que una de las exigencias de la comodidad es tener las cosas a mano. Uno de los principales problemas de las bases de datos en Internet, es precisamente eso, que están en Internet. Es decir, que son remotas, que están "lejos" y que cuesta llegar a ellas. Por ahora, sigue siendo incómodo y lento actualizar datos en Internet, por mucho ADSL de que dispongamos.
Podemos establecer a un compromiso entre comodidad y disponibilidad realizando ciertas actualizaciones "en local", que luego serán cargadas en las bases de datos, aunque esto impida tener "actualizaciones inmediatas". Es mucho más cómodo trabajar con grandes listas numéricas en una hoja de cálculo (imaginemos, por ejemplo, que estamos preparando un presupuesto) que hacerlo en Internet. Una vez más, esto representa inmadurez, o lo que es lo mismo, oportunidades.
Las bases de datos tampoco son más cómodas por el simple hecho de ser bases de datos, estén o no en Internet. No siempre. Es más fácil y cómodo para un programador, leer y escribir ficheros de texto plano. Pero las bases de datos están más organizadas, son más claras. Si tenemos muchos tipos de datos distintos, es mejor usar bases de datos, aunque sólo sea por la claridad que éstas proporcionan. Modificar un programa para añadir dos o tres campos en varios ficheros de texto de unas doce columnas separadas por tabuladores, es un incordio. En este caso, es mucho mejor usar bases de datos.
Si tenemos una revista en Internet, podemos usar bases de datos para almacenar información de títulos, autores, temas, secciones, resúmenes, etc. Y por supuesto, también podemos almacenar el propio cuerpo de la noticia o del artículo en un campo de una tabla de una base de datos. Sin embargo, por lo general, esto hace muy incómoda la modificación de artículos y noticias, para los cuales son más adecuados editores de texto.
Algunos sistemas de gestión editorial que utilizan bases de datos, han optado por almacenar los cuerpos de las noticias en ficheros de texto plano, que pueden ser editados cómodamente, y luego subidos por FTP para generar, a partir de estos, los ficheros HTML.
Con este artículo, espero haber desterrado algunos equivocados mitos sobre las bases de datos en Internet. Un laxo criterio de la economía del esfuerzo me ha permitido servirme generosamente de refranes y de lugares comunes. Lamentaría que lo aquí expuesto formara parte de una nueva leyenda urbana. Con afán contradictorio, finalicemos con otro tópico candidato a frase lapidaria: "el experto es aquel que infringe sus propias reglas y con ello acierta". Hagamos caso de la experiencia, pero no olvidemos que en informática los contextos cambian con frecuencia. Las experiencias son recientes, o momias.
[1] Herrán Gascón, M. de la (2004). Aserejé y Bases de datos en Internet. REDcientífica. [ Volver ]
[2] Director de la publicación REDcientífica.com [ Volver ]
[3] Aunque sin duda se transfieren más rápidamente [ Volver ]
[4] Conscientemente evito discutir el tema de las ventajas del acceso típicamente indexado de las Bases de Datos, frente al acceso típicamente secuencial de los ficheros de texto. Simplemente diré que si Usted tiene una gran cantidad de datos, desea acceder a ellos rápidamente, y no quiere complicarse la vida, use Bases de Datos y no ficheros planos. Este consejo es casi como decir: Si Usted quiere comer bien, busque un restaurante caro. Más o menos funciona, y es sencillo de entender, pero no deja de ser una simpleza. [ Volver ]