Кратко:
- Версионирование бакетов важно для сохранения критически важных данных.
- Инструмент версионирования позволяет сохранять историю объектов и получать доступ к предыдущим версиям.
- Версионирование применяется на уровне бакета и затрагивает все объекты внутри него.
- Каждая версия объекта занимает столько же места, сколько и сам объект.
- Версионирование по умолчанию отключено в новом бакете, но может быть включено через консоль управления или API.
- При включенном версионировании объекты получают идентификатор версии, позволяющий работать с конкретной версией.
- При перезаписи версии создается новый объект с новым значением version_id.
- Отключить версионирование невозможно, но можно приостановить, сохраняя старые версии и сохраняя только последнюю при перезаписи.
Версионирование бакетов
Мы можем потерять данные из-за ошибки пользователей, действий злоумышленников или сбоя в приложениях. Но некоторые данные критически важны. Их нельзя терять даже из-за форс-мажора. В примере с рентгеновскими снимками хранение всех версий электронных медицинских документов — это требование российского законодательства.
Благодаря версионированию — специальному инструменту хранилища — вы не потеряете объекты даже после удаления или перезаписи.
Версионирование сохраняет историю объекта и позволяет получать доступ к его предыдущим версиям. Версионирование включается на уровне бакета и применяется ко всем объектам внутри него. Взамен вы платите за место, ведь каждая версия объекта — это его полная копия, она занимает столько же места в вашем хранилище.
В новом бакете версионирование по умолчанию приостановлено. Загружаемым объектам присваивается идентификатор версии version_id равный
null
. В этом случае хранится только последняя версия каждого объекта.Версионирование для бакета включается через консоль управления или с помощью API.
Когда версионирование включено, загружаемые объекты получают отличное от
null
значение параметра version_id, который позволяет работать с конкретной версией объекта. При перезаписи версии создается новый объект с тем же ключом (идентификатором объекта в бакете) и случайно сгенерированным значением version_id. Для обращения к предыдущим версиям объекта используются его ключ и version_id.Отключить версионирование нельзя — можно лишь приостановить. Тогда все старые версии останутся доступными, а при перезаписи будет сохраняться только последняя из новых версий.
При удалении версия помечается delete-маркером и не занимает места в хранилище. Очищайте бакет от ненужных или удалённых версий вручную или настройте жизненный цикл объектов.