Подключение к хранилищу (storage)

Описание

Определяет параметры доступа к конкретному хранилищу для использования платформой.
Определяет тип (type). Данные могут располагаться в кластерах postgresql, kafka, clickhouse. Файлы - в s3, fs, nfs, fsync.
Задает код (instance) и позволяет на него ссылаться при настройке классов модели данных.
Элемент с instance = auto создается автоматически.

Поля

Структура сущности
{
  "id": uuid,
  "name": str,
  "instance": str,
  "params": object,
  "opts": {
    "title": str,
    "comment": str
  },
  "ext": {
    "ct": date,
    "lwt": date
  }
}
Table 1. Поля
Спецификация Описание

Поле: id
Режим: inout
Тип: uuid
По умолчанию: generated

Идентификатор. Может быть задан при создании, иначе генерируется системой.

Поле: type
Режим: in
Тип: str
По умолчанию: required

Код. Используется для ассоциирования с другими сущностями.

  • postgresql. Экземпляр реляционной БД postgresql. Несколько экземпляров с одним и тем же значением instance считаются репликами друг друга.

  • kafka. Кластер Kafka. Одна сущность определяет сразу несколько брокеров кластера.

  • clickhouse. Сервер кластера аналитической колоночной БД Clickhouse. Несколько экземпляров с одним и тем же значением instance считаются серверами одного кластера.

  • s3. Файловое хранилище S3. Может использоваться как сервером модели данных (dms), так и для хранения записей разговоров.

  • nfs. Файловое хранилище на сетевом диске, доступном из любой ноды как папка на текущем сервере.

  • fs. Файловое хранилище, организованное на нескольких серверах, где располагаются экземпляры роли файлового сервера (или middleware при его отсутствии).

  • fsync. Файловое хранилище в синхронизируемой папке. Синхронизация происходит в течение 10 секунд на все серверы сайта и других сайтов, где обслуживается домен.

Поле: instance
Режим: in
Тип: str
По умолчанию: required

Имя хранилища. Используется при связывании с классами.

Хранилища со значением auto генерируются и применяются автоматически в случае их отсутствия в коллекции в явном виде.
Данные размещаются в хранилищах с типом postgresql (для табличных данных) и fs (для файлов вложений).

Поле: params
Режим: in
Тип: object
По умолчанию: required

Параметры конкретного хранилища.

Пример (postgresql)
{
  "host": "192.168.1.221",
  "port": 5432,
  "login": ".....",
  "pwd": ".....",
  "database": "my_database",
  "max_connections": 50
}
Пример (kafka)
{
  "endpoints": [
     { "host": "192.168.1.201", "port": 9092 },
     { "host": "192.168.1.202", "port": 9092 },
     { "host": "192.168.1.203", "port": 9092 },
     { "host": "192.168.1.204", "port": 9092 }
  ],
  "send_mode": "async",
  "partition_count": 2,
  "replication_factor": 2
}
Пример (clickhouse)
{
  "endpoints": [
     { "host": "ch1.zone1,my_domain" },
     { "host": "ch2.zone1,my_domain" },
     { "host": "ch1.zone2,my_domain", "port": 8125 },
     { "host": "ch2.zone2,my_domain", "port": 8125 }
  ],
  "scheme": "https",
  "port": 8123,
  "login": ".....",
  "password": ".....",
  "cluster": "my_cluster"
}
Пример (s3)
{
  "bucket": "my_bucket",
  "endpoint": "https://my_cloud.net",
  "prefix": ".....",
  "keyId": "my_key",
  "secretKey": "....."
}

Для хранилищ типа postgresql и clickhouse эквивалентно создание одной сущности с несколькими endpoints и нескольких сущностей с одинаковым instance и различающимися множествами host:port.

Поле: opts
Режим: in
Тип: object
Составное поле

Поле: opts.title
Режим: in
Тип: str
По умолчанию: empty

Произвольный заголовок

Поле: opts.comment
Режим: in
Тип: empty
По умолчанию: "

Произвольный комментарий

Поле: ext
Режим: inout
Тип: object
Составное поле

Позволяет расширять состав произвольными ключами и значениями

Поле: ext.ct
Режим: out
Тип: date
По умолчанию: generated

Время создания объекта

Поле: ext.lwt
Режим: out
Тип: date
По умолчанию: generated

Время последней модификации объекта

Параметры подключения для типов хранилищ

Table 2. Параметры подключения для типов хранилищ
Тип хранилища Параметры

postgresql

* host — хост.
* port — порт.
* login — логин.
* pwd — пароль.
* database — имя базы данных.
* max_connections (опционально) — количество одновременных подключений, по умолчанию 10, и применяется раздельно для пользовательских вызовов и для вызовов из системы и из под токенов.
* endpoints (опционально) — список из нескольких точек подключения. Параметры 'host', и опционально 'port', 'login', 'pwd' могут указываться в списке под ключом 'endpoints', если точек подключения несколько. По умолчанию одно подключение и со значениями параметров из корневого раздела.

kafka

* endpoints — список точек подключения. Каждый объект endpoint содержит:
. - host — хост.
. - port — порт. Стандартный для KAFKA порт — 9092.
* endpoints_for_clickhouse (опционально) — список точек подключения для таблиц clickhouse. В отличие от коммуникационной платформы, clickhouse может подключаться альтернативным образом (например без авторизации по локальному интерфейсу). Этот список передается ему при создании таблиц c ENGINE=KAFKA. Каждый объект endpoint содержит: host, port.
* send_mode (опционально) — режим отправки сообщений в брокер KAFKA. Варианты значений: 'sync' или 'async'. По умолчанию 'sync'.
* partition_count (опционально) — количество партиций для топика. Полезно установить значение, соответствующее подключенному кластеру. По умолчанию берется из класса, но его значение по умолчанию отражают минимальный вариант односерверной развертки KAFKA.
* replication_factor (опционально) — количество реплик для топика. Полезно установить значение, соответствующее подключенному кластеру. По умолчанию берется из класса, но его значение по умолчанию отражают минимальный вариант односерверной развертки KAFKA.
* security (опционально) — настройка безопасного подключения. Объект: {protocol, login, password}. Варианты значений поля 'protocol': plaintext, sasl_plaintext, ssl, sasl_ssl.
* domain (опционально) — для кросс-доменных и кросс-системных процессов возможность подключиться для отправки информации в базу к топикам другого домена. Например это может быть полезно для того, чтобы использовать единое хранилище архивных данных, не разделенное на домены, либо при организации ETL процесса переноса данных из архивных коллекций postgresql в clickhouse.

clickhouse

* cluster — название кластера clickhouse из его конфигурации.
* host — хост подключения.
* login —  логин.
* password — пароль (хешируется в настройках и не хранится в базе в открытом виде).
* port (опционально) — порт подключения. По умолчанию 8123.
* scheme (опционально) — схема подключения. Варианты значений: 'http' или 'https'. По умолчанию 'http'.
* endpoints (опционально) — список из нескольких точек подключения. Параметры 'host', 'port', 'login', 'password', 'scheme' могут указываться в списке под ключом 'endpoints', если точек подключения несколько, при этом не заданные параметры принимаются из общего раздела. По умолчанию одно подключение и со значениями параметров из корневого раздела.
* domain (опционально) — для кросс-доменных и кросс-системных процессов возможность подключиться для отправки информации в базу к топикам другого домена. Например это может быть полезно для того, чтобы использовать единое хранилище архивных данных, не разделенное на домены, либо при организации ETL процесса переноса данных из архивных коллекций postgresql в clickhouse.

s3

* bucket — Имя корзины.
* keyId — Ид ключа.
* secretKey — Секретная строка.
* endpoint (опционально) — Точка подключения к хранилищу (URL).
* region (опционально) — Имя региона для подключения к Amazon S3. Точка подключения определяется автоматически.
* prefix (опционально) — начало пути в структуре хранилища. По умолчанию пустая строка.

nfs

* configkey — Ключ из конфигурации, определяющий связанный с хранилищем каталог на диске (внутри контейнера). Варианты значений: 'globalshare', 'siteshare', 'local'.
* prefix (опционально) — начало пути в каталоге на диске. По умолчанию пустая строка.

fs

* prefix (опционально) — начало пути в каталоге на диске. По умолчанию пустая строка.

fsync

* prefix (опционально) — начало пути в каталоге на диске. По умолчанию пустая строка.

См. также