Поделиться через


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

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

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

Дополнительные сведения см. в разделе "Шаблоны проектирования канала изменений в Azure Cosmos DB".

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

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

Клиентские драйверы; NoSQL Apache Cassandra MongoDB Apache Gremlin Таблица PostgreSQL
.СЕТЬ Значок, указывающий, что эта функция поддерживается в пакете 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.
Ява Значок, указывающий, что эта функция поддерживается в пакете 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.
Питон Значок, указывающий, что эта функция поддерживается в пакете 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.

  • Изменения доступны одновременно для диапазонов ключей раздела в контейнере 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 для измерения потребления RU change feed. Дополнительные сведения см. в статье «Мониторинг использования пропускной способности или единиц запросов операции».

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

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