Oferta SiteGround Black Friday

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

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en los emoticonos para valorarlo!

Promedio de puntuación 4.8 / 5. Total de votos: 26

Hasta ahora ¡no hay votos!. Sé el primero en valorar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en las redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Ayúdame a mejorar este contenido!

Por favor, dime, ¿cómo puedo mejorarlo?

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

AVISO: Esta publicación es de hace 3 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. ¡Ah! ¿te funciona? pues entonces no he dicho nada :)

Sobre el autor

8 comentarios en “Cómo WordPress utiliza MySQL”

  1. Estoy en ello

    Lo primero felicitarte por el sitio, el cual sigo por RSS desde hace mucho tiempo.

    Estoy intentando aprender php y Mysql. La recomendacion es utilizar la extensón MySQLi o PDO para realizar la conexión con la BBDD.

    Pero ¿que extensión utiliza wordpress? ¿la nativa que esta «deprecated»? Si es esta extensión entonces no debe estar tan «obsoleta» ¿no?

  2. Carla Mannino

    Hola, excelente tu blog!!!

    Quisiera saber si podes sacarme una duda, estoy haciendo una importación masiva de datos por medio de phpmyadmin a la tabla wp_posts, porque necesitaba cargar las noticias que tenia en una página vieja que no estaba diseñada en wordpress. La importación funcionó muy bien y veo todos los posts en mi bandeja de entradas de wordpress, el problema es que no logro que quede la url para cada post, entonces no se pueden visualizar. Tendrías alguna idea de cómo resolverlo?

    Muchas gracias!

  3. Necesito hacer un traslado de mi dominio.
    Como me aseguro que va todo al nuevo sitio incluida la base de datos MySQL?
    Mil gracias

  4. Saludos estoy haciendo una aplicacion para que inserte una pagina mediante codigo, es una entrada pero esta lleva ciertos parametros, la pagina ya le inserte en la tabla de post, option postmeta, pero cuando le doy previsualizar no me lo permite, sera que existe otra tabla que haya dejado por fuera.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información base sobre privacidad:
- Responsable: Fernando Tellado ([email protected])
- Fin del tratamiento: Moderación de comentarios para evitar spam
- Legitimación: Tu consentimiento
- Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal
- Derechos: Acceso, rectificación, portabilidad, olvido

 

Scroll al inicio