2016-05-22 2 views
3

Я прочитал эту онлайн-статью о параллелизме в Microsoft Azure Storage, в частности Table Storage. https://azure.microsoft.com/en-us/blog/managing-concurrency-in-microsoft-azure-storage-2/Настольное хранилище Azure - Управление параллелизмом

В нем объясняется, что хранилище таблиц будет по умолчанию оптимистичной стратегией параллелизма. Использование электронных тегов является ключом к реализации стратегии. Например, для операции «Заменить» требуется «Сопоставление» электронных тегов и всегда будет возвращать E-теги в ответе службы. Поэтому, если я хочу использовать операцию Replace, я должен убедиться, что отправляемый объект имеет значение E-Tag. Это имеет значение для дизайна. Например, я должен быть осторожным при абстрагировании объектов моего домена приложения от своих объектов записи данных, поскольку сопоставление между слоями потеряет контекст E-Tag, если я не введу концепт E-Tag, возможно, как идентификатор корреляции, который является более широким общий для моих объектов домена. Так что это не проблема. Проблема заключается в моем замешательстве в операции InsertOrReplace. Это не требует If-Match. Как это возможно, когда операция выполняет Replace? Кроме того, как это влияет на управление параллелизмом? Означает ли это, что для операции InsertOrReplace, специфичной для операции InsertOrReplace, TableService по умолчанию будет использовать последнюю стратегию выигрыша от записи?

ответ

1

Да, Azure Storage Table Service примет заявку на последнюю стратегию выигрыша от записи для операции InsertOrReplace.

Операция Insert or Replace Entity не использует заголовок If-Match и должна вызываться с использованием версии 2011-08-18 или новее. Эти атрибуты отличает эту операцию от операции Update Entity. Если операция «Вставить или заменить сущность» используется для замены объекта, любые свойства из предыдущего объекта будут удалены, если новый объект не определяет их. Свойства с нулевым значением также будут удалены.

Если вы хотите, чтобы последняя стратегия победы победителя для операции Replace, установите ETag на «*».

Чтобы принудительно выполнить операцию безусловного обновления, задайте значение заголовка If-Match символу подстановки (*) в запросе. Передача этого значения в операцию переопределит оптимистичный параллелизм по умолчанию и игнорирует любое несоответствие значений ETag.

Смежные вопросы