Visão geral do objeto
Um objeto é a unidade básica de armazenamento de dados no OBS. Ele consiste em dados e metadados de objeto que descrevem os atributos desse objeto. Os dados carregados no OBS são armazenados como objetos em buckets.
- Uma chave especifica o nome de um objeto. Uma chave de objeto é uma cadeia UTF-8 que está entre 0 e 1024 caracteres. Cada objeto é identificado exclusivamente por uma chave em um bucket.
- Metadados: especificam a descrição do objeto. Metadados incluem metadados do sistema e metadados personalizados. Metadados são carregados no OBS como pares de chave/valor.
- Metadados do sistema são gerados automaticamente pelo OBS e usados para processar dados de objetos, como Data, Comprimento do conteúdo, Última modificação e Conteúdo-MD5.
- Você pode especificar metadados personalizados para descrever o objeto ao carregar o objeto em OBS.
- Dados: refere-se ao conteúdo que o objeto contém.
Geralmente, objetos são gerenciados como arquivos. No entanto, OBS é um serviço de armazenamento baseado em objetos e não há conceito de arquivos e pastas. Para facilitar o gerenciamento de dados, OBS fornece um método para simular pastas. Ao adicionar uma barra (/) em um nome de objeto, por exemplo,test/123.jpg você pode simular test como uma pasta e 123.jpg como o nome de um arquivo na pasta test. No entanto, a chave do objeto permanece test/123.jpg.
Ao carregar um objeto, você pode definir uma classe de armazenamento para o objeto. Se nenhuma classe de armazenamento for especificada, a classe de armazenamento do objeto permanecerá igual à do bucket. Você também pode alterar a classe de armazenamento de um objeto existente em um bucket.
Você pode Carregamento de um objeto em Como usar essa função com base em seus hábitos e cenários de serviço. Em seguida, o OBS armazena os arquivos como objetos no bucket. No OBS, os buckets estão localizados em diferentes regiões. Não importa o método usado, você pode acessar o mesmo bucket e seus recursos na mesma região.
Diretrizes sobre nomear chaves de objeto
Embora quaisquer caracteres UTF-8 possam ser usados em um nome de chave de objeto, nomear chaves de objeto de acordo com as diretrizes a seguir pode ajudar a maximizar a compatibilidade das chaves de objeto com outros aplicativos. As maneiras de analisar caracteres especiais variam de acordo com os aplicativos. As diretrizes a seguir ajudam os nomes de chave de objeto a atender substancialmente aos requisitos de DNS, caracteres de segurança da Web, analisadores XML e outras API.
Os seguintes conjuntos de caracteres podem ser usados livremente em nomes de chaves.
Caracteres alfanuméricos (também conhecidos como caracteres não reservados) |
[0-9a-zA-Z] |
Caracteres especiais (também conhecidos como caracteres reservados) |
Ponto de exclamação (!) Hífen (-) Sublinhado (_) Período (.) Asterisco (*) Aspas simples (') Colchete esquerdo "(" Suporte direito ")" |
Seguem-se exemplos de nomes de chave de objetos válidos:
4my-organization my.great_photos-2014/jan/myvacation.jpg videos/2014/birthday/video1.wmv
Porcentagem-codificação de caracteres reservados
Se um caractere reservado tem um significado especial (conhecido como propósito reservado) em um URI e o caractere deve ser usado para outros fins no URI, esse caractere deve ser codificado por porcentagem. Use UTF-8 para codificar caracteres não ASCII. Caso contrário, os nomes dos objetos carregados no OBS podem ser diferentes do esperado. Por exemplo, se o caractere reservado "/" for usado como delimitador de componentes de caminho em um URI, o caractere terá um significado especial (separar um nome de bucket de um nome de objeto). Se "/" for usado em um componente do caminho em um URI, use três caracteres "%2F" ou "%2f" para substituir "/".
Caracteres que podem exigir processamento especial
Caracteres que exigem codificação em um nome de chave
- Ampersand (&)
- Sinal do dólar ($)
- Ponto-e-vírgula (;)
- Cólon (:)
- Mais sinal (+): O OBS decodifica os sinais de adição (+) em um URI de solicitação em espaços. Se um nome de chave de objeto original contém sinais de adição (+), ele deve ser codificado em %2B antes de ser colocado no URI da solicitação.
- Espaço: Um grande número de espaços consecutivos pode ser perdido em alguns casos.
- Sinal da igualdade (=)
- No sinal (@)
- Vírgula (,)
- Ponto de interrogação (?)
- Caracteres ASCII: 00-1F na forma hexadecimal (0-31 na forma decimal) e 7F (127 na forma decimal)
Evite usar os seguintes caracteres em nomes de chave, pois esses caracteres exigem muito processamento especial para manter a consistência em todos os aplicativos.
- Barra invertida (\)
- Braçadeira esquerda ({)
- Caracteres ASCII não imprimíveis (128-255 caracteres decimais)
- Inserir símbolo (^)
- Braçadeira direita (})
- Caractere percentual (%)
- Acentuação / Desmarcar (`)
- Colchete direito (])
- Aspa
- Maior do que o sinal (>)
- Colchete esquerdo ([)
- Tilde (~)
- Menos do que o sinal (<)
- Hashtag (#)
- Barra vertical (|)
Observe que OBS adota uma estrutura plana, na qual você cria buckets e armazena objetos em buckets. Não há sub-buckets ou subpastas na estrutura. No entanto, você pode usar prefixos de nome de chave e delimitadores para deduzir a estrutura lógica como console de OBS faz. O conceito de pasta está disponível no console de OBS. Suponha que o bucket (companybucket) contenha quatro objetos com as seguintes chaves de objeto:
- bucket-log/log01.txt
- cgvbs/test1.txt
- 2015-10-14_111756.png
- test1.txt
O console do OBS usa o prefixo do nome da chave (bucket-log/ e cgvbs/) e o separador (/) para exibir a estrutura de pastas, como mostra a figura a seguir.
As chaves 2015-10-14_111756.png e key test1.txt não têm prefixos. Portanto, os objetos aparecem no nível raiz do bucket. Se você abrir a pasta cgvbs/, você verá que ela contém o objeto test1.txt.
Suponha que seu bucket companybucket) contenha dois objetos com as seguintes chaves de objeto:
- obj
- 1/../obj
Se você chamar uma API (por exemplo, uso do SDK) para obter os objetos, poderá obtê-los com êxito. Se você acessar os objetos do console, obj do objeto será retornado com base no relacionamento relativo. Porque ../ tem uma semântica especial em um URI, evite usá-lo em chaves de objeto.