Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2022-11-24 GMT+08:00

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.

Um objeto consiste em dados, metadados e uma chave.
  • 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.