GrantForge

    Развёртывание и эксплуатация

    Базы данных

    Поддерживаемые базы данных и их версии, настройки подключения, драйверы и особенности конкретных СУБД.

    Поддерживаемые базы данных

    База данных Проверенные версии Драйвер
    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 не задан, ключ шифрования тоже хранится в базе данных, и после восстановления копии расшифровка возобновляется; если ключ задан, его необходимо хранить в надёжном месте.

    Редактировать эту страницу на GitHub