Projetar uma estratégia de organização de armazenamento
Quando você cria um aplicativo que precisa armazenar dados, é importante pensar em como o aplicativo vai organizar dados entre contas de armazenamento, contêineres e blobs.
Contas de armazenamento
Uma só conta de armazenamento é flexível o suficiente para organizar seus blobs. No entanto, use contas de armazenamento adicionais conforme necessário para separar logicamente os custos e controlar o acesso a dados.
Contêineres e blobs
A natureza do seu aplicativo e os dados que ele armazena devem orientar a estratégia de nomenclatura e organização de 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, da nomenclatura ou dos metadados para indicar algo sobre seus dados. Esses aplicativos geralmente usam identificadores como GUIDs como nomes de blob e referenciam esses identificadores em registros de banco de dados. O aplicativo usa o banco de dados para determinar o local em que 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. 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 marcas de metadados para armazenar informações sobre blobs e contêineres.
Há algumas coisas importantes a serem consideradas ao decidir como organizar e armazenar blobs e contêineres.
Limitações de nomenclatura
Os nomes de contêiner e blob precisam estar em conformidade com um conjunto de regras, incluindo limitações de tamanho e restrições de caracteres. Para obter informações mais específicas sobre regras de nomenclatura, confira a seção Leitura adicional ao final deste módulo.
Acesso público e contêineres como limites de segurança
Por padrão, todos os blobs exigem autenticação para serem acessados. No entanto, você pode configurar contêineres individuais para permitir o download público de seus blobs sem autenticação. O download público dá suporte a muitos casos de uso, como hospedagem de ativos de site estático e compartilhamento de arquivos. Essa abordagem funciona porque baixar o conteúdo do blob funciona da mesma maneira que ler outros dados na Web. Basta apontar um navegador ou qualquer coisa que possa fazer uma solicitação GET na URL do blob.
Habilitar o acesso público é importante para escalabilidade. Os dados baixados diretamente do Armazenamento de Blobs não geram nenhum tráfego em seu aplicativo do lado do servidor. Planeje usar contêineres separados para 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 a dados.
Cuidado
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 blob em um contêiner público que você não pretenda compartilhar publicamente.
Além do acesso público, o Azure tem um recurso de assinatura de acesso compartilhado que permite o controle de permissões refinadas em contêineres. O controle de acesso de precisão permite cenários que melhoram ainda mais a escalabilidade; portanto, é útil pensar em contêineres como limites de segurança.
Prefixos de nomes de blob (diretórios virtuais)
Os contêineres são simples. Eles não dão suporte a nenhum tipo de aninhamento ou hierarquia. Se você fornecer nomes hierárquicos de blobs 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 pela 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 no Armazenamento de Blobs como se fosse um sistema de arquivos. A navegação de cada pasta dispara uma chamada separada para listar os blobs da pasta. Esse recurso geralmente é chamado de diretórios virtuais.
Observação
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:
- Blobs de blocos são compostos por blocos de tamanhos diferentes que podem ser carregados e baixados de modo independente e em paralelo. A gravação em um blob de blocos envolve carregar dados para blocos e confirmá-los no blob.
- Os blobs de acréscimo são blobs de blocos especializados que dão suporte apenas à anexação de novos dados, não à atualização ou exclusão de dados existentes. Eles são eficientes para essa finalidade. Os blobs de acréscimo são ótimos para cenários como armazenar logs ou escrever dados de streaming.
- Os blobs de páginas dão suporte a 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 Microsoft 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 exigem especificamente blobs de acréscimo ou de páginas. Sua estrutura baseada em blocos dá suporte a uploads e downloads rápidos e acesso eficiente a partes individuais de um blob. A maioria das bibliotecas de clientes gerencia e confirma automaticamente os blocos. Algumas também lidam com uploads e downloads paralelos para maximizar o desempenho.