Panoramica dello spazio di archiviazione web

Marc Cohen

È importante scegliere i giusti meccanismi di archiviazione, sia per l'archiviazione locale dei dispositivi sia per l'archiviazione su server basata su cloud. Un buon motore di archiviazione fa sì che le informazioni vengano salvate in modo affidabile, riduce la larghezza di banda e migliora la reattività. La giusta strategia di memorizzazione nella cache di archiviazione è un componente di base per consentire esperienze web mobile offline.

Questo articolo fornisce una breve base per valutare le API e i servizi di archiviazione, dopodiché forniremo una tabella di confronto e alcune linee guida generali. Nel prossimo futuro, prevediamo di aggiungere risorse per una comprensione più approfondita di determinati argomenti di archiviazione.

Tassonomia di archiviazione

Iniziamo a comprendere alcune delle dimensioni con cui possiamo analizzare l'archiviazione dei dati per le app web. In seguito utilizzeremo questo framework per enumerare e valutare le numerose opzioni di archiviazione disponibili per gli sviluppatori web.

Modello dati

Il modello per l'archiviazione delle unità di dati determina il modo in cui i dati sono organizzati internamente, il che influisce sulla facilità d'uso, sui costi e sulle prestazioni delle richieste di archiviazione e recupero.

  • Strutturato: i dati archiviati in tabelle con campi predefiniti, come tipico dei sistemi di gestione di database basati su SQL, si prestano bene a query flessibili e dinamiche, per le quali l'intera gamma di tipi di query potrebbe non essere nota a priori. Un esempio evidente di datastore strutturato nel browser è IndexedDB.

  • Chiave/valore: i datastore chiave-valore e i relativi database NoSQL offrono la possibilità di archiviare e recuperare dati non strutturati indicizzati da una chiave univoca. I datastore chiave-valore sono come le tabelle hash in quanto consentono l'accesso in tempo costante a dati indicizzati e opachi. Esempi importanti di datastore chiave/valore sono l'API Cache nel browser e Apache Cassandra sul server.

  • Byte Streams: questo modello semplice archivia i dati sotto forma di lunghezza variabile e stringa opaca di byte, lasciando qualsiasi forma di organizzazione interna al livello dell'applicazione. Questo modello è particolarmente adatto per file system e altri BLOB di dati organizzati in modo gerarchico. Esempi importanti di datastore di flussi di byte includono file system e servizi di archiviazione cloud.

Persistenza

I metodi di archiviazione per le app web possono essere analizzati in base all'ambito in cui i dati vengono resi permanenti.

  • Persistenza della sessione: i dati di questa categoria vengono conservati solo finché rimane attiva una singola sessione web o scheda del browser. Un esempio di meccanismo di archiviazione con persistenza della sessione è l'API Session Storage.

  • Persistenza del dispositivo: i dati di questa categoria vengono conservati in più sessioni e schede/finestre del browser, all'interno di un determinato dispositivo. Un esempio di meccanismo di archiviazione con persistenza del dispositivo è l'API Cache.

  • Persistenza globale: i dati di questa categoria vengono conservati tra sessioni e dispositivi. Di conseguenza, è la forma di persistenza dei dati più robusta. Un esempio di meccanismo di archiviazione con persistenza globale è Google Cloud Storage.

Supporto dei browser

Gli sviluppatori dovrebbero scegliere l'API più adatta al loro dominio problematico; tuttavia, dovrebbero anche tenere conto del fatto che le API standardizzate e consolidate sono da preferire a quelle personalizzate o proprietarie, in quanto tendono ad avere una durata maggiore e un supporto più ampio. Inoltre, possono usufruire di una knowledge base più ampia e di un ecosistema di sviluppatori più ricco.

Transazioni

Spesso, è importante che una raccolta di operazioni di archiviazione correlate abbia successo o meno a livello atomico. I sistemi di gestione dei database hanno tradizionalmente supportato questa funzionalità utilizzando il modello di transazione, in cui gli aggiornamenti correlati possono essere raggruppati in unità arbitrarie. Sebbene non sia sempre necessaria, questa funzionalità è comoda e a volte essenziale.

Sincronizzazione/asinc

Alcune API di archiviazione sono sincrone, nel senso che le richieste di archiviazione o di recupero bloccano il thread attualmente attivo fino al completamento della richiesta. Questo è particolarmente oneroso nei browser web, in cui la richiesta di archiviazione condivide il thread principale con l'interfaccia utente. Per motivi di efficienza e prestazioni, è preferibile utilizzare le API di archiviazione asincrona.

Debug dell'archiviazione in Chrome DevTools

Consulta i seguenti documenti per scoprire di più sull'utilizzo di Chrome DevTools per esaminare ed eseguire il debug dell'API Web Storage preferita. Le API non menzionate qui non sono supportate in DevTools o non sono applicabili.

Se utilizzi più API di archiviazione, controlla la funzionalità Cancella archiviazione di DevTools. Questa funzionalità ti consente di cancellare più negozi con un solo clic su un pulsante. Per ulteriori informazioni, consulta Cancellazione dei service worker, dello spazio di archiviazione, dei database e delle cache.

Passaggi successivi...

Ora che abbiamo esaminato alcuni dei modi pertinenti per pensare ai meccanismi di archiviazione e confrontato le API e i servizi più popolari attualmente disponibili, aggiungeremo presto altri contenuti per approfondire uno o più argomenti di interesse: