Модель согласованности данных Amazon S3 содержит следующее примечание:
Amazon S3 в настоящее время не поддерживает блокировку объектов для одновременных обновлений. Если два запроса PUT выполняются одновременно к одному и тому же ключу, побеждает запрос с последней меткой времени. Если это проблема, вам нужно будет встроить механизм блокировки объектов в свое приложение.
Для своего приложения я рассматриваю возможность разрешения конфликтов, вызванных одновременной записью , путем анализа всех версий объекта на стороне клиента, чтобы собрать один составной объект, и, надеюсь, согласовать два изменения.
Однако я не могу найти окончательного ответа на вопрос, как часть, выделенная жирным шрифтом , разыгрывается в сегментах с поддержкой версий. В частности, после прочтения того, как работает Object Versioning , кажется, что S3 сразу же создаст новую версию объекта с уникальным идентификатором версии для каждого PUT, после чего я предполагаю, что начнется репликация данных, и S3 должен будет определить, какую из двух одновременных операций записи сохранить. Итак, вопросы, которые у меня есть по этой части:
- Будет ли S3 отслеживать отдельную версию для каждой из двух одновременных записей для объекта?
- Увижу ли я обе версии при запросе списка версий объекта с помощью API, причем одна из них произвольно помечена как текущая?