Cómo WordPress utiliza MySQL

base de datos wordpress

La base de datos de WordPress, y en definitiva MySQL, suele ser la última frontera para todo usuario avanzado, ese último recurso al que acudir cuando todo lo demás falla. Parece intimidante así que es mejor conocer bien la relación entre WordPress y MySQL.

Resumiendo, se puede decir que una instalación de WordPress se puede dividir en dos partes fundamentales:

  • Los plugins, funciones y el tema, que son lo que definen el aspecto y funcionamiento de la web creada con WordPress
  • La base de datos MySQL que almacena todo el contenido y hace que todo funcione

Pero comencemos por el principio …

¿Qué es MySQL?

mysql

MySQL es  un sistema de bases de datos realmente potente, pero este sistema de almacenamiento y funcionamiento de WordPress aúna robustez y ligereza. Una de las mejores cosas de WordPress es que es un CMS que utiliza todo el poder de la gestión de la base de datos pero oculta al usuario final. En realidad los usuarios, ni siquiera los diseñadores de WordPress, necesitan saber cómo funciona la base de datos. Sin embargo, si quieres comprender cómo funciona WordPress sigue leyendo.

Para empezar hay que explicar un poco qué es MySQL, y se puede describir fácilmente como un sistema de gestión de bases de datos relacionales, para que lo entiendas, como una especie de Microsoft Access o Filemaker para gestión de datos en aplicaciones web.

Otro modo simple de describirlo sería que es un contenedor diseñado para gestionar y ejecutar un Idioma de Peticiones Estructuradas, o Structured Query Language (SQL). SQL es, en definitiva, lo que crea la base de datos, controla la estructura y forma de la base de datos, además de grabar cualquier añadido, borrado o modificación del contenido de cada uno de los elementos de la base de datos.

¿Cómo funciona MySQL?

relaciones mysql wordpress

SQL se organiza en tablas de información. Algo parecido a una hoja de cálculo de Excel para que lo entiendas, con filas y columnas donde almacenar información con una estructura concreta. Sin embargo, al contrario que en Excel, las columnas (llamadas claves o campos) de una base de datos SQL están predefinidas y categorizadas con anterioridad.

La estructura concreta, las columnas de las tablas de WordPress se definen previamente, y no cambian aunque el sitio crezca a menos que un plugin o una actualización del núcleo la cambie. No solo se definen previamente las columnas sino también el tipo de columna, antes de almacenar nada en ellas. Elementos como los números (INT o integradores), cajas de texto (TEXT o VARCHAR) y otros (DATETIME para  almacenar fechas y horas) están predefinidos en la base de datos. Si WordPress, o un hacker, trata de añadir información a la base de datos en un patrón no preestablecido la base de datos no aceptará la inclusión de esas información o datos.

Otra importante característica de las bases de datos SQL es que sean relacionales.

Tanto las tablas SQL como las claves concretas de una tabla pueden relacionar otras claves y tablas. Esto permite a los usuarios crear bases de datos íntimamente relacionadas con otras, lo que implica una mejor organización y una mayor eficacia.

Pongamos, por ejemplo, que quieres crear una base de datos de tuits para revisarlos en un futuro. Podrías crear una tabla que contenga información sobre tuits concretos que hayas guardado, como el contenido de los tuits, cuántos favoritos hay o lo que quieras. Puede que también quisieras guardar información acerca de quien publicó el tuit, cuántos seguidores tiene o lo que sea.

Pues bien, usando bases de datos relacionales puedes crear una tabla para cada tuit que contenga toda la información sobre tuits concretos, y luego crear una tabla para el usuario que contenga toda la información sobre la persona que envió ese tuit en cuestión. Luego puedes relacionar las claves de las dos tablas para que la base de datos, y en consecuencia tú mismo, pueda saber qué usuario está asociado a qué tuit.

Del mismo modo, WordPress utiliza tablas para relacionar montones de datos. Por ejemplo, la tabla wp_posts contiene toda la información relevante relativa a cada entrada creada en WordPress, y la tabla wp_comments contiene cada comentario que alguien haya dejado en alguna entrada de WordPress, pero wp_posts y wp_comments son dos tablas diferentes de la misma base de datos. Lo que hace WordPress es crear una relación entre determinadas claves de las tablas wp_posts y wp_comments para saber qué comentarios pertenecen a qué entradas.

Esta estructura de base de datos y de tablas se crea dentro de una base de datos MySQL desde el primer momento en que instalas WordPress. A partir de ese momento WordPress simplemente manipula los valores y filas de cada tabla para hacer que el sitio web sea operativo.

Por ejemplo, cuando creas un nuevo usuario, se añade una fila que contiene toda la información sobre el usuario (nombre de usuario, contraseña, permisos, etc) a la tabla wp_users. Cuando un usuario intenta acceder, WordPress accede a la base de datos y revisa que coincidan la información facilitada en la pantalla de acceso con la contenida en la base de datos. Si no concuerdan no se acepta el acceso.

Cómo utiliza MySQL la cache

cache mysql wordpress

El mismo concepto anterior se aplica a las entradas: cuando escribes y guardas una entrada nueva WordPress lo almacena en una fila de la tabla wp_posts de la base de datos. Es importante saber que también ocurre en sentido inverso: cuando una persona que visita una web accede a una página que tiene contenido WordPress tiene que acceder a la base de datos, obtener la información de las tablas y mostrarla en pantalla. Si son pocos visitantes un servidor del montón será suficiente, pero si hay mucha gente queriendo ver el contenido al mismo tiempo WordPress y la base de datos puede que no sean capaces de gestionar todas las peticiones requeridas y que el sitio se ralentice o atasque. De ahí la importancia de utilizar algún sistema o plugin de cache.

Hay que comprender el concepto de coste computacional. En este caso no implica gastar más dinero o alquilar más servidores, sino que hay que evaluar los distintos factores que afectan a la velocidad de computación, como el tiempo, la memoria disponible y el número de operaciones de disco que se deben realizar.

MySQL almacena toda esta información en una base de datos que está en un disco duro del ordenador donde está instalada. Y no es un sistema pequeño o frágil, pues tiene una gran resistencia a los fallos, gran capacidad de almacenamiento y no acapara la memoria del ordenador donde esté instalada como harían otros sistemas de gestión de base de datos. MySQL es un sistema realmente eficiente, estable y seguro.

Sin embargo, la estabilidad de MySQL tiene un coste: la velocidad. El hecho de que WordPress acceda continuamente a las mismas claves de la base de datos una y otra vez debe verse como un coste “caro“. Conlleva un alto coste de computación acceder a la bases de datos, realizar una operación de disco, recuperar los datos y mostrarlos.

Los sistemas de cache son una gran solución a este problema. Lo que hacen es tomar la muestra final en HTML de cada tipo de petición y lo almacena durante un breve espacio de tiempo, de 30 segundos o así. Si alguien quiere ver la misma página el motor de cache servirá la página ya almacenada en HTML, evitando todo el proceso de interactuar con la base de datos.

Es por esto que es tan importante instalar plugins de cache en WordPress o utilizar algún servicio de alojamiento que gestione la cache por ti. Si alguna entrada llega a portada de grandes portales como menéame o Reddit tu sitio se resentirá gravemente si no usas algún sistema de cache, ya que tendrás muchos usuarios, en un corto espacio de tiempo, queriendo ver  un mismo contenido, y cada visita requerirá un “costoso” proceso de peticiones de información a la base de datos.

Las 11 tablas MySQL de WordPress

tablas mysql wordpress

Aunque ya vimos hace tiempo en detalle las tablas de la base de datos de WordPress, no está de más hacer un repaso de estas 11 tablas básicas para comprender, finalmente, cómo funcionan y su importancia:

  • wp_commentmeta – Cualquier metadato asociado a los comentarios, como claves y valores, se almacenan en esta tabla. No contiene metadatos de autores o fechas, pero sí otros datos que WordPress utiliza ocasionalmente. Está íntimamente relacionada con la tabla wp_comments.
  • wp_comments – Esta tabla contiene todos los comentarios que se hacen en entradas o páginas de WordPress, así como información relacionada como el autor, su dirección de correo electrónico y la entrada en la que se dejó el comentario.
  • wp_links – Esta tabla se utiliza para almacenar la información de los enlaces del blogroll de WordPress. Aunque a partir de la versión 3.5 de WordPress desapareció el blogroll la tabla aún sigue ahí por si lo quieres activar.
  • wp_options – Cualquier opción que hayas modificado en el panel de ajustes se almacena en esta tabla..
  • wp_postmeta – Al igual que wp_commentmeta, wp_postmeta incluye información adicional y opcional, en este caso de las entradas. Salvo en temas que requieren almacenar shortcodes propios y cosas así es una tabla que no se usa mucho.
  • wp_posts – wp_posts contiene toda la información de las entradas y sus datos asociados. Esta tabla es quizás la más  utilizada pues contiene todo el contenido del sitio.
  • wp_terms – Esta tabla almacena las etiquetas y categorías con las que se organizan las entradas.
  • wp_term_relationships – Esta tabla es la responsable de mantener las relaciones entre las entradas y las etiquetas y categorías que tengan asociadas. También está relacionada con la tabla wp_term_taxonomy.
  • wp_term_taxonomy – Esta tabla relaciona qué tipo de taxonomías se asocian a las entradas. Está relacionada con wp_terms y wp_term_relationships, registrando asociaciones entre categorías, etiquetas, etc.
  • wp_usermeta – Otra tabla meta, wp_usermeta almacena cualquier metadato adicional y opcional asociado a la tabla wp_users.
  • wp_users – wp_users contiene todos los datos de los usuarios registrados en WordPress, incluyendo información como los nombres de usuario, permisos y contraseñas.

 

MySQL puede parecer intimidante en un primer acercamiento pero está tan bien adaptada en WordPress que funciona de un modo rápido y eficaz. Sobre todo es importante conocer su funcionamiento, coste y relaciones para que sepas qué hay detrás de cualquier instalación de WordPress, y es absolutamente imprescindible para desarrolladores de plugins y funciones.

Si la próxima vez que estés trabajando con WordPress piensas en ello como una fuerte estructura de base de datos MySQL que hace que funcione, estarás más cerca de comprender el funcionamiento de tu web, hacer que sea más rápido y más seguro.

Fuente: FlyWheel

AVISO: esta publicación es de hace dos años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado.

VALORA ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
FlojitoNo está malEstá bienMe ha servidoFantástico (21 votos, promedio: 4,81 de 5)
Cargando…

Autor: Fernando Tellado

Fernando Tellado, apasionado de WordPress, profesor, consultor y ponente. Maquero cansino, padre de tres hijos y de una perrita Beagle, Bilbaíno de nacimiento, Español de corazón y ciudadano de donde me quieran. Autor del libro WordPress - La tela de la araña. Mi blog personal es Navegando con red, donde he crecido como escritor en la red y ofrezco mis visiones acerca de la Web 2.0 y la blogosfera.

Comparte esta entrada en
468 ad

Pin It on Pinterest

Share This
Ir al contenido