Подключение Hologres к dbt v1
- Поддерживается: Alibaba Cloud Hologres Team
- Авторы: Alibaba Cloud Hologres Team
- Репозиторий GitHub: aliyun/dbt-hologres
- Пакет PyPI:
dbt-alibaba-cloud-hologres - Канал Slack:
- Поддерживаемая версия dbt: v1.8.0 и новее
- Поддержка dbt: Not Supported
- Минимальная версия платформы данных:
Установка dbt-alibaba-cloud-hologres
Установите адаптер с помощью `pip`:python -m pip install dbt-alibaba-cloud-hologres
Настройка dbt-alibaba-cloud-hologres
Конфигурацию, специфичную для Hologres, см. на странице настроек Hologres.
Подключение к Hologres с помощью dbt-alibaba-cloud-hologres
dbt-alibaba-cloud-hologres позволяет dbt работать с Alibaba Cloud Hologres — хранилищем данных реального времени, совместимым с PostgreSQL.
Подробности приведены ниже в конфигурации профиля dbt.
dbt-alibaba-cloud-hologres: # это имя должно совпадать с именем профиля в файле dbt_project.yml
target: dev
outputs:
dev:
type: hologres
host: HOST_NAME
port: 80
user: USER_NAME
password: PASSWORD
database: DATABASE_NAME
schema: SCHEMA_NAME
threads: 4
Параметры подключения
В настоящее время поддерживаются следующие параметры:
| Поле | Описание | Обязательный? | По умолчанию | Пример |
|---|---|---|---|---|
type | Тип подключения к базе данных; для подключения к Hologres необходимо задать "hologres". | Да | - | hologres |
host | Имя хоста конечной точки для подключения к экземпляру Hologres. | Да | - | hgxxx-xxx.hologres.aliyuncs.com |
port | Номер порта для подключения к Hologres. | Нет | 80 | 80 |
user | Имя пользователя для аутентификации в Hologres (с учётом регистра). | Да | - | AccessKey ID |
password | Пароль для аутентификации в Hologres (с учётом регистра). | Да | - | AccessKey Secret |
database | Имя вашей базы данных Hologres. | Да | - | my_database |
schema | Схема по умолчанию, которую модели будут использовать в Hologres (укажите пустую строку "", если схема не нужна). | Да | - | public |
threads | Количество потоков для параллельного выполнения. | Нет | 1 | 4 |
connect_timeout | Время ожидания подключения в секундах. | Нет | 10 | 10 |
sslmode | Режим SSL для подключения. | Нет | disable | disable |
application_name | Идентификатор приложения для отслеживания подключений. | Нет | dbt_hologres_{version} | my_dbt_app |
retries | Количество повторных попыток подключения. | Нет | 1 | 3 |
Настройка аутентификации
dbt-alibaba-cloud-hologres использует стандартный механизм аутентификации, совместимый с PostgreSQL, с именем пользователя и паролем (Access Key). Hologres поддерживает аутентификацию с помощью Alibaba Cloud AccessKey или учётных данных пользователя RAM.
Ключ доступа
Вы можете пройти аутентификацию с помощью учётных данных вашей учётной записи Alibaba Cloud. В целях безопасности рекомендуется создать дочернюю учётную запись RAM с соответствующими разрешениями, а не использовать AccessKey основной учётной записи.
jaffle_shop: # это имя должно совпадать с именем профиля в файле dbt_project.yml
target: dev
outputs:
dev:
type: hologres
host: hgxxx-cn-shanghai.hologres.aliyuncs.com # Замените на конечную точку вашего экземпляра Hologres
port: 80
user: your_access_key_id # Замените на ваш AccessKeyId
password: your_access_key_secret # Замените на ваш AccessKeySecret
database: my_database # Замените на имя вашей базы данных
schema: public # Замените на имя вашей схемы
threads: 4
connect_timeout: 10
sslmode: disable
Важные замечания
-
Чувствительность к регистру: имена пользователей и пароли Hologres чувствительны к регистру. Убедитесь, что вы вводите их в точности так, как они заданы.
-
Порт по умолчанию: порт по умолчанию для Hologres —
80, что отличается от стандартного порта PostgreSQL5432. -
Режим SSL: по умолчанию SSL для подключений к Hologres отключён. При необходимости его можно включить, задав подходящее значение параметра
sslmode.
Проверка подключения
После настройки profiles.yml вы можете проверить подключение, выполнив:
dbt debug
Эта команда проверит подключение к вашему экземпляру Hologres и сообщит о проблемах с конфигурацией.
Особенности Hologres
Динамические таблицы в Hologres
Динамические таблицы — это реализация материализованных представлений с автоматическим обновлением в Hologres. При обновлении данных поддерживается несколько режимов, включая "full" (полный режим) и "incremental" (инкрементальный режим). Дополнительные сведения см. в справочном руководстве. Вы можете настроить их в своих моделях dbt:
models:
my_model:
materialized: dynamic_table
freshness: "30 minutes"
auto_refresh_mode: auto
computing_resource: serverless
Поддерживаемые параметры настройки динамических таблиц:
| Параметр | Описание | Примеры значений |
|---|---|---|
freshness | Требование к актуальности данных. | "30 minutes", "1 hours" |
auto_refresh_mode | Режим обновления динамической таблицы. | auto, incremental, full |
computing_resource | Вычислительный ресурс для обновления. | serverless, local, имя вычислительного хранилища |
Инкрементальные модели в dbt
dbt-alibaba-cloud-hologres поддерживает несколько инкрементальных стратегий:
append: добавление новых записейdelete+insert: удаление совпадающих записей и вставка новыхmerge: использование оператора MERGE для операций вставки или обновления (upsert)microbatch: обработка данных небольшими пакетами
Ограничения
Полная поддержка ограничений базы данных, включая:
- Первичные ключи
- Ограничения NOT NULL
Свойства таблиц
Hologres поддерживает следующие свойства таблиц. Подробные сведения см. в справочной документации для разработчиков.
| Свойство | Рекомендации |
|---|---|
orientation | Используйте column для нагрузок OLAP и row для запросов типа «ключ — значение» |
distribution_key | Выбирайте столбцы, часто используемые при соединении или группировке; предпочтительно использовать один столбец |
clustering_key | Используйте для столбцов с фильтрацией по диапазону; не более 3 столбцов; соблюдайте принцип совпадения по левому префиксу |
event_time_column | Задавайте для данных временных рядов (столбцов с временными метками) |
bitmap_columns | Используйте для фильтров на равенство |
dictionary_encoding_columns | Используйте для строковых столбцов с небольшим числом уникальных значений |
Справочные материалы
- Репозиторий dbt-alibaba-cloud-hologres на GitHub
- Документация Hologres
- Руководство по динамическим таблицам Hologres