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

Можно ли выполнять запросы к отдельным полям в типе JSON?

Для прямого доступа к полям, например {"user_id": 123}, можно использовать точечную нотацию:
SELECT doc.user_id as user_id FROM your_table;
Для прямого доступа к полям вложенного объекта, например {"address": { "city": "San Francisco", "state": "CA" }}, используйте оператор ^:
SELECT doc.^address.city AS city FROM your_table;
Для агрегаций приведите поле к нужному типу с помощью функции CAST или синтаксиса :::
SELECT sum(doc.shipping.cost::Float32) AS total_shipping_cost FROM t1;
Чтобы узнать больше о работе с JSON, см. руководство по работе с JSON.

Как развернуть вложенные документы MongoDB в ClickHouse?

По умолчанию документы MongoDB реплицируются в ClickHouse как тип JSON с сохранением вложенной структуры. Развернуть эти данные можно несколькими способами. Если вам нужно разложить данные по столбцам, используйте normal view, materialized view или доступ на этапе выполнения запроса.
  1. Normal Views: Используйте normal view, чтобы инкапсулировать логику разворачивания.
  2. Materialized Views: Для небольших датасетов можно использовать обновляемые materialized view с модификатором FINAL, чтобы периодически разворачивать данные и выполнять дедупликацию. Для более крупных датасетов мы рекомендуем использовать incremental materialized views без FINAL, чтобы разворачивать данные в реальном времени, а затем выполнять дедупликацию на этапе выполнения запроса.
  3. Query-time Access: Вместо разворачивания используйте точечную нотацию для прямого доступа к вложенным полям в запросах.
Подробные примеры см. в нашем руководстве по работе с JSON.

Можно ли подключать базы данных MongoDB без публичного IP-адреса или расположенные в частных сетях?

Мы поддерживаем AWS PrivateLink для подключения к базам данных MongoDB без публичного IP-адреса или расположенным в частных сетях. Azure Private Link и GCP Private Service Connect в настоящее время не поддерживаются.

Что произойдет, если я удалю базу данных/таблицу из MongoDB?

Если вы удалите базу данных/таблицу из MongoDB, ClickPipes продолжит работу, но для удаленной базы данных/таблицы репликация изменений прекратится. Соответствующие таблицы в ClickHouse будут сохранены.

Как MongoDB CDC Connector обрабатывает транзакции?

Каждое изменение документа в транзакции обрабатывается отдельно и передается в ClickHouse. Изменения применяются в том порядке, в котором они появляются в oplog, и в ClickHouse реплицируются только зафиксированные изменения. Если транзакция MongoDB откатывается, эти изменения не появятся в потоке изменений. Больше примеров см. в нашем руководстве по работе с JSON.

Как устранить ошибку resume of change stream was not possible, as the resume point may no longer be in the oplog.?

Эта ошибка обычно возникает, когда oplog усекается и ClickPipe не может возобновить поток изменений с ожидаемой точки. Чтобы устранить эту проблему, повторно синхронизируйте ClickPipe. Чтобы проблема не возникала снова, рекомендуем увеличить время хранения oplog. См. инструкции для MongoDB Atlas, самоуправляемого MongoDB или Amazon DocumentDB.

Как управляется репликация?

Мы используем нативный API Change Streams MongoDB для отслеживания изменений в базе данных. API Change Streams предоставляет поток изменений в базе данных с возможностью возобновления, используя oplog MongoDB (журнал операций). ClickPipe использует токены возобновления MongoDB, чтобы отслеживать позицию в oplog и гарантировать, что каждое изменение реплицируется в ClickHouse.

Какое предпочтение чтения выбрать?

Выбор предпочтения чтения зависит от вашего конкретного сценария использования. Если вы хотите минимизировать нагрузку на основной узел, рекомендуем использовать предпочтение чтения secondaryPreferred. Если вы хотите оптимизировать задержку ингестии, рекомендуем использовать предпочтение чтения primaryPreferred. Подробнее см. в документации MongoDB.

Поддерживает ли MongoDB ClickPipe сегментированный кластер?

Да, MongoDB ClickPipe поддерживает как Replica Set, так и сегментированный кластер.

Поддерживает ли MongoDB ClickPipe Amazon DocumentDB?

Да, MongoDB ClickPipe поддерживает Amazon DocumentDB 5.0. Подробнее см. в руководстве по настройке источника Amazon DocumentDB. Мы поддерживаем PrivateLink для кластеров MongoDB (и DocumentDB) только в AWS. Обратите внимание: в отличие от одноузловой реляционной базы данных, клиент MongoDB требует успешного обнаружения Replica Set, чтобы учитывать настроенный ReadPreference. Для этого необходимо настроить PrivateLink для всех узлов в кластере, чтобы клиент MongoDB мог успешно установить соединение с Replica Set, а также переключиться на другой узел, если текущий подключенный узел станет недоступен. Если вы предпочитаете подключаться к одному узлу в вашем кластере, можно пропустить обнаружение Replica Set, указав /?directConnection=true в строке подключения при настройке ClickPipes. В этом случае настройка PrivateLink будет аналогична настройке для одноузловой реляционной базы данных и является самым простым вариантом поддержки PrivateLink. Для подключения к Replica Set вы можете настроить PrivateLink для MongoDB либо с помощью ресурса VPC, либо с помощью VPC endpoint service. Если вы выбираете ресурс VPC, потребуется создать конфигурацию ресурса GROUP, а также конфигурацию ресурса CHILD для каждого узла в кластере. Если вы выбираете VPC endpoint service, потребуется создать отдельный Endpoint Service (и отдельный NLB) для каждого узла в кластере. Подробности см. в документации AWS PrivateLink for ClickPipes. Если вам нужна помощь, обратитесь в ClickHouse Support.
Последнее изменение 10 июня 2026 г.