Поддерживаемые базы данных
| База данных | Проверенные версии | Драйвер |
|---|---|---|
| H2 | Входит в состав каждого релиза | Встроенный; только для оценки |
| PostgreSQL | 14, 17 | Встроенный |
| MySQL | 8.0, 8.4 | Добавьте в drivers/ самостоятельно (Connector/J распространяется по лицензии GPL и не входит в пакет) |
| MariaDB | 10.11, 11.4 | Встроенный |
| Oracle | Free 23 | Встроенный |
| SQL Server | 2022 | Встроенный |
Каждый релиз в CI выполняет «инициализацию чистой базы данных и полный набор интеграционных тестов». Китайские СУБД (Dameng, KingbaseES, openGauss, OceanBase и др.) не входят в область поддержки.
Примеры подключения
# PostgreSQL
GRANTFORGE_DB_URL=jdbc:postgresql://db:5432/grantforge
# MySQL
GRANTFORGE_DB_URL=jdbc:mysql://db:3306/grantforge
# MariaDB
GRANTFORGE_DB_URL=jdbc:mariadb://db:3306/grantforge
# Oracle(服务名)
GRANTFORGE_DB_URL=jdbc:oracle:thin:@//db:1521/FREEPDB1
# SQL Server
GRANTFORGE_DB_URL=jdbc:sqlserver://db:1433;databaseName=grantforge;encrypt=true;trustServerCertificate=trueИмя пользователя и пароль задаются переменными GRANTFORGE_DB_USER и GRANTFORGE_DB_PASSWORD соответственно. База данных должна существовать заранее, а учётная запись должна иметь право создавать таблицы: при первом запуске GrantForge создаёт все таблицы с помощью Liquibase, а при последующих обновлениях версий миграции также выполняет Liquibase. Hibernate только проверяет схему и никогда её не изменяет.
В PostgreSQL GrantForge пытается включить расширение pg_trgm и строит триграммные индексы по имени для входа, отображаемому имени и электронной почте пользователей, благодаря чему поиск по принципу «содержит» на миллионах учётных записей занимает десятки миллисекунд. Начиная с PostgreSQL 13 это доверенное расширение, которое владелец базы данных может включить; если у учётной записи нет такого права, сервис всё равно запускается, а поиск выполняется полным сканированием таблицы — как только администратор выполнит CREATE EXTENSION pg_trgm, индексы будут построены автоматически при следующем запуске.
Кодировки
- MySQL / MariaDB: создайте базу данных с кодировкой
utf8mb4, чтобы китайский текст и эмодзи сохранялись полностью. - SQL Server, Oracle: текстовые столбцы, которые могут содержать китайский текст, используют
NVARCHAR; длинный текст —NVARCHAR(MAX)в SQL Server иCLOBв Oracle независимо от кодировки базы данных по умолчанию. - Oracle: пустые строки трактуются как
NULL; GrantForge нормализует пустые значения к «не заполнено» на уровне домена, обеспечивая единообразие поведения с другими базами данных.
Резервное копирование и восстановление
Все рабочие данные хранятся в базе данных (включая сессии), поэтому достаточно резервной копии базы; если вы используете плагины, резервируйте также plugins/. Если grantforge.security.encryption-key не задан, ключ шифрования тоже хранится в базе данных, и после восстановления копии расшифровка возобновляется; если ключ задан, его необходимо хранить в надёжном месте.
