Conceber uma estratégia de organização do armazenamento
Ao projetar um aplicativo que precisa armazenar dados, é importante pensar em como o aplicativo organizará os dados entre contas de armazenamento, contêineres e blobs.
Contas de armazenamento
Uma única conta de armazenamento é flexível o suficiente para organizar seus blobs. No entanto, você deve usar mais contas de armazenamento conforme necessário para separar logicamente os custos e controlar o acesso aos dados.
Contentores e blobs
A natureza do seu aplicativo e os dados que ele armazena devem orientar sua estratégia para nomear e organizar contêineres e blobs.
Os aplicativos que usam blobs como parte de um esquema de armazenamento que inclui um banco de dados geralmente não precisam depender muito da organização, nomenclatura ou metadados para indicar qualquer coisa sobre seus dados. Essas aplicações normalmente utilizam identificadores, como GUIDs como nomes de blobs, e referenciam estes identificadores nos registos da base de dados. O aplicativo usa o banco de dados para determinar onde os blobs são armazenados e o tipo de dados que eles contêm.
Outros aplicativos usam o Armazenamento de Blobs do Azure mais como um sistema de arquivos pessoal. Os nomes de contêiner e blob indicam significado e estrutura. Os nomes de blob nesses tipos de aplicativos geralmente se parecem com nomes de arquivo tradicionais. Eles podem incluir extensões de nome de arquivo como .jpg para indicar que tipo de dados eles contêm. Esses aplicativos usam diretórios virtuais para organizar blobs. Eles frequentemente usam tags de metadados para armazenar informações sobre blobs e contêineres.
Existem alguns aspetos importantes a ter em consideração ao decidir como organizar e armazenar blobs e contentores.
Limitações de nomenclatura
Os nomes de contentor e blob têm de estar em conformidade com um conjunto de regras, incluindo as limitações de comprimento e as restrições de carateres. Para obter informações mais específicas sobre regras de nomenclatura, consulte a seção Leitura adicional no final deste módulo.
Acesso público e contentores como limites de segurança
Por predefinição, todos os blobs exigem autenticação para aceder. No entanto, você pode configurar contêineres individuais para permitir o download público de seus blobs sem autenticação. O download público suporta muitos casos de uso, como hospedagem de ativos estáticos de sites e compartilhamento de arquivos. Essa abordagem funciona porque o download de conteúdo de blob funciona da mesma forma que a leitura de quaisquer outros dados pela Web. Basta apontar um navegador ou qualquer coisa que possa fazer uma solicitação GET no URL do blob.
Habilitar o acesso público é importante para a escalabilidade. Os dados baixados diretamente do Armazenamento de Blobs não geram tráfego em seu aplicativo do lado do servidor. Planeje usar contêineres separados para os dados que você deseja que estejam disponíveis publicamente, mesmo que você não permita imediatamente o acesso público ou use um banco de dados para controlar o acesso aos dados.
Atenção
Qualquer pessoa que conheça as URLs de armazenamento pode baixar blobs em um contêiner configurado para acesso público sem qualquer tipo de autenticação ou auditoria. Nunca coloque dados de blobs num contentor público que não pretenda partilhar publicamente.
Além do acesso público, o Azure tem uma funcionalidade de assinatura de acesso partilhado que permite o controlo refinado de permissões em contentores. O controle de acesso preciso permite cenários que melhoram ainda mais a escalabilidade, por isso é útil pensar nos contêineres como limites de segurança.
Prefixos de nome de blob (diretórios virtuais)
Os contentores são planos. Eles não suportam nenhum tipo de aninhamento ou hierarquia. Se você der aos seus blobs nomes hierárquicos que se parecem com caminhos de arquivo, como finance/budgets/2017/q1.xls, a operação de listagem da API poderá filtrar os resultados para prefixos específicos. Essa abordagem permite que você navegue na lista como se fosse um sistema hierárquico de arquivos e pastas.
Algumas ferramentas e bibliotecas de clientes usam essa abordagem para visualizar e navegar pelo Armazenamento de Blobs como se fosse um sistema de arquivos. A navegação de cada pasta aciona uma chamada separada para listar os blobs nessa pasta. Esse recurso é frequentemente chamado de diretórios virtuais.
Nota
Se você habilitar o recurso de namespace hierárquico da conta, os diretórios não serão mais virtuais. Em vez disso, eles se tornam objetos concretos e independentes nos quais você pode operar diretamente. Um diretório pode existir sem conter nenhum arquivo. Este módulo descreve apenas contas que não têm o recurso de namespace hierárquico habilitado.
Tipos de blobs
Há três tipos diferentes de blobs nos quais você pode armazenar dados:
- Os Blobs de blocos são compostos por blocos de tamanhos diferentes que podem ser carregados de forma independente e em paralelo. Escrever para um blob de blocos envolve carregar os dados para blocos e consolidá-los nos blobs.
- Os blobs de acréscimo são blobs de bloco especializados que suportam apenas o acréscimo de novos dados, não atualizando ou excluindo dados existentes. Eles são eficientes para esse fim. Os blobs de acréscimo são ótimos para cenários como armazenar registos ou escrever dados transmitidos.
- Os blobs de página suportam cenários que envolvem leituras e gravações de acesso aleatório. Os blobs de página são usados para armazenar os arquivos de disco rígido virtual (VHD) usados pelas Máquinas Virtuais do Azure. Eles são ótimos para qualquer cenário que envolva acesso aleatório.
Os blobs de blocos são a melhor opção para a maioria dos cenários que não chamam especificamente blobs de acréscimo ou de página. Sua estrutura baseada em blocos suporta uploads e downloads rápidos e acesso eficiente a partes individuais de um blob. A maioria das bibliotecas de clientes gerencia e confirma blocos automaticamente. Alguns também lidam com uploads e downloads paralelos para maximizar o desempenho.