Tabla de contenidos
Sistemas gestores de bases de datos (SGBD)
Un sistema gestor de bases de datos (SGBD) es un software que nos permite gestionar bases de datos. En este sentido, se confunde habitualmente el término «base de datos» que hace referencia sólo al conjunto de datos en sí mismo, cuando lo que se quiere mencionar es SGBD, que es el software que permite la gestión de estos datos: insertar, modificar, eliminar o consultar datos.
El SGBD es, por tanto, la interfaz entre la base de datos y el usuario, o bien otra aplicación, como un cliente de bases de datos.
De lo anterior se desprende que tenemos 3 entidades que juegan un papel relevante: La base de datos, la aplicación servidor y la aplicación cliente. A estos tres, puede y es recomendable añadir una cuarta capa: el sistema de abstracción de bases de datos (ver más adelante).
El cliente es a menudo una aplicación gráfica (GUI) desde la que se realizan las consultas al servidor. Este devuelve el resultado o realiza la operación solicitada.
Tipos de bases de datos
A grandes rasgos, podríamos clasificar 4 tipos principales de bases de datos:
- Bases de datos relacionales (RDBMS). Ejemplos populares libres: MariaDB y PostgreSQL.
- Bases de datos no relacionales o «noSQL». Ejemplos populares libres: MongoDB, Redis, Neo4j,…
- Bases de datos de objetos.
- Bases de datos de memoria. Almacenan los datos en la memoria (RAM) en lugar de en discos. Ejemplos: Redis, InfluxDB
Bases de datos relacionales
Se basan en tablas relacionadas entre sí. Utilizan el lenguaje SQL para gestionar y consultar los datos.
Tipos usuales de bbdd relacionales:
- MariaDB. Libre, ampliamente utilizada y con una gran comunidad.
- PostgreSQL. Libre, enormemente ponente y funcional. No tan utilizada como MariaDB/MySQL, pero también con multitud de recursos disponibles para el aprendizaje.
Bases de datos no relacionales o NoSQL
No siguen un esquema fijo. Al contrario que las relacionales, las noSQL no están restringidas a una jerarquía rígida. Esto las hace enormemente flexibles y aptas para almacenar enormes cantidades de datos (Big data). Esto no las hace «mejores», sino óptimas en entornos en los que las relacionales son demasiado limitadas en estructura y cantidades de datos.
Tipos usuales de bbdd noSQL:
- Bases de datos de documentos (como MongoDB)
- Bases de datos de clave-valor (como Redis)
- Bases de datos de grafos (como Neo4j).
Sistemas de abstracción de bases de datos
Un sistema de abstracción de bases de datos, nos permite disponer de forma separada del motor de la base de datos, y la interfaz de acceso a este. De esta forma, podemos intecambiar el motor del SGBD en cualquier momento, sin afectar al código desarrollado en nuestro proyecto. Es por ello recomendable su implementación.
En esa línea, Python ofrece, entro otros:
- SQLAlchemy. Biblioteca de Python libre, bajo licencia MIT. Extremadamente flexible y pontente. Trabaja con cualquier Framework.
- Django ORM. Integrado en el framework Django. Dispone de una sintaxis más sencilla.
- Peewee. Un ORM ligero. Nos permite trabajar con: SQLite, MySQL, PostgreSQL y CockroachDB.
- PyMongo. Herramienta Python para trabajar con la base de datos NoSQL MongoDB.
- pyDAL. Orientado a objetos. Permite, a través de una interfaz sencilla, interactuar en Python con bases de datos relacionales.
ORMs
Un ORM es una utilidad que nos permite manipular las tablas de una base de datos como si fueran objetos de nuestra aplicación.
Un ORM es un tipo específico de abstracción de bases de datos, por lo que ambos términos no son exactamente lo mismo. ORM es usualmente enfocado en el mapeo de objetos de una aplicación a tablas de una base de datos relacional.
Las mejores alternativas
Aplicaciones servidor (SGBD)
MariaDB, el servidor de bases de datos relacionales más popular
Sitio oficial | Base de conocimientos MariaDB |
Licencia: GPL v2
MariaDB es un SGBD de software libre y gratuito, fork o variante de MySQL. Probablemente, es el SGBD relacionales libre más popular que existe.
Relacionado: Introducción al servidor de bases de datos libre MariaDB
MongoDB, NoSQL orientado a documentos
MongoDB es el SGBD para bases de datos noSQL, orientado a documentos, más popular en la actualidad. Tradicionalmente ha sido siempre libre y ampliamente utilizado en grandes empresas. MongoDB es gratuito.
MongoDB implementa un modelo orientado a documentos, y es ideal en sistemas con grandes cantidades de estos. Es funcional en muchos otros ámbitos que no precisen de transacciones, ya que no las soporta.
Almacena los datos en un formato estilo JSON, es altamente potente y escalable.
MongoDB se caracteriza por su flexibilidad, sencillez y uso intuitivo. Permite además su uso a través de diferentes lenguajes de programación, como C++ o JavaScript.
Sobre la licencia de MongoDB
Recientemente, ha habido un cambio en la licencia de MongoDB, a SSPL, que ha causado tal revuelo que ha puesto en peligro incluso su continuidad. Como ejemplo, las empresas Red Hat y Fedora decidieron eliminar MongoDB de algunos de sus productos.
El problema radica en que esta nueva licencia, la SSPL. no es Open Source, por mucho que así lo defiendan sus desarrolladores y Eliot Horowitz, director técnico y cofundador de MongoDB.
Esta licencia se aplica a todas las versiones de MongoDB lanzadas después del 16/octubre/2018.
Por lo visto, habrá que esperar para ver, a raíz de este rechazo tan mayoritario, el futuro de MongoDB.
Redis, NoSQL para una alta disponibilidad de los datos
Redis revoluciona desde su aparición, por así decirlo, el concepto de base de datos. En lugar de tablas u otros elementos relacionales, trabaja exclusivamente con parejas clave-valor, donde el valor de cada una de estas parejas puede contener otros subgrupos de parejas, y archivos Json completos.
Una de las grandes peculiaridades de Redis, aquella que lo hace grande, consiste en que este almacena todo en memoria, en vez de en disco HD o SSD. Esto proporciona una alta disponibilidad de los datos que contiene, debido a la mayor velocidad de acceso a los datos que están en memoria, en vez de en el disco.
Podría parecer que este sistema de almacenamiento en una memoria volátil tiene el evidente inconveniente de ser eliminado al apagar el PC. Sin embargo, Redis tiene al mismo tiempo un sistema que combina el guardado en memoria con el guardado en disco de almacenamiento persistente (HD, SSD, …). Por tanto, Se podría decir que Redis es al mismo tiempo almacenamiento y caché, combinando lo mejor de ambos.
Redis puede ser, por sí sola, la BBDD de una aplicación. Sin embargo, Redis es más utilizado en otros ámbitos. El más común de estos es el de sistema de chaché.
Supongamos una situación en la que una aplicación hace uso de una API, la cual consulta a una BBDD, como podría ser MariaDB, o Postgre SQL. Este proceso toma unos segundos, y lo interesante ocurre en el segundo acceso a consulta. En este, los datos ya están contenidos en la caché de Redis. La app consulta primero a Redis, obtiene lo que buscaba, y ya no necesita realizar la solicitud a la API, con el consiguiente al ahorro del tiempo.
Este es un gran vídeo, para obtener una introducción rápida y clara sobre qué es y para qué puede usarse Redis.
Neo4j, la base de datos orientada a grafos
Neo4J es la base de datos de grafos (BDOG) gratuita más popular que existe en la actualidad. Neo4J está actualmente bajo dos licencias, una libre Affero General Public License (AGPL), y otra comercial.
Neo4J está implementado en Java y Scala.
Almacena nodos y relaciones, en lugar de tablas, o documentos. Esto hace inevitablemente recordar aplicaciones como Obsidian, Notion, y reflexionar sobre su aplicación en la implementación de métodos como el Zettelkasten para la toma de notas, y la creación de un «cerebro digital». Aunque Neo4J no esté especialmente desarrollado para tales finalidades, su naturaleza, potencia y el hecho de disponer de una versión libre, son puntos a su favor, que nos inclinan a indagar más sobre estas posibilidades.
Soporta múltiples lenguajes de programación: JAVA, python, SCALA, C++, …
OpenLDAP
LDAP, acrónimo de Lightweight Directory Access Protocol (en español Protocolo Ligero de Acceso a Directorios) es un protocolo usado para el acceso a directorios LDAP, con el objeto de buscar diversa información en un entorno de red.
OpenLDAP es un software libre que implementa LDAP.
Aplicaciones cliente
dbForge Studio para MariaDB
dbForge Studio es una aplicación cliente libre MariaDB, con herramientas GUI; para la administración y el desarrollo de bbdd MariaDB y MySQL.
Ampliar información: dbForge Studio for MariaDB
DBeaver
Software GUI libre y multiplataforma bajo la licencia Apache versión 2, para la administración de bases de datos. Soporta MySQL, MariaDB, PostgreSQL, SQLite, Oracle, DB2, SQL Server, Sybase, Teradata, Netezza, y más. Soporta además BBDD no relacionales como MongoDB o Cassandra.
Proporciona, entre otras muchas funcionalidades:
- Un editor SQL que posibilita organizar las consultas en carpetas.
- Posibilidad de importar y exportar en varios formatos: (CSV, HTML, XML, XLS, XLSX)
- Diagramas ER. Posibilidad de generar automáticamente.
MySQL Workbench, el cliente MySQL de Oracle
Herramienta visual multiplataforma de administración de bases de datos. La versión Community edition es libre y gratuita.
El hecho de ser propiedad de Oracle puede ser bueno en parte. Por un lado Oracle es garantía de calidad y compatibilidad con MySQL. Por otro lado, está el hecho de pertenecer a una empresa no demasiado dada a la promoción del software libre.
Beekeeper Studio, un cliente libre y gratuito para MariaDB y otros SGBD
Beekeeper Studio es un editor SQL y gestor de bases de datos. Funciona al menos en Gnu/Linux, MacOS y Windows.
Su interfaz es moderna e intuitiva. Soporta actualmente MySQL, PostgreSQL, MariaDB, SQLite, CockroachDB, Redshift, y SQL Server.
Dispone actualmente de dos versiones, la Community Edition, libre y gratuita bajo GPLv3, y la Ultimate Edition, con licencia comercial y de pago.
Herramientas de consulta, modelado e interfaces gráficas para bases de datos
Dia
SOs disponible: GNU/Linux, MacOS X, Unix, Windows
Licencia: GPL
Dia es un programa de creación de diagramas basado en GTK+. Esta más o menos inspirado en el software comercial Microsoft Visio.
Se puede utilizar para dibujar diferentes tipos de diagramas. Actualmente cuenta con objetos especiales para ayudar a dibujar
diagramas entidad-relación, diagramas UML, diagramas de flujo, diagramas de red, y muchos otros.
Recursos
- [aws.amazon.com] Cree aplicaciones modernas con las bases de datos gratuitas en AWS . Productos y servicios gratuitos para crear, implementar y ejecutar aplicaciones de bases de datos en la nube
Deja una respuesta