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

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

Community Maintained

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

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

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

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

To connect to ClickHouse with HTTP(S) you need this information:

Parameter(s)Description
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 are using self-managed ClickHouse, the connection details are set by your ClickHouse administrator.

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).