Visão geral do armazenamento da Web

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

Este artigo fornece uma breve base para avaliar APIs Storage e serviços. Em seguida, apresentamos uma tabela de comparação e algumas orientações gerais. Em breve, vamos adicionar recursos para entender melhor alguns tópicos de armazenamento.

Taxonomia de armazenamento

Vamos começar entendendo algumas das dimensões que podemos usar para analisar o armazenamento de dados para apps da Web. Mais tarde, usaremos esse framework para enumerar e avaliar as várias opções de armazenamento disponíveis para desenvolvedores web.

Modelo de dados

O modelo para armazenar 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: os dados armazenados em tabelas com campos predefinidos, como é comum em sistemas de gerenciamento de bancos de dados baseados em SQL, são adequados para consultas flexíveis e dinâmicas, em que a gama completa de tipos de consulta pode não ser conhecida a priori. Um exemplo proeminente de um armazenamento de dados estruturado no navegador é o IndexedDB.

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

  • Fluxos de bytes: esse modelo simples armazena dados como uma string de bytes opaca 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 importantes de repositórios de dados de fluxo de bytes incluem sistemas de arquivos e serviços de armazenamento em nuvem.

Persistência

Os métodos de armazenamento para apps da Web podem ser analisados de acordo com o escopo em que os dados são mantidos.

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

  • Persistência do dispositivo: os dados nessa categoria são retidos em sessões e guias/janelas do 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 dessa categoria são retidos em várias 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.

Suporte ao navegador

Os desenvolvedores precisam escolher uma 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 tendem a ter uma vida útil mais longa e um suporte mais amplo. Eles também podem aproveitar 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 seja bem-sucedida ou falhe atomicamente. Os sistemas de gerenciamento de bancos de dados tradicionalmente oferecem suporte a esse recurso usando o modelo de transação, em que as atualizações relacionadas podem ser agrupadas em unidades arbitrárias. Embora nem sempre seja necessário, esse é um recurso conveniente e, às vezes, essencial em alguns domínios de problemas.

Síncrono/assíncrono

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

Como depurar o armazenamento no Chrome DevTools

Confira os documentos a seguir para saber mais sobre como usar o Chrome DevTools para inspecionar e depurar a API de armazenamento na Web que você escolher. As APIs não mencionadas aqui não são compatíveis com o DevTools ou não são relevantes.

Se você estiver usando várias APIs Storage, confira o recurso Limpar armazenamento do DevTools. Esse recurso permite limpar várias lojas com um único clique de botão. 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 usados disponíveis atualmente, vamos adicionar mais conteúdo em breve para nos aprofundarmos em um ou mais tópicos de interesse: