Uso y abuso de bases de datos en aplicaciones web | Loogic Startups

oracleNadie concibe una aplicación web sin base de datos, y la más utilizada sin duda es MySQL. A esto ha contribuido enormemente la relación de MySQL con PHP, lenguaje que se ha impuesto por su facilidad de escritura (mal o bien pero sencillo).

mysqlEn el mundo de los CMS que tanto se han diversificado y tantos se han desarrollado y se pueden usar de forma gratuita, han popularizado el conocimiento básico de bases de datos.

Yo he trabajado sobre todo con SQLserver y MySQL, y algo con Oracle (además de algunas otras menos populares y más específicas de otros entornos no web).

Cada vez más he tenido la sensación de estar en un entorno de trabajo en el que se abusa de las bases de datos. Y las pruebas que para mí lo confirman son estas (en cualquier orden):

  • Amazon ha desarrollado su propio motor de base de datos simplificado para ofrecer servicios
  • Yahoo (por mencionar un grande) dispone (o disponía, hace tiempo que no sigo el tema) de una base de datos de lectura y otra de escritura para poder sopotar la carga sobre las mismas. Ésta es una práctica relativamente habitual.
  • WordPress, el CMS para blogs (y muchas más cosas)  más popular muere (y no es una metáfora) por la base de datos.
  • Los buenos diseñadores de estructuras de bases de datos primero normalizan (estandarizan y estructuran de acuerdo a las normas de orden y coherencia de datos) y cuando todo cumple las reglas de estructura, empiezan a desnormalizar para que el monstruo que se ha creado pueda funcionar en entornos reales y no sólo sobre el papel.

¿Disponemos de alternativas a una base de datos? ¿Cuándo podemos decir que estamos abusando de la base de datos?

Hay dos abusos diferentes, uno es el de almacenaje, y otro es el de consulta. El de almacenaje es muy claro, en cuanto la cantidad de datos sea de varios miles necesitaremos una base de datos para gestionarlos con comodidad y eficiencia. En general, aun con poca cantidad de datos una base de datos para gestión de los mismos siempre es buena opción, pero no tanto para la consulta.

¿Cuánto han agradecido los usuarios de WordPress que apareceieran plugins de caché? De lo que tratan es de reducir las consultas sobre la base de datos al mínimo. La paradoja para mí como técnico que busca la mayor eficiencia en una aplicación, es que la mayoría de las aplicaciones no disponen “de serie” de un sistema de reducción de consultas a base de datos para servir los contenidos web.

Y de esta forma, convertimos aplicaciones ligeras o moderadamente ligeras en mostruos comedores de recursos de servidor.

La alternativa para dejar de abusar de las bases de datos es el uso de archivos de texto, html y xml. El acceso al disco puede ser más o menos rápido, pero nos podemos ahorrar fácilmente el 80% de la carga de trabajo de la CPU del servidor.

Cuando desarrollamos un proyecto nuevo siempre decimos eso de “ya escalaré cuando lo necesite”, pero cuando lo necesitamos es tarde y no es tan rápido escalar las consultas a una base de datos. Como mínimo desde el primer momento debemos intentar optimizar las consultas que realizamos, para que sean lo más rápidas posibles y no soliciten campos de información que no vamos a utilizar.

Esto que parece algo evidente no lo es en muchísimos casos en los que por ahorrarse unos segundos de escribir los desarrolladores meten un asterisco (*) y leen todos los campos (a veces decenas) de una tabla de base de datos cuando sólo necesitan un par de ellos.

Y lo segundo que podemos hacer es cachear las páginas o las partes de las páginas que no cambian o cambian poco, tal como se hacía en los principios de internet, donde una web dinámica era un lujo por conocimientos de programación y por recursos de servidor.

Aún podemos hacer más. Esto quizá sea algo controvertido, y lo diré a modo de pregunta porque quiero vuestras opiniones: si sólo tengo que gestionar unos centenares de datos (equivalentes a registros en base de datos), y éstos van a cambiar con mucha frecuencia y a la vez los tengo que mostrar en web, ¿por qué no usar unos sencillos archivos de texto (almacén tipo csv o json), o xml para mantener esta información ahorrando miles de consultas a base de datos? Nosotros lo hacemos.


Te puede interesar:

  • Movable Type, the Web is in Motion Siempre habrá quien diga que todo esto son tontunas, modas pasajeras o cosas que solo usaran los frikis de internet. Ante estas apreciaciones yo lo que veo es que la gente cada vez usa […]
  • WordPress es el presente y el futuroWordPress es el presente y el futuro Comparando los datos de uso de gestores de contenido online (CMS) con los del año pasado, WordPress sigue creciendo año tras año siendo el líder muy por delante de los siguientes. En […]
  • Usando WordPress para desarrollar micrositiosUsando WordPress para desarrollar micrositios Encuentro en Blogging Tips un interesante artículo que me pareció interesante traer para acá, donde desglosan la utilización del cms favorito de muchos, WordPress, para la realización de […]