Блокировка BLOB-объекта Azure во время записи - PullRequest
0 голосов
/ 30 декабря 2018

Мне нужно обновить большой файл, сохраненный как BLOB-объект Azure.Это обновление займет несколько секунд, и мне нужно убедиться, что никакой другой клиент никогда не получит частично обновленный файл.

Как описано в https://docs.microsoft.com/en-us/azure/storage/common/storage-concurrency, файл должен быть легко заблокирован для записи, но какНасколько я понимаю, другие клиенты по-прежнему смогут читать файл.Я мог бы использовать блокировки чтения, но это означало бы, что только один клиент может прочитать файл, и это не то, что я хочу.

Согласно Предотвращение доступа Azure BLOB-объекта к другому сервису во время его создания Кажется, что по крайней мере новые файлы будут "зафиксированы" в конце загрузки, но я не смог найти информацию о том, что произойдет, когда я обновлю существующий файл.

Итак, вопрос в том, что будут делать другие клиентычитать во время операции обновления (замены)?

  • Будут ли они читать старый файл, пока не будут зафиксированы новые данные, или
  • они будут читать частично обновленное содержимое файла?

1 Ответ

0 голосов
/ 01 января 2019

Я сделал тест для сценария (я не нашел никакого официального документа по этому поводу), обновив файл 400M в BLOB-файле с файлом 600M.и во время обновления (примерно через 10 секунд после начала обновления) используйте код для чтения большого двоичного объекта, который обновляется.

Результат теста таков, что только старый файл может быть прочитан во время обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...