Armazenamento de objetos, blocos e arquivos: diferenças

Block storage entrega um disco bruto, file storage entrega pastas compartilhadas e object storage entrega objetos acessados por API HTTP. Cada um serve a um tipo de carga: banco de dados, arquivos compartilhados ou mídia e arquivos estáticos.

Atualizado em 5 min de leitura

Objetivos de aprendizado

Depois de ler este artigo, você vai conseguir:

  • Entender como blocos, arquivos e objetos organizam os dados
  • Comparar latência, escala, acesso e uso típico de cada tipo
  • Escolher o tipo certo para banco, arquivos de usuário ou mídia
Nesta página

Quando alguém diz "preciso de storage", pode estar falando de três coisas bem diferentes. Um banco de dados quer um disco rápido. Um time quer uma pasta compartilhada. Um site quer servir milhares de imagens. Cada necessidade pede um modelo próprio, e escolher o errado sai caro em desempenho ou em complexidade.

Os três modelos são block storage (blocos), file storage (arquivos) e object storage (objetos). A diferença está em quem organiza os dados e em como você os acessa.

Blocos1 servidorblocos fixosbanco de dadosArquivosvários servidoresárvore de pastaspastas de equipeObjetosAPI HTTPbucket planoimagens, vídeosServidor/dadosfotos/a.jpgClientePUT/GETimg/a.jpgvid/b.mp4logs/c.gz
Blocos são um disco bruto de um servidor, arquivos são pastas compartilhadas pela rede, objetos são chaves num bucket via HTTP.

Como cada tipo de armazenamento guarda os dados?#

Blocos. Os dados são divididos em blocos de tamanho fixo, cada um com um endereço. Você lê e escreve blocos individuais diretamente. O resultado é um dispositivo bruto, sem pastas: o sistema operacional o formata com um sistema de arquivos (ext4, XFS, NTFS) e o usa como um disco. A documentação do Amazon EBS descreve exatamente isso: um dispositivo de bloco que você anexa a uma instância e usa como um disco rígido físico.

Arquivos. Os dados ficam numa hierarquia de pastas e arquivos, com nomes, caminhos e permissões de usuário e grupo. A diferença para o bloco é que o sistema de arquivos já vem pronto e pode ser compartilhado: vários servidores montam a mesma pasta pela rede, normalmente por NFS ou SMB. O Amazon EFS, por exemplo, usa NFS 4 e permissões POSIX.

Objetos. Cada arquivo vira um objeto: o conteúdo, uma chave única e metadados. Os objetos ficam num espaço plano (um bucket) e são acessados por uma API HTTP, com operações como PUT, GET e DELETE. Não há disco montado nem pasta de verdade. Os detalhes estão em o que é armazenamento de objetos.

Qual a diferença na prática?#

O mesmo arquivo, duas formas de acessar:

python
import os

import boto3


def editar_em_disco():
    # Bloco ou arquivo: o sistema operacional entrega um caminho montado.
    # Você abre o arquivo e escreve no meio dele.
    with open("/dados/relatorio.csv", "r+b") as f:
        f.seek(1024)
        f.write(b"novo conteudo")  # altera só esses bytes


def enviar_como_objeto():
    # Objeto: não há caminho montado, só chave e API HTTP.
    # Para mudar um byte, você envia o objeto inteiro de novo.
    s3 = boto3.client(
        "s3",
        endpoint_url=os.environ["S3_ENDPOINT"],
        aws_access_key_id=os.environ["S3_ACCESS_KEY"],
        aws_secret_access_key=os.environ["S3_SECRET_KEY"],
    )
    with open("relatorio.csv", "rb") as f:
        s3.put_object(Bucket="meu-bucket", Key="relatorios/relatorio.csv", Body=f)

No primeiro caso, o programa usa chamadas de sistema de arquivos e altera bytes no lugar. No segundo, cada operação é uma requisição de rede que lê ou troca o objeto inteiro. Por isso um programa escrito para disco não funciona em object storage sem adaptação, e o contrário também vale.

Tabela comparativa#

Característica Blocos Arquivos Objetos
Unidade Bloco de tamanho fixo Arquivo em pasta Objeto com chave e metadados
Organização Disco bruto, sem estrutura Hierarquia de pastas Espaço plano em buckets
Acesso Anexado a um servidor Montado pela rede (NFS, SMB) API HTTP (REST, compatível com S3)
Escrita parcial Sim Sim Em geral não: o objeto é substituído inteiro
Latência Mais baixa Baixa a média Mais alta por requisição
Escala Limitada ao volume Alta (o Amazon EFS chega a petabytes) Petabytes e bilhões de objetos
Compartilhamento Em geral um servidor por vez Vários servidores ao mesmo tempo Qualquer cliente com credencial ou URL
Uso típico Bancos, sistema operacional, máquinas virtuais Pastas de equipe, conteúdo compartilhado Imagens, vídeos, exportações, arquivos estáticos

A AWS descreve o block storage como de baixa latência, o file storage como o mais indicado para acesso compartilhado e o object storage como de escala quase ilimitada, com mais latência no acesso. Os números variam por provedor e por tipo de volume, então confira a documentação do serviço que for usar.

Quando escolher cada um?#

Escolha blocos quando uma aplicação precisa de disco rápido e dedicado: bancos de dados, sistemas com muitas leituras e escritas pequenas e o disco do sistema operacional. Em geral o volume é anexado a um servidor por vez, com exceções em alguns provedores, como o Multi-Attach do EBS.

Escolha arquivos quando vários servidores precisam enxergar a mesma árvore de pastas ao mesmo tempo, com permissões e semântica de sistema de arquivos. Exemplos: um diretório de uploads compartilhado entre réplicas de uma aplicação legada ou um repositório de mídia editado por uma equipe.

Escolha objetos quando você guarda muitos arquivos enviados e baixados inteiros: avatares, imagens de produto, vídeos, PDFs, logs arquivados, exportações. É o melhor ponto de partida para conteúdo que cresce sem limite definido e precisa ser servido pela internet. Para decidir onde colocar imagens, veja imagens no banco de dados ou em object storage.

Combine os três. Aplicações reais misturam tipos: o banco roda em disco de blocos, e as imagens enviadas pelos usuários vão para object storage, com apenas a chave guardada no banco. Não existe vencedor universal, só o tipo certo para cada dado.

Object storage substitui o disco da aplicação?#

Não para tudo. Se o seu código abre arquivos por caminho e escreve no meio deles, ele precisa de disco ou de um sistema de arquivos. Mas se o disco do servidor serve só para guardar uploads, trocá-lo por object storage resolve três problemas de uma vez: o espaço deixa de acabar, os arquivos sobrevivem à recriação do servidor e várias instâncias passam a ver os mesmos dados.

Como a API do Amazon S3 virou padrão de fato, muitos provedores oferecem storage compatível. Isso permite trocar de provedor mudando, em geral, o endpoint e as credenciais. Veja o que é storage compatível com S3.

Como fazer isso na Square Cloud#

Para o caso de objetos, a Square Cloud oferece o Blob Storage: object storage com API compatível com S3 (aws-cli, rclone, boto3 e os SDKs da AWS), além de API REST e painel. A função enviar_como_objeto do exemplo acima serve de base: defina S3_ENDPOINT como https://s3-blob.squarecloud.app e preencha S3_ACCESS_KEY e S3_SECRET_KEY com as chaves da aba "Acesso S3" do painel.

Os arquivos podem ter até 10 GB, e o multipart só é obrigatório acima de 100 MB. Não há taxa de saída nem de entrada, e todo plano inclui uma cota de 5 GB a 250 GB. Arquivos públicos são servidos por uma CDN global na edge, e arquivos privados abrem por link temporário ou link de compartilhamento. Você também define regras por pasta, como expiração, cache e extensões permitidas.

Conheça o serviço em Blob Storage.

Blob Storage

Object storage compatível com S3, sem taxa de saída

Saiba mais

Perguntas frequentes

Qual a diferença entre block storage e file storage?

O block storage é um disco bruto: o sistema operacional o formata e cuida do sistema de arquivos. O file storage já entrega um sistema de arquivos pronto, com pastas e permissões, que vários servidores montam pela rede.

Object storage substitui um disco?

Não. Em geral, um objeto é gravado e substituído inteiro e é acessado por HTTP, sem ser montado como pasta. Ele serve para arquivos que você envia e baixa, como imagens, vídeos e exportações, não para bancos de dados.

Qual tipo de storage um banco de dados usa?

Bancos de dados usam block storage, ou um disco local, porque fazem muitas leituras e escritas pequenas e parciais que exigem baixa latência. Object storage, em geral, não permite escrita parcial e tem latência maior por requisição.

O Amazon S3 é block, file ou object storage?

O Amazon S3 é object storage. Ele guarda objetos em buckets e os expõe por API HTTP. Na AWS, o equivalente para block storage é o EBS, e para file storage é o EFS.

Próximo artigoComo servir vídeo e áudio direto do storage (range requests)Para tocar e avançar um vídeo direto do object storage, o servidor precisa responder range requests com 206. Veja como testar, configurar e corrigir.