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

ClickPipes для MongoDB FAQ

Могу ли я запросить отдельные поля в формате 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 реплицируются как тип JSON в ClickHouse по умолчанию, сохраняя вложенную структуру. У вас есть несколько вариантов для развертывания этих данных. Если вы хотите развернуть данные в колонки, вы можете использовать обычные представления, материализованные представления или доступ во время запроса.

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

Для подробных примеров смотрите наше Руководство по работе с 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.

Как мне справиться с ошибкой возобновление потока изменений было невозможно, так как точка возобновления может больше не существовать в oplog.?

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

Как осуществляется управление репликацией?

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

Какой режим чтения я должен использовать?

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

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

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