Автоматическая генерация UML схемы бд - schemacrawler
Многие иногда сталкиваются с тем что нужно нарисовать структуру таблиц для своего веб приложения, например для технической документации вроде такой:
Это нужно делать руками если структура БД еще не создана, но что если вам нужно написать документацию для уже созданного приложения? Обычно я рисовалки схемы руками через рисовалки схем вроде draw.io, но недавно я нашел инструмент для авто генерации таких иллюстраций бесплатно, и в формате png.
Эта утилита называется https://www.schemacrawler.com/. По началу я хотел установить ее на свою систему через apt-get, но потом понял что можно просто использовать docker. На примере sqlite базы даных мы рассмотрим как сгенерировать такую иллюстрацию в формате png. Для начала нужно cd в директорию с вашей БД sqlite, затем выполнить команду для запуска контейнера:
Так же schemacrawler поддерживает вывод многих других БД и форматов вывода иллюстраций, например text,html,gif,jpg. Формат вывода можно изменить меняя имя файла вывода, либо задавая через --output-format=. При использовании формата text можно дальше сравнивать через утилиту diff разницу в схеме нескольких БД, как например хотели сделать тут https://serverfault.com/q/12948/486890.
sudo docker run -v $(pwd):/home/ -w /home/ -it schemacrawler/schemacrawler /bin/bash
Далее будет шелл контейнера, в нем нужно запустить:
/opt/schemacrawler/bin/schemacrawler.sh --command=schema --info-level=maximum --database=teams.db --server=sqlite --output-file=test.png
Где --database это имя файла вашей sqlite БД. И сгенерируется аналогичная иллюстрация:
Так же schemacrawler поддерживает вывод многих других БД и форматов вывода иллюстраций, например text,html,gif,jpg. Формат вывода можно изменить меняя имя файла вывода, либо задавая через --output-format=. При использовании формата text можно дальше сравнивать через утилиту diff разницу в схеме нескольких БД, как например хотели сделать тут https://serverfault.com/q/12948/486890.
Схожим образом можно нарисовать схему и с СУБД postgres, или mysql:
/opt/schemacrawler/schemacrawler.sh --server=postgresql --host=127.0.0.1 --port=5432 --database=schemacrawler --schemas=public --user=postgres --password=qwerty --info-level=standard --command=schema
Полный список поддерживаемых утилитой БД: https://www.schemacrawler.com/database-support.html.
Комментарии
Отправить комментарий