Sin importar la aplicacion que desarrollemos siempre tendremos que considerar que sistema de base de datos utilizar, asi que como hay muchas opciones, entre privativas y Open Source, en este video me gustaría mencionar 7 bases de datos, que yo creo que muchos de ustedes se pueden encontrar y pueden considerar utilizar en algun momento.
Si tienen prisa la lista completa de base de datos es esta.
- MySQL/Mariadb
- Oracle
- Microsoft SQL Server
- PotgreSQL
- Mongodb
- Redis
- Sqlite3
Así que empecemos con la más popular, MySQL.
MySQL
Desarrollado en 1994 por los desarrolladores suecos Michael Widenius y David Axmark, luego adquirido por Sun Microsystems en el 2008 y finalmente por Oracle Corporation en el 2010. Sin duda MySQL es sistema de base de datos más popular del mundo, siendo ampliamente usado desde corporaciones privadas, proyectos open source, y ampliamente por plataformas de la web como Facebook, Twitter, Wikipedia, Slack, Airbnb, Uber, por nombrar algunos.
De hecho esta base de datos Open Source fue una de las principales para crear proyectos web, alla por los años 2000, debido a que formaba parte del Stack LAMP (Linux, Apache, MySQL, Php), un conjunto de herramientas Open Source que sirven para crear aplicaciones web de inicio a fin (aplicaciones fullstack). Y a pesar que este Stack ya es anticuado, MySQL sigue siendo siendo una parte fundamental de muchas aplicaciones grandes actualmente.
Tecnicamente MySQL es una base de datos Open Source relacional. Relacional quiere decir que sus datos sos guardados en una estructuras de datos llamadas Tablas y que estan relacionadas entre si, usando identificadores unicos o IDs.
Esto hace que una base de datos relacional como MySQL en diseño se vea de esta forma:

Aunque esto puede crecer a algo muy complejo llegando a verse así el modelo de datos:

Y esto no es solo para MySQL sino para todas las bases de datos relacionales (PostgreSQL, Oracle, Sqlite3, y otras) que mencionaré en esta lista
Algunos caracteristicas importantes de MySQL, es que ofrece:
- Amplia compatibilidad, Es decir al ser una sistema que lleva en desarrollo muchos años MySQL, posee una amplia variedad de soporte a distintos sistemas operativos; lenguajes de programación y plataformas, a tal punto que lo puedes instalar en maquinas muy potentes como servidores (x86-64) hasta pequeños dispositivos con tanto poder de computo como tu dispositivo movil (ARM), es decir puedes instalar MySQL hasta en un Raspberry Pi.
- Escalabilidad, es decir cuando tus usuarios aumenten, y tu sistema de base de datos necesita mas recursos, lo que puedes hacer es escalar MySQL tanto de forma vertical, es decir añadiendo más recursos de Hardware como CPU, almacenamiento, y RAM a un mismo servidor; o tambien podemos escalarlo horizontalmente, lo que significa que puedes tener multiples servidores para tus bases de datos y cuando necesites más recusros simplemene añades más de estos.
Y a pesar que MySQL se escala tipicamente de forma vertical, debemos saber que tambien hay algunas soluciones de software que te permiten escalarlo horizontalmente, entre estos tenemos a:
- MySQL Cluster: El cual es un software que se instala para complementar a MySQL para que pueda tener caracteristicas como replicación y particionamiento de MySQL.
- Percona XtraDB Cluster: Es una solución de base de datos distribuida que utiliza el motor de almacenamiento Percona XtraDB y la tecnología de replicación llamada Galera Cluster.
- MariaDB Galera Cluster: Es una solución de base de datos distribuida que se basa en el motor de almacenamiento InnoDB y la tecnología de replicación de Galera Cluster.
- Vitess: Es un sistema de base de datos distribuida y escalable que se enfoca en mejorar la escalabilidad de MySQL en entornos de nube y contenedores.
- ProxySQL: Es un proxy de base de datos que se utiliza para escalar horizontalmente MySQL, permitiendo la distribución de la carga de trabajo a través de varios servidores.
Aunque estas soluciones son para proyectos grandes que ahora busquen escalar más facilmente, por lo que si estas empezando o quieres ir por MySQL distribuido, tienes servicios como PlanetScale que te permiten con unos cuantos clicks crear bases de datos de MySQL en minutos, y obtienes una url para conectarte al instante.
Ahora MySQL tambien tiena una version alternativa o fork llamada MariaDB que es compatible con MySQL, y se creo para evitar que Oracle comprometa la filosofía de desarrollo de código abierto de MySQL, y lo deje de lado al tener este ya su propio Sistema de base de datos, Oracle.
Pero aun asi MySQL sigue siendo de las opciones más recomendadas al haber mucha informacion y muchas opciones para poder ir a producción facilmente usandolo. Asi que si estas considerando empezar con una base de atos relacional esta podria ser tu primera opcion.
Oracle
En 1970, Edgar F. Codd, un cientifico de la computacion que trabajaba en IBM, publico un paper titulado: Un modelo relacional de datos para grandes bancos de datos compartidos (A Relational Model of Data for Large Shared Data Banks), en donde establece lo que serian las bases para el desarrollo de las bases de datos relacionales e incluso propone un lenguaje de consulta para el modelo relacional, que se convirtió en el estándar de facto para la manipulación de bases de datos relacionales. Este lenguaje se llama Structured Query Language (SQL).
Esto inspira en 1977 a Lawrence Ellison en crear su empresa llamada Software Development Laboratories, que tiempo despues en el 1979, se renombro a Relational Software, Inc. (RSI) debido a que la empesa introdujo su primer sistema de bases de datos relacional (RDBMS) llamad Oracle V2 para dar una impresion de confianza, porque nunca hubo una version 1.
Ya en 1982, la empresa cambió su nombre por segunda vez a Oracle Corporation para reflejar su enfoque principal en el desarrollo y venta de software de bases de datos Oracle
Y Mientras MySQL es la base de datos más usadas en el Open Source, Oracle lo es el mundo empresarial, siendo usado por sistemas gubrnamentales, bancos, e instituciones privadas de todo tipo. De hecho su competidor directo seria Microsoft SqlServer, solo que este se ejecuta principalmente en Windows, y tambien tiene una version para Linux. Sin embargo Oracle si puede ejecutarse en una multiples sistemas basados UNIX, ademas de Windows.
Ademas que unido al hecho que Oracle tambien desarrolla herramientas de Java, como Java SE (Standard Edition), que incluye la máquina virtual de Java (JVM), el compilador de Java y las bibliotecas de clases estándar de Java, esto hace que simplemente desarrolle un ecosistema más completo para soluciones empresariales.
Microsoft SQL Server
Al igual Que Oracle es usado en entornos empresariales, y IBM tambien tiene IMB DB2, Microsoft en una linea similar ofrece SQL Server, el cual es un sistema de base de datos relacional propietario que se integra muy bien con el ecosistema de Herramientas, Frameworks y SDK que ya tiene Microsoft. como por ejemplo el Framework .NET (C#), Servidores IIS, dentr de Windows Server y demás. Aunque este puede ser integrado tambien con otros lenguajes como Python, Java, Javascript, R entre muchos otros, y actualmente tambien tiene soporte para poder ejecutarse dentro de Linux y contenedores de Docker. Lo que lo pone casi a la par de Oracle, practicamente.
SQL Server es usado en una amplia variedad de area de TI, desde procesado de transacciones, business inteligence, hasta analiticas.
Y debido a que trata de considerar empresas de distintos tamaños, Microsoft ofrece diferentes ediciones de SQL Server, como:
- SQL Server Express: Es una edición gratuita y limitada de SQL Server que está diseñada para pequeñas aplicaciones y para fines de desarrollo y prueba. en donde puedes almacena hasta 10GB de espacio en disco.
- SQL Server Developer: Es una edición de SQL Server diseñada para desarrolladores y permite el uso de todas las características de SQL Server. Esta edición se puede utilizar para fines de desarrollo y prueba.
- SQL Server Web: Es una edición de SQL Server diseñada específicamente para hospedar aplicaciones web y para proveedores de alojamiento web. Esta edición es similar a la edición Standard, pero tiene licencia por núcleo y no por usuario.
- SQL Server Standard: Es una edición completa de SQL Server que incluye todas las características de la base de datos y está diseñada para satisfacer las necesidades de pequeñas y medianas empresas.
- SQL Server Enterprise: Es una edición de SQL Server de nivel empresarial que incluye características avanzadas, como análisis avanzado, replicación avanzada y alta disponibilidad. Esta edición está diseñada para satisfacer las necesidades de grandes empresas y organizaciones.
- SQL Server Datacenter: Es una edición de SQL Server diseñada para satisfacer las necesidades de grandes empresas y organizaciones que tienen requisitos de escalabilidad y alta disponibilidad muy exigentes. Esta edición incluye todas las características de SQL Server y se licencia por núcleo.
Ademas como Microsoft tiene una de las nubes más grandes, Azure, esta Sistema de base de datos es muy fácil desplegar, junto a todo tu proyecto con el ecosistema Microsoft.
PostgreSQL
Actualmente de todas las bases de datos Open Source que podriamos mencionar, PostgreSQL es de las bases de datos que no tiene una empresa especifica que lo mantenga, sino que es desarrollada por la organizacion PostgreSQL Global Development Group, una organización sin fines de lucro compuesta por voluntarios que coordina y supervisa el desarrollo de PostgreSQL. Y este grupo se financia a través de donaciones de empresas y organizaciones que utilizan PostgreSQL y desean apoyar su desarrollo y mantenimiento.
Ahora una de las razones de porque es tan usada esta base de datos es por su gran cantidad de caracteristicas relacionadas a rendimiento, seguridad, extensiones en multiples lenguajes de programacion, configuraciónes, entre otros.
Por ejemplo PostgreSQL permite escribir funciones en estos lenguajes para hacer consultas:
Soporta una amplia variedad de tipos de datos como:
- Primitivos de base de datos comunes como tipos numéricos, strngs, booleanos y de fecha y hora: estos se encuentran en la mayoría de las bases de datos y tienen un gran soporte en PostgreSQL.
- Direcciones de Red: PostgreSQL sopota tipos de datos relacionados a Red CIDR addresses, direcciones de subred, y direcciones MAC, ya sea de IPv4 o IPv6.
- geometric types:Hay una variedad de tipos disponibles para ayudarlo a definir objetos bidimensionales. Estos incluyen puntos, líneas y segmentos, así como formas completas como cajas, polígonos y círculos..
- monetary types: El tipo
moneyde PostgreSQL almacena moneda con una precisión fraccionaria fija. El tipo consciente de la configuración regional e incluye formato de salida automático. - ranges: Los rangos le permiten trabajar de forma nativa con rangos de valores como, por ejemplo, rangos de fecha y hora para la programación.
- JSONB: El soporte nativo de PostgreSQL para almacenar y operar en objetos JSON puede ayudarlo a trabajar con datos relacionales y no relacionales en el mismo sistema..
- hstore: El tipo
hstorele permite trabajar con pares clave-valor de forma nativa. - multidimensional arrays: Las matrices son muy útiles para almacenar valores de varias partes que no tienen mucho significado fuera de su contexto específico..
Por mencionar solo algunas, ya que tambien permite crear tus propios tipos de datos complejos, busquedas completas por texto, e incluso tener implementada algunas caracteristicas NoSQL en la propia base de datos.
Todo esto hace que sea de las bases de datos más versatiles, Ademas como es una base datos ampliamente usada, practicamente todos los servicios de la nube ya ofrecen desplegar bases de datos PostgreSQL facilmente. Por lo que tambien puede ser una buena idea usarla desde proyectos pequeños que recien estan empezando hasta proyectos consolidados
Mongodb
Si MySQL es la base de datos SQL Open Source más popular, Mongodb es la base de datos NoSQL Open Source más popular. Y el termino NoSQL no significa que este en contra de SQL o algo asi, sino que se refiere a un conjunto de base de datos que no usan tablas principalmente para almacenar datos y relacionarlos, sino que usan otras estructuras de datos como grafos, documentos, pares clave y valor, y se caracterizandose por permitir escala horizontalmente la mayoria de las veces, siendo usada muy principalmente para almacenar datos No estructurados.
Mongodb utiliza en la pratica formato JSON para poder estructurar datos en lugar de las tablas, aunque debido a que este formato es lento para serializar y deserializar, Mongodb al momneto de almacenarlos utiliza el formato BSON (Binary JSON), que es más rapido, y ofrece más tipos de datos que los que ofrece JSON.
Mongodb no usa SQL como lenguaje de consulta sino usa Javascript, lo que le permite integrarse muy bien con aplicaciones que utilicen este lenguaje principalmente, como Nodejs, Typescript, y Frameworks de Frontend. Siendo parte de algo que se llama el Stack MERN, ques la union de de tecnologías de Javascript para crear aplicaciones web fullstack (Mongodb, Express, React, Nodejs)
Ademas esta base de datos con los años sigue añadiendo más servicios y herramientas que vuelven muy facil a los desarrolladores de aplicaciones integrarlos en sus proyectos, por ejemplo Mongodb, ofrece:
- Mongodb Atlas, que es un servicio de la nube que permite crear bases de datos de Mongodb en producción solo con unos cuantos click
- Mongodb Compass, que es una interfaz grafica de usuario para que los desarrolladores puedan tener hacer consultas complejas de manera grafica
- Mongodb Realm, que es un servicio que unido a Mongodb atlas ofrece la posibilidad de tener todo el backend creado, de forma similar a lo que ofrecen servicios como Firebase, Supabase, o AWS Amplify.
Asi que si estas estudiando crear aplicaciones web, es muy probable que te encuentres esta base de datos, y más aun si usas Javascript.
Redis
Redis es una base de datos NoSQL en el mismo sentido que Mongodb, solo que este a diferencia del anterior, en lugar de ser usado como base de datos principal, ha sido mayormente usado como base de datos de Caching de datos, es decir que guarda la respuesta de peticiones muy recurrentes que llegan al servidor y las responde, para que no se tengan que consultarse de nuevo a la base de datos.

Esto es porque redis es muy rapido al momento de hacer consultas, debido a que en lugar de usar el almacenamiento en disco, usa la RAM, lo que lo vuelve la opcion perfecta para este tipo de situaciones.
Esto hace que si tienes una aplicacion web que usa ya sea una base de datos relacional o una relacional, luego puedes añadir redis para mejorar las respuestas. haciendo que tengas un total de 2 bases de dats en un mismo proyecto
Aunque ultimamente esta tratando de ir mucho más alla que ser simplemente una solucion de Caching, tratando de convertirse en una base de datos de proposito general, es decir que permita ofrecer multiples paradigmas de almacenamiento, como ofrecer las tablas de sql, los documentos de mongodb, los pares clave y valor, o grafos, lo que hace que se convierta en una base de datos multimodelo. Sin embargo esto aun es relativamente nuevo, asi que no hay muchos ejemplos usando este enfoque.

Aun asi implementar esta base de datos es muy sencilla porque ya hay muchos servicios de la nube que permiten crear bases de datos de Redis y pagar por ellos, o tambien esta su propia nube llamada Redis Cloud, que tambien permite hacer esto facilmente.
SQLite3
De todas las bases de datos que hemos visto hasta ahora, todas estan pensadas para ejecutarse en proyectos grandes, para escalar, o permitir crear esquemas complejos. Ahora no todas las aplicacioens necesitan una base de datos grandes, un ejemplo de esto pueden ser muchas aplicaciones moviles que utilizamos a diario y que guardan los datos en el mismo dispositivo.
Es por este tipo de razones que tambien tenemos bases de datos que son mucho más simples en comparacion. una de estas es Sqlite3.
Sqlite es una base de datos relacional, solo que todo lo que guardes en lo hace en un solo archivo, haciendo que reciba el nombre de base de datos embebida. Esto significa que no hay necesidad de un servidor de base de datos independiente lo que hace que sea facil de usarlo en apps móviles y de escritorio. Es sistema de base de datos es Ligero y tambien multiplataforma (Windows, macOS, Linux, Android e iOS). Y aunque pareceria muy dificil de cumplir, SQLite3 admite la mayoría de los comandos y sintaxis SQL, ademas de transacciones ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad) lo que garantiza la integridad y consistencia de los datos y la seguridad en aplicaciones que manejan transacciones críticas
Ademas debido a que es un sistema de base de datos portatil, muchos desarrolladores lo usan como una base de datos en desarrollo, y cuando pasan a producción cambian a otra base de datos como MySQL, PostgreSQL. Esto debido a que muchos frameworks web actuales permiten usar ORMs que hacen esta conversion por nosotros.
Ahora, aunque parezca raro, tambien hay unas cuantas soluciones para permitir ejecutar SQLite3 de forma distribuida, usando herramientas como:
- SQLite Sync: SQLite Sync es una biblioteca que permite la sincronización de bases de datos SQLite entre dispositivos y servidores. Esta biblioteca utiliza la replicación basada en registro para sincronizar datos y cambios en tiempo real.
- Fossil SCM: Fossil es un sistema de control de versiones distribuido que utiliza SQLite3 como su sistema de base de datos interno. Fossil admite la replicación de bases de datos SQLite3 para permitir la colaboración entre equipos y usuarios.
- WAL Replication: SQLite3 admite la replicación de bases de datos utilizando el modo WAL (Write-Ahead Logging). Este modo de replicación permite la replicación de la base de datos en tiempo real a través de múltiples dispositivos y servidores.
Aunque Es importante tener en cuenta que, aunque estas opciones permiten el uso de SQLite3 en un entorno distribuido, no son tan escalables y robustas como otros sistemas de bases de datos distribuidos. por lo que si se requiere una base de datos distribuida de alta escala, es más recomendado usar base de datos distribuidas como MongoDB, Cassandra, o PostgreSQL.
Conclusión
En fin, hasta ahora hemos las bases de datos más populares que muchos proyectos actuales usan de algun modo, en donde hemos visto algunas SQL y otros NoSQL, sin embargo la lista es batante grande y sigue creciendo con alternativas, e incluso ya no solo de SQL y NOSQL, sino de NewSQL, que es otro tipo de bases de datos que unen caracteristicas de SQL y NoSQL, siendo más versatiles que estas, y funcionando mayormente en red. Aunque esto lo veremos en el siguiente video.