667 - Diseño de bases de datos con ChartDB en Docker
ChartDB es una fantástica herramienta que puedes auto alojar con #docker en #linux y que te permite diseñar bases de datos de forma gráfica y muy fácil
En pocas ocasiones recurro al diseño visual de bases de datos. En general, voy construyendo la base de datos a golpe de necesidad, con los inconvenientes que esto trae. Sin embargo, en estos últimos tiempos he querido hacer un par de proyectos donde las bases de datos son mas complejas, sobre todo con el objetivo de aprovechar al máximo la información y de evitar la redundancia. En ocasiones tengo la sensación de que se alinean los astros, porque cuando andaba metido en estos berenjenales me tropecé con la herramienta que te traigo hoy, ChartDB, un servicio web que te ayuda en la creación de una base de datos. Esta es otra de esas herramientas que traigo en los últimos episodios para hacer casi cualquier cosa. En este caso, ChartDB es una herramienta que que te permitirá diseñas bases de datos de forma completamente visual, muy sencilla y auto alojada. Si alguna vez te has preguntado cómo organizar mejor tus datos, cómo documentar tu base de datos de forma visual o cómo alojar tu propia herramienta de diseño en un servidor, este episodio es para ti. Así que quédate hasta el final, porque vamos a cubrir ventajas, desventajas y hasta un pequeño tutorial sobre cómo auto alojarlo en tu propio servidor.
Diseño de bases de datos con ChartDB en Docker
Diseño de bases de datos
Si alguna vez te has preguntado ¿Por qué es importante el diseño de bases de datos?, te puedo dar algunas claves,
- Un buen diseño evita problemas de redundancia, inconsistencia y bajo rendimiento.
- Permite escalar proyectos sin que la base de datos se convierta en un caos.
- Facilita la colaboración entre desarrolladores y equipos.
- Un mal diseño puede generar errores difíciles de corregir en el futuro.
En uno de los casos que estoy afrontando me encuentro, al facilitarme la información que tengo que introducir en la base de datos, me di cuenta que estaba repetida. Es decir, determinados recursos aparecían en varias partes de la información. Así, al realizar el diseño de la base de datos, he tenido en cuenta este detalle para evitar repetirlo.
ChartDB
ChartDB es una herramienta en línea de código abierto que permite visualizar y diseñar esquemas de bases de datos de manera eficiente. Con una única consulta, puedes importar instantáneamente el esquema de tu base de datos y generar diagramas interactivos. Es compatible con sistemas de gestión de bases de datos relacionales populares como MySQL, PostgreSQL, SQL Server, MariaDB y SQLite.
Características
Algunas de las características de ChartDB son las siguientes,
- Importación Instantánea. Mediante una consulta, puedes obtener el esqueda de la base de datos en unos pocos segundos.
- Edición interactiva. Ofrece un editor intuitivo que permite realizar ajustes o anotaciones para visualizar estructuras complejas de manera más clara.
- Sistemas de Gestión de Bases de Datos Relacionales. Soporta sistemas como MySQL, MariaDB, PostgreSQL, Microsoft SQL Server y SQLite.
- Exportación con IA. Su función de exportación impulsada por inteligencia artificial te permite generar scripts DDL en el dialecto de tu elección, facilitando la migración entre diferentes sistemas de bases de datos.
- Ejemplos. Comienza rápidamente con ejemplos pre-diseñados que facilitan la configuración y sirven de inspiración para el diseño, ayudándote a empezar sin esfuerzo.
- Editor de Consultas Avanzado. Edición fluida con funciones como deshacer, rehacer, crear y administrar tablas y relaciones. Garantiza un flujo de trabajo eficiente y sin interrupciones para todas tus tareas de datos.
- Compartir con Estilo. Genera vistas previas visualmente atractivas de tus diagramas de base de datos que puedes compartir fácilmente con otros.
Ventajas e inconvenientes de ChartDB
Como cualquier otra herramienta ChartDB tiene sus ventajas en inconvenientes. Entre las ventajas cabe destacar las siguientes,
- Facilidad de uso. Diseño visual intuitivo.
- Automatización. Generación rápida de esquemas y scripts.
- Portabilidad. Exportación en distintos formatos.
- Acceso sin registro. Puedes usarlo sin necesidad de una cuenta.
Respecto a los inconvenientes, se pueden citar, aunque con muchos matices las siguientes.
- Dependencia de la conexión a internet en su versión en la nube. Aunque no lo tengas alojado en un servidor en la nube, lo necesitas para realizar la exportación.
- Limitaciones en personalización avanzada en comparación con herramientas más especializadas.
- Autoalojamiento necesario para mayor privacidad y seguridad.
Instalación
La instalación es realmente muy sencilla. Con el docker-compose.yml
que te indico a continuación la puedes tener instalada en unos pocos segudos.
En este caso, de nuevo, utilizo Traefik como proxy inverso para ponerlo en marcha junto el resto de herramientas que tengo desplegadas en mi servidor.
Indicar que además, para realizar la exportación necesitas tener una api key de Open Ai.
services:
chartdb:
image: ghcr.io/chartdb/chartdb:latest
container_name: chartdb
restart: unless-stopped
init: true
environment:
OPENAI_API_KEY: sk-proj-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
networks:
- proxy
labels:
- traefik.enable=true
- traefik.http.services.chartdb.loadbalancer.server.port=80
- traefik.http.routers.chartdb.rule=Host(`chartdb.tuservidor.es`)
- traefik.http.routers.chartdb.entrypoints=https
- traefik.http.routers.chartdb.middlewares=tinyauth@file
networks:
proxy:
external: true
Por otro lado, si esto lo tienes expuesto a internet cualquier persona con acceso puede hacer uso de él, con lo que es necesario ponerlo detrás de algún servicio que lo proteja contra accesos no deseados. En otras ocasiones habría utilizado la autenticación básica que trae de caja Traefik, pero tal y