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

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

Community Maintained

В Embeddable вы определяете Data Models и Components в коде (который хранится в вашем собственном репозитории) и используете наш SDK, чтобы сделать их доступными для вашей команды в мощном no-code‑конструкторе Embeddable.

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

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

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

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

Параметр(ы)Описание
HOST и PORTОбычно используется порт 8443 при использовании TLS или 8123 при отсутствии TLS.
DATABASE NAMEПо умолчанию существует база данных default; используйте имя базы данных, к которой вы хотите подключиться.
USERNAME и PASSWORDПо умолчанию имя пользователя — default. Используйте имя пользователя, соответствующее вашему сценарию.

Сведения о вашем сервисе ClickHouse Cloud доступны в консоли ClickHouse Cloud. Выберите сервис и нажмите Connect:

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

Выберите HTTPS. Параметры подключения отображаются в примере команды curl.

Параметры HTTPS-подключения ClickHouse Cloud

Если вы используете самостоятельное (self-managed) развертывание ClickHouse, параметры подключения задаются администратором ClickHouse.

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

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

// из соображений безопасности это *никогда* не должно вызываться на клиентской стороне
fetch('https://api.embeddable.com/api/v1/connections', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Accept: 'application/json',
    Authorization: `Bearer ${apiKey}` /* храните API-ключ в безопасности */,
  },
  body: JSON.stringify({
    name: 'my-clickhouse-db',
    type: 'clickhouse',
    credentials: {
      host: 'my.clickhouse.host',
      user: 'clickhouse_user',
      port: 8443,
      password: '*****',
    },
  }),
});

Ответ:
Status 201 { errorMessage: null }

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

Значение apiKey можно найти, нажав "Publish" на одном из ваших дашбордов Embeddable.

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

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

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

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

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

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

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