Visão geral do armazenamento da Web

É importante escolher os mecanismos de armazenamento corretos, tanto para o armazenamento do dispositivo local quanto para o armazenamento de servidores baseados na nuvem. Um bom mecanismo de armazenamento garante que as informações sejam salvas de maneira confiável, reduz a largura de banda e melhora a capacidade de resposta. A estratégia correta de armazenamento em cache é um elemento básico para permitir experiências off-line na Web para dispositivos móveis.

Este artigo fornece uma breve base para avaliar APIs e serviços de armazenamento. Depois disso, apresentaremos uma tabela de comparação e algumas orientações gerais. Em breve, planejamos adicionar recursos para entender melhor os tópicos de armazenamento selecionados.

Taxonomia de armazenamento

Vamos começar entendendo algumas dimensões que podemos usar para analisar o armazenamento de dados em apps da Web. Posteriormente, usaremos esse framework para enumerar e avaliar as muitas opções de armazenamento disponíveis para desenvolvedores da Web.

Modelo de dados

O modelo para armazenamento de unidades de dados determina como os dados são organizados internamente, o que afeta a facilidade de uso, o custo e o desempenho das solicitações de armazenamento e recuperação.

  • Estruturados: dados armazenados em tabelas com campos predefinidos, como é comum em sistemas de gerenciamento de banco de dados baseados em SQL, funcionam bem para consultas flexíveis e dinâmicas, em que a gama completa de tipos de consulta pode não ser conhecida com antecedência. Um exemplo proeminente de um armazenamento de dados estruturado no navegador é o IndexedDB.

  • Chave/valor:os repositórios de chave-valor e bancos de dados NoSQL relacionados oferecem a capacidade de armazenar e recuperar dados não estruturados indexados por uma chave exclusiva. Os repositórios de chave-valor são como tabelas de hash, porque permitem acesso em tempo constante a dados indexados e opacos. Exemplos em destaque de armazenamentos de dados de chave-valor são a API Cache no navegador e o Apache Cassandra no servidor.

  • Byte Streams:este modelo simples armazena dados como uma string opaca de bytes de comprimento variável, deixando qualquer forma de organização interna para a camada do aplicativo. Esse modelo é particularmente bom para sistemas de arquivos e outros blobs de dados organizados hierarquicamente. Exemplos em destaque de repositórios de dados de stream de bytes incluem sistemas de arquivos e serviços de armazenamento em nuvem.

Persistência

Os métodos de armazenamento de apps da Web podem ser analisados de acordo com o escopo em que os dados se tornam persistentes.

  • Persistência de sessão:os dados nessa categoria são retidos apenas enquanto uma única sessão da Web ou guia do navegador permanecer ativa. Um exemplo de mecanismo de armazenamento com persistência de sessão é a API Session Storage.

  • Persistência de dispositivo:os dados nessa categoria são retidos entre sessões e guias/janelas de navegador em um dispositivo específico. Um exemplo de mecanismo de armazenamento com persistência de dispositivo é a API Cache.

  • Persistência global:os dados nessa categoria são retidos entre sessões e dispositivos. Por isso, é a forma mais robusta de persistência de dados. Um exemplo de mecanismo de armazenamento com persistência global é o Google Cloud Storage.

Compatibilidade com navegadores

Os desenvolvedores precisam escolher a API mais adequada ao domínio do problema. No entanto, eles também precisam considerar o fato de que APIs padronizadas e bem estabelecidas são preferíveis a interfaces personalizadas ou reservadas, porque costumam ter uma vida mais longa e suporte mais amplo. Eles também podem ter uma base de conhecimento mais ampla e um ecossistema de desenvolvedores mais rico.

Transações

Muitas vezes, é importante que uma coleção de operações de armazenamento relacionadas tenha êxito ou falhe atomicamente. Tradicionalmente, os sistemas de gerenciamento de banco de dados aceitam esse recurso usando o modelo de transação, em que as atualizações relacionadas podem ser agrupadas em unidades arbitrárias. Embora nem sempre necessário, esse é um recurso conveniente e, às vezes, essencial em alguns domínios com problemas.

Síncrono/Assíncrono

Algumas APIs de armazenamento são síncronas, porque as solicitações de armazenamento ou recuperação bloqueiam a linha de execução ativa no momento até que a solicitação seja concluída. Isso é particularmente complicado em navegadores da Web, em que a solicitação de armazenamento compartilha a linha de execução principal com a IU. Por motivos de eficiência e desempenho, as APIs de armazenamento assíncronas são preferidas.

Como depurar o armazenamento no Chrome DevTools

Consulte os documentos a seguir para saber mais sobre como usar o Chrome DevTools para inspecionar e depurar a API de armazenamento da Web de sua escolha. As APIs não mencionadas aqui não são compatíveis com o DevTools ou não são aplicáveis.

Se você estiver usando várias APIs de armazenamento, verifique o recurso "Limpar armazenamento" do DevTools. Esse recurso permite limpar vários repositórios com um único clique. Consulte Limpar service workers, armazenamento, bancos de dados e caches para mais informações.

O que fazer em seguida...

Agora que analisamos algumas das maneiras relevantes de pensar sobre mecanismos de armazenamento e comparamos as APIs e os serviços mais populares disponíveis hoje, adicionaremos mais conteúdo em breve para nos aprofundar em um ou mais tópicos de interesse: