Versionamento
Cenário de aplicação
OBS consegue armazenar várias versões de um objeto. Você pode pesquisar e restaurar versões diferentes rapidamente ou restaurar dados em caso de exclusões acidentais ou falhas de aplicações.
Por padrão, o versionamento é desativado para novos buckets de OBS. Novos objetos irão sobrescrever objetos existentes no caso de terem os mesmos nomes.
Ativação de versionamento
- A ativação de versionamento não altera as versões ou o conteúdo de objetos existentes no bucket. O ID de versão de um objeto é nulo antes da ativação de versionamento. Se um objeto homônimo for carregado após a ativação de versionamento, um ID de versão será atribuído ao objeto. Para mais detalhes, consulte Figura 1.
- Com versionamento ativado, o OBS aloca automaticamente um ID de versão exclusivo para um objeto recém-carregado. Quando um objeto com o mesmo nome de um objeto existente é carregado novamente, ambos os objetos são armazenados em OBS com o mesmo nome, mas os ID de versões diferentes. Para mais detalhes, consulte Figura 2.
Tabela 1 Descrição da versão Versão
Descrição
Última versão
Depois que versionamento for ativado, cada operação em um objeto resultará no salvamento do objeto com um novo ID de versão. O ID de versão gerado na operação mais recente é chamado de versão mais recente.
Versão do histórico
Depois que versionamento for ativado, cada operação em um objeto resultará no salvamento do objeto com um novo ID de versão. Os ID de versão gerados em operações diferentes da operação mais recente são chamados de versões históricas.
- Os objetos mais recentes em um bucket são retornados por padrão após uma solicitação GET object.
- Os objetos podem ser baixados por os ID de versão. Por padrão, o último objeto será baixado se o ID da versão não for especificado.
- Você pode selecionar um objeto e clicar em Delete à direita para excluir o objeto. Após a exclusão do objeto, OBS gera a Delete Marker com um ID de versão exclusivo para o objeto excluído, e o objeto excluído é exibido na lista Deleted Objects. Se você tentar acessar o objeto excluído, um erro 404 será retornado.
Figura 3 Objeto com um marcador de exclusão
- Você pode recuperar um objeto excluído, excluindo a versão do objeto que possui o Delete Marker.
- Depois que um objeto é excluído, você pode especificar o número da versão em Deleted Objects para excluir permanentemente o objeto da versão especificada.
- Um objeto é exibido na lista de objetos ou na lista de objetos excluídos. Ele nunca será exibido nas duas listas ao mesmo tempo.
Por exemplo, após o carregamento e a exclusão do objeto A, ele será exibido na lista Deleted Objects. Se você enviar um objeto chamado A novamente, o objeto A será exibido na lista Objects, e o objeto A excluído anteriormente não será mais exibido na lista Deleted Objects. Para mais detalhes, consulte Figura 4.
- Todas as versões de objetos, exceto aquelas com o Delete Marker armazenado em OBS, são cobradas.
Suspensão de versionamento
Uma vez ativada a função de versionamento, ela pode ser suspensa, mas não pode ser desativada. Depois que versionamento for suspenso, os os ID de versão não serão mais alocados a objetos recém-carregados. Se um objeto com o mesmo nome já existir e não tiver um ID de versão, ele será substituído.
Se as versões de objetos em um bucket não precisarem ser controladas, você poderá suspender a função de versionamento.
- As versões históricas serão mantidas em OBS. Se você não precisar dessas versões históricas, exclua-as manualmente.
- Os objetos podem ser baixados por os ID de versão. Por padrão, o último objeto será baixado se o ID da versão não for especificado.
- Todas as versões de objetos históricos, exceto aquelas com o Delete Marker armazenado em OBS, são cobradas.
Diferenças entre cenários quando versionamento é suspenso e desativado
Se você excluir um objeto quando versionamento estiver suspenso, será gerada uma versão nula com o Delete Marker, independentemente de o objeto ter versões históricas. Porém, se versionamento não estiver ativado, a mesma operação não gerará uma versão com o Delete Marker.
Depois que versionamento é ativado, cada versão histórica de um objeto é armazenada e ocupa espaço de armazenamento. OBS cobra taxas de armazenamento para todas as versões. Tenha cuidado para evitar taxas extras de armazenamento.
Como usar essa função
Você pode configurar versionamento por meio do console de OBS, as API, e os SDK.
Ferramenta |
Referência |
---|---|
Console de OBS |
|
SDK |
OBS suporta kits de desenvolvimento de software (os SDK) em vários idiomas. Para obter detalhes, consulte o guia do desenvolvedor correspondente na página Visão geral de SDK. |
API |