Change feed in Azure Cosmos DB (Канал изменений в Azure Cosmos DB)

Область применения: Nosql Mongodb Кассандра Гремлин

Веб-канал изменений в Azure Cosmos DB собирает и сохраняет все изменения в контейнере порядке их возникновения. Канал изменений, поддерживаемый в Azure Cosmos DB, прослушивает изменения в контейнере Azure Cosmos DB. Затем он выводит отсортированный список документов в порядке, в котором они были изменены. Сохраненные изменения обрабатываются асинхронно и пошагово, а выходные данные могут распределяться в один или несколько объектов-получателей для параллельной обработки.

См. дополнительные сведения о конструктивных шаблонах канала изменений.

Поддерживаемые API и клиентские пакеты SDK

Функция канала изменений в настоящее время поддерживается в следующих пакетах SDK для Azure Cosmos DB.

Клиентские драйверы; NoSQL Apache Cassandra MongoDB Apache Gremlin Таблицу PostgreSQL
.NET Значок, указывающий, что эта функция поддерживается в пакете SDK для .NET для API для NoSQL. Значок, указывающий, что эта функция поддерживается в пакете SDK для .NET для API для Apache Cassandra. Значок, указывающий, что эта функция поддерживается в пакете SDK для .NET для API для MongoDB. Значок, указывающий, что эта функция поддерживается в пакете SDK для .NET для API для Apache Gremlin. Значок, указывающий, что эта функция не поддерживается в пакете SDK для .NET для API для таблицы. Значок, указывающий, что эта функция не поддерживается в пакете SDK для .NET для API для PostgreSQL.
Java Значок, указывающий, что эта функция поддерживается в пакете SDK java для API для NoSQL. Значок, указывающий, что эта функция поддерживается в пакете SDK java для API для Apache Cassandra. Значок, указывающий, что эта функция поддерживается в пакете SDK java для API для MongoDB. Значок, указывающий, что эта функция поддерживается в пакете SDK java для API для Apache Gremlin. Значок, указывающий, что эта функция не поддерживается в пакете SDK java для API для таблицы. Значок, указывающий, что эта функция не поддерживается в пакете SDK java для API для PostgreSQL.
Python Значок, указывающий, что эта функция поддерживается в пакете SDK python для API для NoSQL. Значок, указывающий, что эта функция поддерживается в пакете SDK для Python для API для Apache Cassandra. Значок, указывающий, что эта функция поддерживается в пакете SDK для Python для API для MongoDB. Значок, указывающий, что эта функция поддерживается в пакете SDK для Python для API для Apache Gremlin. Значок, указывающий, что эта функция не поддерживается в пакете SDK python для API для таблицы. Значок, указывающий, что эта функция не поддерживается в пакете SDK для Python для API для PostgreSQL.
Node/JavaScript Значок, указывающий, что эта функция поддерживается в пакете SDK JavaScript для API для NoSQL. Значок, указывающий, что эта функция поддерживается в пакете SDK JavaScript для API для Apache Cassandra. Значок, указывающий, что эта функция поддерживается в пакете SDK JavaScript для API для MongoDB. Значок, указывающий, что эта функция поддерживается в пакете SDK JavaScript для API для Apache Gremlin. Значок, указывающий, что эта функция не поддерживается в пакете SDK JavaScript для API для таблицы. Значок, указывающий, что эта функция не поддерживается в пакете SDK JavaScript для API для PostgreSQL.

Работа с каналом изменений

Для работы с каналом изменений у вас есть следующие варианты:

Канал изменений доступен для диапазонов ключей секции контейнера Azure Cosmos DB. Это позволяет распределять его между одним или несколькими потребителями для параллельной обработки, как показано на рисунке ниже.

Распределенная обработка канала изменений Azure Cosmos DB

Примечание.

Диапазоны ключей секций сопоставляются с физическими секциями при использовании обработчика канала изменений и FeedRanges при использовании модели извлечения.

Функции канала изменений

  • Канал изменений включен по умолчанию для всех учетных записей Azure Cosmos DB.

  • Существует несколько режимов канала изменений, некоторые из которых требуют дополнительной настройки для включения.

  • Вы можете использовать подготовленную пропускную способность для чтения из канала изменений так же, как и любая другая операция Azure Cosmos DB, в любом из регионов, связанных с учетной записью Azure Cosmos DB.

  • Веб-канал изменений включает операции вставки и обновления, внесенные в элементы в контейнере. Если вы используете все версии и удаляете режим (предварительная версия), вы также получите изменения из операций удаления и срока действия TTL.

  • Каждое изменение отображается ровно один раз в канале изменений, и клиенты должны управлять логикой проверка назначения. Если вы предпочитаете обойтись без сложности управления контрольными точками, обработчик канала изменений обеспечивает автоматический механизм установки контрольных точек и семантику "хотя бы однажды". Дополнительные сведения см. в статье об использовании канала изменений с обработчиком канала изменений.

  • Изменения доступны параллельно для диапазонов ключей секции контейнера Azure Cosmos DB. Эта возможность позволяет нескольким потребителям параллельно обрабатывать изменения из больших контейнеров.

  • Приложения могут обращаться сразу к нескольким каналам изменений в одном контейнере.

  • Начальная точка канала изменений может быть настроена, и для каждого режима доступны различные параметры.

Порядок сортировки элементов в канале изменений

Элементы в канале изменений упорядочены по времени их изменения. Этот порядок сортировки гарантируется на ключ секции, и в значениях ключа секции нет гарантированного порядка.

Примечание.

Для учетных записей с несколькими регионами существует две метки времени:

  • Эпоха сервера, в которой запись была написана в локальном регионе. Это записано как _ts.
  • Эпоха, в которой не было подтверждено отсутствие конфликта, или конфликт был разрешен в концентраторе для этой записи. Это записано как crts.

Элементы веб-канала изменений приходят в порядке, записанном по crts.

Канал изменений в учетных записях Azure Cosmos DB с несколькими регионами

В учетной записи Azure Cosmos DB с несколькими регионами изменения в одном регионе доступны во всех регионах. Если отработка отказа области записи завершается сбоем, канал изменений работает во время операции отработки отказа вручную, и это является непрерывным. Для учетных записей с несколькими регионами записи нет никаких гарантий, когда изменения будут доступны. Входящие изменения в один и тот же документ могут быть удалены в режиме последней версии, если в другом регионе произошло более последнее изменение, и все изменения будут записаны во всех версиях и режиме удаления.

Режимы канала изменений

Доступны два режима канала изменений: последняя версия и все версии и режим удаления. Режим, считывающий канал изменений, определяет, какие изменения операций записываются из и метаданные, доступные для каждого изменения. Канал изменений можно использовать в разных режимах в нескольких приложениях для одного контейнера Azure Cosmos DB.

Последний режим версии

В режиме канала изменений последней версии вы увидите последнее изменение из вставки или обновления для всех элементов в веб-канале, а веб-канал доступен для жизни контейнера. Нет никаких сведений о том, является ли данное изменение из операции вставки или обновления, а удаление не фиксируется. Изменения можно считывать в любой момент времени до начала контейнера. Однако если элемент удаляется из канала изменений. Дополнительные сведения см. в статье о режиме смены последней версии.

Все версии и режим удаления (предварительная версия)

Все версии и режим удаления позволяют просматривать все изменения элементов из создания, обновления и удаления. Вы получаете запись о каждом изменении элементов в том порядке, в том числе промежуточные изменения элемента между считываемым каналом изменений. Чтобы прочитать из канала изменений во всех версиях и режиме удаления, необходимо иметь непрерывные резервные копии , настроенные для учетной записи Azure Cosmos DB, которая создает все версии и удаляет веб-канал изменений Azure Cosmos DB. В этом режиме можно считывать только изменения, произошедшие в течение периода непрерывного резервного копирования, настроенного для учетной записи. Дополнительные сведения о регистрации в предварительной версии см. в статье обо всех версиях и удалении режима канала изменений.

Канал изменений в API-интерфейсах для Cassandra и MongoDB

Функции канала изменений отображаются как поток изменений в API для MongoDB и запрос с предикатом в API для Cassandra. Дополнительные сведения о реализации API для MongoDB см. в потоках изменений в API Azure Cosmos DB для MongoDB.

Собственный Apache Cassandra обеспечивает сбор измененных данных (CDC), механизм для флага определенных таблиц для архивации и отклонения записей в эти таблицы после достижения настраиваемого размера на диске для журнала CDC. Функция канала изменений в Azure Cosmos DB для Apache Cassandra улучшает возможность запроса изменений с предикатом с помощью CQL. Дополнительные сведения о реализации см . в веб-канале изменений в Azure Cosmos DB для Apache Cassandra.

Измерение потребления единицы запроса канала изменений

Канал изменений доступен в каждом контейнере независимо от того, используется ли он. Единственной стоимостью канала изменений является подготовленная пропускная способность контейнера аренды и ЕЗ для каждого запроса. Используйте Azure Monitor для измерения потребления единицы запросов (ЕЗ) канала изменений. Дополнительные сведения см. в статье о мониторинге использования пропускной способности или единиц запросов в Azure Cosmos DB.

Следующие шаги

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