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

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

Community Maintained

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

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

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

1. Подготовьте данные для подключения

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

Параметр(ы)Описание
HOST and PORTTypically, the port is 8443 when using TLS or 8123 when not using TLS.
DATABASE NAMEOut of the box, there is a database named default, use the name of the database that you want to connect to.
USERNAME and PASSWORDOut of the box, the username is default. Use the username appropriate for your use case.

The details for your ClickHouse Cloud service are available in the ClickHouse Cloud console. Select a service and click Connect:

ClickHouse Cloud service connect button

Choose HTTPS. Connection details are displayed in an example curl command.

ClickHouse Cloud HTTPS connection details

If you're using self-managed ClickHouse, the connection details are set by your ClickHouse administrator.

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

Добавьте подключение к базе данных с помощью Embeddable API. Это подключение используется для подключения к вашему сервису 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: '*****',
    },
  }),
});
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).