Облачная платформаAdvanced

Обзор версионирования

Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

OBS может хранить несколько версий объекта. Вы можете быстро искать и восстанавливать разные версии или восстанавливать данные в случае случайных удалений или сбоев приложения.

По умолчанию функция версионирования отключена для новых бакетов в OBS. Поэтому, если вы загрузите объект в бакет, где уже существует объект с тем же именем, новый объект перезапишет существующий.

Включение версионирования

  • Включение версионирования не изменяет версии и содержимое существующих объектов в бакете. Идентификатор версии объекта null до включения версионирования. Если объект с тем же именем загружается после включения версионирования, объекту будет присвоен идентификатор версии. Подробности см. Figure 1.

    Figure 1 Версионирование (с существующими объектами)


  • OBS автоматически назначает уникальный идентификатор версии ново загруженному объекту. Объекты с одинаковым именем хранятся в OBS с разными идентификаторами версий.

    Figure 2 Версионирование (для новых объектов)


    Table 1 Описание версии

    Версия

    Описание

    Последняя версия

    После включения версионирования каждая операция с объектом приводит к сохранению объекта с новым идентификатором версии. Идентификатор версии, сгенерированный при последней операции, называется последней версией.

    Историческая версия

    После включения версионирования каждая операция с объектом приводит к сохранению объекта с новым идентификатором версии. Идентификаторы версий, сгенерированные при операциях, отличных от последней операции, называются историческими версиями.

  • Последние объекты в бакете возвращаются по умолчанию после запроса GET Object.
  • Объекты можно загрузить по идентификаторам версии. По умолчанию загружается последний объект, если идентификатор версии не указан. Для получения подробной информации см. Related Operations в Configuring Versioning.
  • Можно выбрать объект и нажать Delete справа, чтобы удалить объект. После удаления OBS вставляет маркер удаления. Удалённый объект появляется в списке Deleted Objects. Для получения подробной информации см. Deleting an Object or Folder. Если затем попытаться получить доступ к этому удалённому объекту, будет возвращена ошибка 404.

    Figure 3 Объект с маркером удаления


  • Можно восстановить удалённый объект, удалив маркер удаления. Для получения подробной информации см. Related Operations в Undeleting an Object.
  • После удаления объекта можно указать номер версии в Deleted Objects, чтобы окончательно удалить объект указанной версии. Для получения подробной информации см. Related Operations в Deleting an Object or Folder.
  • Объект отображается либо в списке объектов, либо в списке удалённых объектов. Он никогда не будет отображаться в обоих списках одновременно.

    Например, после удаления объекта A он появится в списке Deleted Objects. Если позже загрузить другой объект с тем же именем A, новый объект A появится в списке Objects, но ранее удалённый объект A исчезнет из списка Deleted Objects. Для получения подробной информации см. Figure 4.

    Figure 4 Загрузка одноимённого объекта после удаления оригинального


Приостановка версионирования

После включения версионирования для бакета его нельзя отключить, но его можно приостановить. При приостановке версионирования новому загруженному объекту будет присвоен null, а не конкретный идентификатор версии. Если у нового загруженного объекта то же имя, что и у существующего объекта с null‑идентификатором версии, новый объект перезапишет существующий объект.

Figure 5 Версии объектов в сценарии, когда версионирование приостановлено


Если версионирование больше не требуется, его можно приостановить. После приостановки версионирования:

  • Существующие версии объектов по‑прежнему сохраняются в OBS. Если вы больше не нуждаетесь в этих версиях, удалите их вручную.
  • Объекты можно загрузить по идентификаторам версии. По умолчанию загружается последний объект, если идентификатор версии не указан.

Различия между сценариями, когда Versioning приостановлен и отключён

Если вы удалите объект после того, как versioning приостановлен для bucket, будет создан delete marker, независимо от того, имеет ли объект исторические версии. Однако, если versioning отключён, та же операция не создаст delete marker.