Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL
Azure Cosmos DB предлагает два режима канала изменений. Каждый режим предлагает одинаковые основные функциональные возможности. Различия включают операции, которые записываются в канале обновлений, метаданные, доступные для каждого конкретного изменения, и срок хранения изменений. Поток изменений можно обрабатывать в разных режимах в нескольких приложениях для одного контейнера Azure Cosmos DB, чтобы соответствовать требованиям каждой рабочей нагрузки. Каждое приложение источника изменений может быть настроено только для чтения источника изменений в одном режиме. Использование канала изменений в одном режиме не запрещает использовать его в другом режиме в другом приложении.
Примечание.
У вас есть какие-либо отзывы о режимах канала изменений? Нам очень интересно ваше мнение! Вы можете поделиться отзывами напрямую с командой инженеров Azure Cosmos DB. [email protected]
Режим потока изменений последней версии
Режим последней версии — это постоянная запись изменений, внесённых в элементы в процессе создания и обновления. Вы получаете последнюю версию каждого элемента в контейнере. Например, если элемент создается, а затем обновляется перед чтением канала изменений, в канале изменений отображается только обновленная версия. Удаления не фиксируются как изменения, равно как и при удалении элемента они перестают быть доступными в потоке. Режим канала изменений последней версии включен по умолчанию и совместим со всеми учетными записями Azure Cosmos DB, кроме API для таблицы и API для PostgreSQL. Этот режим ранее был способом использования канала изменений по умолчанию.
Все версии и удаление режима канала изменений (предварительная версия)
Режим всех версий и удалений (предварительная версия) — это непрерывный учет всех изменений элементов из операций создания, обновления и удаления. Вы получаете запись каждого изменения элементов в порядке, в котором они произошли, включая промежуточные изменения элементов между прочтениями из канала изменений. Например, если элемент создается, а затем обновляется перед чтением канала изменений, в канале изменений отображаются версии создания и обновления элемента. Чтобы прочитать из канала изменений во всех версиях и режиме удаления, необходимо иметь непрерывные резервные копии , настроенные для учетной записи Azure Cosmos DB. Включение непрерывного резервного копирования создает все версии и удаляет поток изменений. При использовании этого режима канала изменений можно считывать только изменения, произошедшие в течение периода непрерывного резервного копирования. Этот режим совместим только с учетными записями Azure Cosmos DB для NoSQL. Узнайте больше о том, как зарегистрироваться для предварительной версии.
Варианты использования потока изменений
В режиме последней версии можно легко обрабатывать как в режиме реального времени, так и исторические изменения элементов в контейнере с возможностью вернуться к изменениям с самого начала контейнера.
Ниже приведены сценарии, которые хорошо подходят для этого режима:
Миграция всего контейнера в дополнительное расположение.
Возможность повторной обработки изменений с самого начала контейнера.
Обработка в режиме реального времени изменений в элементах контейнера, возникающих в результате операций создания и обновления.
Рабочие нагрузки, для которых не требуется фиксировать удаления или промежуточные изменения между чтениями.
Функции каждого режима
Помимо общих функций всех режимов канала изменений, каждый из них имеет следующие характеристики:
Лента изменений включает операции вставки и обновления, которые применяются к элементам в контейнере.
Этот режим канала изменений не регистрирует удаления. Вы можете зафиксировать удаление, установив флаг "мягкого удаления" в элементах вместо их непосредственного удаления. Например, можно добавить атрибут в элемент, называемый
deleted
со значениемtrue
, а затем задать время жизни (TTL) для элемента. Поток изменений регистрирует это как обновление, и элемент автоматически удаляется при истечении срока действия TTL. Кроме того, можно задать конечный срок действия элементов с помощью функции TTL. С этим решением необходимо обрабатывать изменения в более короткий промежуток времени, чем период истечения срока жизни TTL.В поток изменений включается только последнее изменение конкретного элемента. Промежуточные изменения могут быть недоступны.
Когда элемент удаляется, он больше недоступен в канале изменений.
Изменения могут быть синхронизированы в любой момент времени, и не существует фиксированного периода хранения данных, для которого доступны изменения.
Возможность фильтрации канала изменений для просмотра только операций определенного типа не предусмотрена. Одним из возможных вариантов является добавление "мягкого маркера" на элемент для обновлений и фильтрации на основе маркера при обработке элементов в потоке изменений.
Начальная точка чтения канала изменений может быть с начала контейнера, с определенного момента времени, с текущего момента или с определенной контрольной точки. Точность времени начала составляет примерно пять секунд.
Работа с каналом изменений
Каждый режим совместим с различными методами для чтения канала изменений для каждого языка.
Вы можете использовать следующие способы потребления изменений из канала изменений в режиме последней версии:
Метод чтения ленты изменений | .СЕТЬ | Java | Питон | Node.js |
---|---|---|---|---|
Модель подписки на ленту изменений | Да | Да | Да | Да |
Обработчик потока изменений | Да | Да | Нет | Нет |
триггер Azure Functions | Да | Да | Да | Да |
Анализ объекта ответа
В последнем режиме версии объект ответа по умолчанию представляет собой массив измененных элементов. Каждый элемент содержит стандартные метаданные для любого элемента Azure Cosmos DB, включая _etag
и _ts
с добавлением нового свойства _lsn
.
Формат _etag
является внутренним и не должен зависеть от него, так как он может изменяться в любое время.
_ts
— это изменение или метка времени создания. Для хронологического сравнения можно использовать _ts
.
_lsn
— это пакетный идентификатор, добавляемый только для канала изменений, представляющий идентификатор транзакции. Многие элементы могут иметь одинаковые _lsn
.
ETag
на FeedResponse
отличается от того, что _etag
отображается на предмете.
_etag
— это внутренний идентификатор, который используется для управления параллелизмом. Свойство _etag
представляет версию элемента, а свойство ETag
используется для упорядочивания веб-канала.
Следующие шаги
Дополнительные сведения о канале изменений можно найти в следующих статьях:
- Обзор потока изменений
- Изменение шаблонов оформления веб-канала
- Варианты чтения канала изменений (Варианты чтения канала изменений)