Перейти к основному содержимому
Перейти к основному содержимому

Подключение Embeddable к ClickHouse

Community Maintained

В Embeddable вы определяете Модели Данных и Компоненты в коде (хранящемся в вашем собственном репозитории кода) и используете наш SDK, чтобы сделать их доступными для вашей команды в мощном безкодовом конструкторе Embeddable.

Конечный результат — это возможность предоставлять быстрые, интерактивные аналитические данные для клиентов непосредственно в вашем продукте; разработанные вашей командой продукта; построенные вашей инженерной командой; поддерживаемые командами, работающими с клиентами, и командами данных. Именно так это и должно быть.

Встроенная безопасность на уровне строк означает, что каждый пользователь видит только те данные, которые ему разрешено видеть. А два уровня полностью настраиваемого кэширования позволяют предоставлять быстрые, реалистичные аналитические данные в масштабах.

1. Соберите данные для подключения

Чтобы подключиться к ClickHouse с помощью HTTP(S), вам необходима следующая информация:

  • ХОСТ и ПОРТ: как правило, порт 8443 при использовании TLS или 8123 при отсутствии TLS.

  • ИМЯ БАЗЫ ДАННЫХ: по умолчанию существует база данных с именем default, используйте имя базы данных, к которой вы хотите подключиться.

  • ИМЯ ПОЛЬЗОВАТЕЛЯ и ПАРОЛЬ: по умолчанию имя пользователя default. Используйте имя пользователя, подходящее для вашего случая.

Данные для вашего сервиса ClickHouse Cloud доступны в консоли ClickHouse Cloud. Выберите сервис, к которому вы хотите подключиться, и нажмите Подключиться:

Кнопка подключения к сервису ClickHouse Cloud

Выберите HTTPS, и данные будут доступны в примере команды curl.

Детали подключения ClickHouse Cloud по HTTPS

Если вы используете самоуправляемый ClickHouse, детали подключения устанавливаются вашим администратором ClickHouse.

2. Создайте тип подключения к ClickHouse

Вы добавляете подключение к базе данных, используя API Embeddable. Это подключение используется для соединения с вашим сервисом ClickHouse. Вы можете добавить подключение, используя следующий вызов API:

// for security reasons, this must *never* be called from your client-side
fetch('https://api.embeddable.com/api/v1/connections', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Accept: 'application/json',
    Authorization: `Bearer ${apiKey}` /* keep your API Key secure */,
  },
  body: JSON.stringify({
    name: 'my-clickhouse-db',
    type: 'clickhouse',
    credentials: {
      host: 'my.clickhouse.host',
      user: 'clickhouse_user',
      port: 8443,
      password: '*****',
    },
  }),
});

Response:
Status 201 { errorMessage: null }

Выше представлено действие CREATE, но все операции CRUD также доступны.

apiKey можно найти, нажав "Опубликовать" на одной из ваших панелей управления Embeddable.

name — это уникальное имя для идентификации этого соединения.

  • По умолчанию ваши модели данных будут искать соединение с именем "default", но вы можете предоставить вашим моделям разные имена data_source, чтобы поддерживать соединение различных моделей данных с разными соединениями (просто укажите имя data_source в модели).

type указывает Embeddable, какой драйвер использовать.

  • Здесь вы захотите использовать clickhouse, но вы можете подключить несколько различных источников данных к одному рабочему пространству Embeddable, так что вы можете использовать и другие, такие как: postgres, bigquery, mongodb и т.д.

credentials — это объект JavaScript, содержащий необходимые учетные данные, ожидаемые драйвером.

  • Эти данные надежно зашифрованы и используются только для извлечения именно тех данных, которые вы описали в своих моделях данных. Embeddable настоятельно рекомендует создавать пользователя базы данных с правами только для чтения для каждого подключения (Embeddable всегда будет только читать из вашей базы данных, не записывая в нее).

Чтобы поддерживать соединение с разными базами данных для prod, qa, test и т.д. (или чтобы поддерживать разные базы данных для разных клиентов), вы можете назначить каждое соединение окружению (см. Environments API).