Hosting WordPress Webempresa

Qué es MySQL

por | Dic 10, 2021 | Herramientas y servicios

Qué es MYSQL

Cuando uno lleva un tiempo trabajando de administrador de sistemas y dando atención a usuarios, al final acaba acumulando una cantidad de anécdotas bastante importante.

En mi caso, una de mis favoritas ocurrió hace unos años trabajando un fin de semana. Un usuario me envió un correo de sólo 8 palabras; lo recuerdo como si fuese ayer, decía así:

“¿Cómo va eso de las bases de datos?”

“Cómo va eso de las bases de datos” … mientras lo leía por tercera vez, mi cabeza viajaba en el tiempo y volvía a mis años de estudio, y a las dos asignaturas cuatrimestrales llamadas “Bases de datos I y II” que tuve cuando estudiaba. Montañas de apuntes, largas prácticas, exámenes … Se me hace difícil imaginar una pregunta más corta que necesite una respuesta más larga 😅

Aquella vez me limité a explicarle al usuario cómo crear y utilizar bases de datos en WePanel, y recuerdo que quedó satisfecho porque realmente es lo que le interesaba.

Pero siempre me quedé con la espinita clavada; ¿es posible explicar qué son y cómo funcionan las bases de datos, y más en concreto MySQL … sin necesidad de 8 meses de estudio y muchos litros de café?

Es un reto importante, pero aquí hemos venido a jugar. Así que juguemos 🙂

Ejemplo plantilla

 

Objetivo de este artículo

 

Explicar qué es MySQL pasa necesariamente por explicar qué es una base de datos, y como decía, eso es material de estudio para varios meses.

Hoy pretendo hacer una aproximación puramente teórica, lo más amena y didáctica posible, al mundo de las bases de datos. Mi objetivo es que alguien que solo sabe que las bases de datos “existen”, al terminar de leer este artículo sepa también “por qué” existen, y qué papel juegan dentro del mundo de la informática.

Ésto lo haré a través de MySQL, uno de los sistemas de gestión de bases de datos más utilizados del mundo.

En este artículo no esperes ver un tutorial de cómo trabajar con bases de datos … para eso tenemos otras guías mucho más prácticas. Aquí voy a centrarme en la teoría, en los conceptos.

Si tienes conocimientos avanzados sobre MySQL y bases de datos seguramente … bueno, seguramente no leas este artículo 😂

Pero si lo haces es posible que veas algunas imprecisiones; están ahí porque en este contexto me parece más importante que el contenido sea accesible a la mayor cantidad de público posible, que mantener unos estándares de precisión técnica especialmente altos.

¡Espero que no te importe! 🙂

icono bombilla programar

Qué es MySQL

Empecemos planteando la pregunta que queremos contestar: “¿Qué es MySQL?“. La respuesta es la siguiente ( fresquita de la Wikipedia ):

MySQL es un sistema de gestión de bases de datos relacional

¿Quedó claro? Pues hala, se acabó el artículo. Gracias por venir.



Que noooooo, que es broma 😂. Esta definición está muy bien y tal … pero nos obliga a resolver otras tres incógnitas:

  • ¿Qué es una base de datos?
  • ¿Qué es un sistema de gestión de bases de datos?
  • ¿Qué significa “relacional”?

Así que vamos por partes; si resolvemos estas tres cuestiones sabremos lo que es MySQL 😉

 

¿Qué es una base de datos?

 

Los programas informáticos normalmente necesitan guardar información a largo plazo. Por ejemplo, un blog tiene que guardar el texto de los posts, un videojuego tiene que guardar la partida para poder continuar cuando lo reinicias, tu sistema operativo tiene que guardar qué iconos tienes en el escritorio y cuáles no … o sea, hablamos de información persistente, información que tiene que seguir ahí y no perderse aunque apagues la máquina en la que está.

¿Y dónde se debería guardar la información persistente? Bueno, quizá lo primero que se te podría venir a la cabeza es “en un fichero“, ¿no?

Al fin y al cabo es algo que hemos hecho todos, apuntar algo en un fichero de texto para no perderlo; además, si guardamos ese fichero, cuando apagamos el ordenador luego el archivo sigue ahí así que podríamos considerarlo “persistente”.

Pues sin ir más lejos ese fichero sería una base de datos.

En general podemos decir que una base de datos no es más que una colección de datos que tiene sentido guardarlos juntos. Por poner un ejemplo, imagina que tienes una aplicación que controla las cuentas de los clientes de un banco y tienes a varias personas con sus correspondientes saldos; lo puedes apuntar en un fichero:

Pues esa sería tu base de datos de clientes/saldos. Una base de datos muy muy simplona, pero una base de datos al fin y al cabo.

 

¿Qué es un sistema de gestión de bases de datos?

 

De entrada el método de guardar la información en un fichero no parece malo: es simple y barato, y parece efectivo. Pero como siempre los problemas aparecen después, cuando pasan cosas inesperadas; vamos a verlo a través de un ejemplo utilizando esa base de datos de clientes y saldos.

Una de las operaciones más básicas que se puede hacer con el dinero es transferirlo. Imagina que Juan le quiere transferir 200€ a Manuel, y tú tienes que programar esa operación. Teniendo en cuenta que no puedes hacer dos operaciones a la vez, ¿cómo lo harías? Bueno, habría dos formas:

  • Primero le quitas 200€ a Juan, y luego le sumas 200€ a Manuel
  • O primero le sumas 200€ a Manuel y luego le quitas 200€ a Juan

Al final da igual de una forma que de otra, así que me voy a quedar con la primera. Los datos se irían modificando más o menos así:

 

  • Primero tienes las cuentas tal cual:
  • Le quitas los 200€ a Juan:
  • Y por último se los sumas a Manuel:
  • Hasta aquí todo bien, estás usando un fichero y parece que funciona correctamente. Pero … ¿qué pasa si se va la luz entre los pasos 2 y 3?

    O sea, si le puedes quitar los 200€ a Juan … pero no se los puedes sumar a Manuel. Cuando vuelva la electricidad y podamos arrancar de nuevo el ordenador nos vamos a encontrar con que nuestra base de datos está así:

    ¡¡¡ Han desaparecido 200€ !!!

    Nos acabamos de encontrar con lo que llamaríamos un estado inconsistente. O sea, algo ha ido mal y ahora mismo los datos están corruptos; ya no podemos fiarnos de la información que tenemos guardada en el fichero. Y Juan no va a estar NADA contento.

    Éste es solo un ejemplo básico, pero viene a ilustrar cómo todo puede ir muy mal muy rápido si no tratamos bien la información; los datos que se guardan y manejan son importantes, pero igual de importante es cómo se guardan y cómo e manejan.

    Bien, pues los sistemas de gestión de bases de datos ( SGBD por sus siglas en español, o DBMS por sus siglas en inglés ) vienen a solucionar este tipo de problemas. Son sistemas de manejo y almacenamiento de información que ofrecen mecanismos para evitar este tipo de problemas, y muchos más.

    ¿Y cómo lo hacen? Pues la forma exacta depende de cada SGBD ( quédate con este nombre, SGBD, porque lo vamos a usar mucho a partir de ahora ), pero hay unas pautas que se conocen como ACID, por sus siglas en inglés, que se suelen seguir:

    • Atomicity: Los cambios en una base de datos se organizan en “transacciones“, o sea, en “paquetes” de operaciones.

      Por ejemplo la transferencia de dinero de la que hablábamos antes sería una sola transacción, que se compone de varios pasos ( quitar dinero, sumar dinero … ). Bueno, pues la atomicidad garantiza que cada transacción termina bien o termina mal, pero siempre termina ( nunca se va a quedar a medias ).

    • Consistency: Para garantizar consistencia, si una transacción termina mal todos los cambios que ha provocado deben deshacerse, para dejar la base de datos como estaba al principio.

      En nuestro ejemplo de antes, la consistencia indicaría que si le hemos quitado el dinero a Juan pero no hemos llegado a sumárselo a Manuel, habría que dejar la base de datos tal como estaba antes de quitárselo a Juan.

    • Isolation: Aislamiento; cada transacción debe ser completamente independiente de las demás mientras se está ejecutando.
    • Durability: La durabilidad indica que los cambios pendientes en una base de datos deben guardarse, para poder aplicarse de forma consistente en caso de que haya que recuperar el sistema de una caída.

    Pero claro, si vamos al detalle hay muchas formas de llevar a cabo estas pautas ACID. Por eso existen muchos SGBD diferentes en el mercado, porque aunque siguen los mismos principios, cada uno hace las cosas de forma distinta.

    Algunos ejemplos de los SGBD más utilizados:

     

    ¿Qué significa “relacional”?

     

    En el ejemplo que vimos antes teníamos dos “tiposde datos: el nombre del cliente y el saldo que tiene en cuenta.

    De hecho, si le añadimos también un número de cuenta único a cada uno ( como tienen todos los bancos ) y hacemos una pequeña transformación …

    De repente tenemos una “tabla“; o sea, información guardada en filas y columnas.

    Ahora imagina que queremos guardar también algunos datos de los clientes, como sus apellidos; podríamos hacer otra tabla diferente:

    Fíjate en que cada cliente tiene un “ID” ( identificador ) único; lo hacemos así porque dos clientes podrían ( potencialmente ) tener los mismos nombre y apellidos, y ser dos personas diferentes.

    Ahora vamos a ajustar un poco la tabla de “Cuentas” para poner a cada cuenta un identificador de propietario, en lugar de un nombre. Nos quedarían estas dos tablas:

    Pues estas dos tablas están relacionadas, ya que comparten una columna, el identificador de cliente. O sea, esa columna establece una relación entre las dos tablas, y permite trabajar con la información de ambas de forma estructurada.

    Bueno, pues ésto es un sistema de gestión de bases de datos relacional; un sistema en el que la información se organiza en tablas, y esas tablas están relacionadas entre sí.

    En contraposición a los sistemas relacionales existen los sistemas NO relacionales. En ellos la información no se guarda en tablas y columnas, si no … en otras estructuras diferentes. En este artículo no voy a profundizar en el tema porque tiene su miga, pero quizá lo veamos en el futuro 😉

    De momento baste decir que en general, los sistemas relacionales y no relacionales tienen sus pros y sus contras, pero ahora mismo se utilizan mucho más los sistemas relacionales. Y MySQL es uno de ellos.

     

    Otras características clave de MySQL

    Perfecto, ya sabes qué es MySQL: un SGBD relacional. Ahora vamos a comentar algunas otras características que tiene, para darle un poco más de contexto.

     

    Sistema de licencias

    MySQL es un SGBD bastante veterano; se lanzó inicialmente en 1994 a través de una empresa llamada MySQL AB, que luego fue comprada por Sun Microsystems en 2008, que luego fue comprada por Oracle en 2010 … en fin, que ha pasado por muchas manos.

    Debido a ésto la forma de comercializar MySQL ha ido cambiando, según sus distintos dueños le han querido dar un enfoque más libre o más privativo. En la actualidad MySQL se distribuye en dos versiones: Community que es gratis, y varias versiones Enterprise que son de pago.

    Pero independientemente de la versión que se use, la mayor parte del código que compone MySQL es propiedad de Oracle ahora mismo; o sea, es código abierto ( cualquiera puede verlo ), pero no es código libre ( no puedes usarlo para lo que quieras sin permiso del propietario ).

    Ésto no ha gustado a muchos desarrolladores de MySQL defensores del código libre, por lo que en 2009 se creó un fork ( un proyecto derivado de MySQL ) llamado MariaDB. MariaDB es un SGBD de código libre muy muy compatible con MySQL; de hecho, es TAN compatible con MySQL que muchas veces se confunden y se usan indistintamente, a pesar de que no son exactamente lo mismo.

     

    Estándar de la industria

    Según https://db-engines.com, MySQL es de largo uno de los SGBD más utilizados del mundo, junto con Oracle y bastante a la par con Microsoft MySQL Server.

    Es una de las ventajas de ser veterano; hay mucha gente con conocimientos de este sistema y mucha documentación, tanto en línea como en forma de libros, cursos y certificaciones.

    Con el paso del tiempo otros sistemas van ganando popularidad ( por ejemplo muchos sistemas NO relacionales, pero como decíamos ésto igual lo vemos en otro artículo ), pero a día de hoy MySQL sigue siendo una apuesta más que segura en el mundo de los SGBD.

     

    Cliente-servidor

    MySQL funciona con una arquitectura de cliente-servidor. Es decir, las bases de datos están alojadas en un servidor de bases de datos, y las aplicaciones deben conectarse a ese servidor para trabajar con esas bases de datos.

    Este tipo de arquitectura tiene múltiples ventajas: por ejemplo permite que una sola aplicación utilice varias bases de datos a la vez, también hace posible que se puedan mover todas las bases de datos a una máquina diferente y dejar las aplicaciones cliente en el servidor original si fuese necesario … en cierto sentido independiza el almacenamiento de datos de la lógica de las aplicaciones.

    Un ejemplo muy claro es WordPress. Cuando instalas esta aplicación manualmente tienes que decirle qué base de datos quieres que utilice, especificando un nombre de servidor al que debe conectarse, un nombre de usuario, etc … Los ficheros de WordPress serían el “cliente” en este caso.

    Ojo, la aplicación cliente y el servidor de bases de datos pueden estar dentro de la misma máquina física sin ningún problema; pero es importante saber que son dos “entidades” separadas.

    Tú puedes eliminar la aplicación cliente ( por ejemplo, borrar los archivos de WordPress ) y la base de datos puede seguir ahí disponible sin problema para que la use otra aplicación diferente, o simplemente para guardarla como backup.

     

    Seguridad

    Como decía antes, para que una aplicación pueda trabajar con una base de datos debe conectarse al servidor correspondiente. Y para hacerlo debe utilizar un usuario correcto, con su contraseña.

    Y no solo eso: el usuario que utilice debe tener los privilegios correctos sobre la base de datos con la que quiere trabajar ( no todos los usuarios pueden acceder a todas las bases de datos del servidor ).

    Por todo ésto ( y por más cosas ) MySQL tiene un nivel de seguridad muy alto, algo importante en cualquier sistema que se vaya a encargar de almacenar y gestionar información.

     

    SQL

    Las siglas a veces no hacen más que complicar las cosas. MySQL, SQL Server, PostgreSQL … todos éstos son SGBD diferentes. Pero sus nombres tienen algo en común: eso es, SQL.

    ¿De dónde viene eso de SQL? Bueno, las siglas significan Structured Query Language, y es el nombre de un lenguaje diseñado específicamente para trabajar con bases de datos. Es desarrollado y mantenido por ANSI ( American National Standards Institute ), y tiene como objetivo tener un lenguaje estándar para poder utilizar cualquier SGBD.

    ¿Y todos los SGBD siguen este estándar? Pues … ninguno lo hace 😅

    O al menos no completamente; es un estándar muy amplio y dependiendo de la implementación de cada SGBD puede ser muy difícil seguirlo a pies juntillas.

    Sea como sea, lo que lo que debe quedarte claro es que una cosa es SQL ( el lenguaje, en el que no profundizaremos en este artículo ), y otra cosa diferente son todos los SGBD que tienen “SQL” en el nombre.

    ¿Suena raro? Sí, pero recuerda que Apple no vende manzanas precisamente, aunque las lleve en el nombre 🍎

     

    Conclusiones

    Vuelve a leer la definición de MySQL de la Wikipedia:

    MySQL es un sistema de gestión de bases de datos relacional

    ¿A que ahora ya tiene más sentido?

    MySQL es un SGBD que lleva trabajando entre bambalinas en Internet desde hace más de 25 años, y muchas de las páginas web y aplicaciones que conoces son posibles gracias a él. No es exagerado decir que es una de las piedras angulares de Internet tal y como lo conocemos hoy en día.

    Espero que tras leer ésto te hayas formado una idea un poco más clara de cómo funciona el almacenamiento de datos en el mundo de la informática.

    ¡Nos vemos en el próximo artículo! 😉

    Hosting WPFácil