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

ClickPipes для MongoDB: часто задаваемые вопросы

Могу ли я выполнять запросы к отдельным полям 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.

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

Документы MongoDB по умолчанию реплицируются в ClickHouse как тип JSON с сохранением вложенной структуры. У вас есть несколько вариантов для их развёртывания. Если вы хотите развернуть данные в колонки, вы можете использовать обычные представления, материализованные представления или доступ во время выполнения запроса.

  1. Обычные представления: Используйте обычные представления для инкапсуляции логики развёртывания.
  2. Материализованные представления: Для небольших наборов данных вы можете использовать обновляемые материализованные представления с модификатором FINAL для периодического развёртывания и дедупликации данных. Для больших наборов данных мы рекомендуем использовать инкрементальные материализованные представления без FINAL для развёртывания данных в реальном времени, а затем выполнять дедупликацию данных во время выполнения запроса.
  3. Доступ во время выполнения запроса: Вместо развёртывания используйте точечную (dot) нотацию для прямого доступа к вложенным полям в запросах.

Подробные примеры приведены в нашем руководстве Работа с JSON.

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

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

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

Когда вы удаляете базу данных или таблицу из MongoDB, ClickPipes продолжит работу, но удалённая база данных или таблица перестанет реплицировать изменения. Соответствующие таблицы в ClickHouse сохраняются.

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

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

Для дополнительных примеров см. наше руководство Работа с 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 MongoDB Change Streams для отслеживания изменений в базе данных. Change Streams API предоставляет возобновляемый поток изменений базы данных, используя oplog MongoDB (журнал операций). ClickPipe использует токены возобновления MongoDB для отслеживания позиции в oplog и обеспечивает репликацию каждого изменения в ClickHouse.

Какой read preference мне следует использовать?

Выбор режима read preference зависит от вашего конкретного варианта использования. Если вы хотите минимизировать нагрузку на основной (primary) узел, мы рекомендуем использовать режим 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 Resource, либо с использованием VPC Endpoint Service. Если вы выбираете VPC Resource, вам нужно создать конфигурацию ресурса GROUP, а также конфигурацию ресурса CHILD для каждого узла в кластере. Если вы выбираете VPC Endpoint Service, вам нужно создать отдельный Endpoint Service (и отдельный NLB) для каждого узла в кластере.

За дополнительными сведениями обратитесь к документации AWS PrivateLink для ClickPipes. За помощью свяжитесь со службой поддержки ClickHouse.