--- title: IndexedDB slug: Web/API/IndexedDB_API translation_of: Web/API/IndexedDB_API ---
IndexedDB è una API per la memorizzazione client-side di una considerevole quantità di dati strutturati (inclusi file e blob) e per una ricerca performante su questi dati mediante gli indici. Se Web Storage è utile per memorizzare piccole quantità di dati, non lo è invece per memorizzare grandi quantità di dati strutturati. IndexedDB fornisce la soluzione. Questa è la pagina principale su IndexedDB di MDN — qui vengono forniti link a tutti i riferimenti API e guide all'uso, dettagli di supporto al browser ed alcune spiegazioni dei concetti chiave.
IndexedDB è un sistema di database transazionale, che inizialmente potrebbe creare confusione se si è abituati a lavorare solo con i database relazionali, ma presto diverrà abbastanza chiaro. IndexedDB permette di memorizzare e recuperare oggetti indicizzati con una chiave. E' necessario specificare lo schema del database, aprire una connessione al proprio database e poi recuperare ed aggiornare i dati attraverso una serie di transazioni.
Nota: Come molte soluzioni web storage, IndexedDB segue una same-origin policy. Quindi mentre si può accedere ai dati memorizzati sotto un dominio, non è possibile accedere ai dati attraverso domini differenti.
IndexedDB include sia una API asincrona che una API sincrona. La API asincrona può essere usata in molti casi, incluso WebWorkers, mentre la API sincrona è designata ad essere utilizzata solo con Web Workers e sarà usata molto raramente.
Nota: Attualmente, nessuno dei principali browser supporta la API sincrona.
Non c'è alcun limite alla dimensione di un singolo elemento del database, tuttavia ci potrebbe essere un limite ad ogni dimensione complessiva del database IndexedDB. Questo limite (ed il modo con cui l'interfaccia utente lo supporterà) potrebbe variare da un browser ad un altro:
dom.indexedDB.warningQuota
preference (which is defined in http://mxr.mozilla.org/mozilla-central/source/modules/libpref/src/init/all.js).The asynchronous API methods return without blocking the calling thread. To get asynchronous access to a database, call open()
on the indexedDB
attribute of a window object. This method returns an {{domxref("IDBRequest")}} object; asynchronous operations communicate to the calling application by firing events on {{domxref("IDBRequest")}} objects.
indexedDB
and is therefore the entry point for the API.An early version of the specification also defined these now removed interfaces. They are still documented in case you need to update previously written code:
Important: This is a reminder that the synchronous version of IndexedDB is not yet implemented in any browser.
To get synchronous access to a database, call open()
on the Unimplemented indexedDBSync
attribute of a worker object. This returns an IDBDatabaseSync
object, which enables you to create, open, and remove object stores and indexes, set the version of the database, and create transactions.
IDBCursorSync
iterates over object stores and indexes.IDBDatabaseSync
represents a connection to a database. It's the only way to get a transaction on the database.IDBEnvironmentSync
provides access to a client-side database. It is implemented by worker objects.IDBFactorySync
provides access to a database.IDBIndexSync
provides access to the metadata of an index.IDBObjectStoreSync
represents an object store.IDBTransactionSync
creates a transaction in the database.{{ CompatibilityTable() }}
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Asynchronous API |
11.0 {{ property_prefix("webkit") }} |
{{ CompatGeckoDesktop("2.0") }} {{ property_prefix("moz") }} {{ CompatGeckoDesktop("16.0") }} |
10 | 17 | {{ CompatNo() }} |
Synchronous API (used with WebWorkers) |
{{ CompatNo() }} | {{ CompatNo() }} See {{ bug(701634) }} |
{{ CompatNo() }} | {{ CompatNo() }} | {{ CompatNo() }} |
Feature | Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Asynchronous API | 4.4 | {{ CompatGeckoDesktop("6.0") }} {{ property_prefix("moz") }} {{ CompatGeckoDesktop("16.0") }} |
10 | 17 | {{ CompatNo() }} |
Note: Some browsers don't yet support IndexedDB but do support WebSQL, most notably Safari/Webkit on desktop and iOS. One way around this problem is to use an IndexedDB Polyfill or Shim that falls back to WebSQL or even localStorage for non-supporting browsers. The best available polyfill at present is localForage.
Specification | Status | Comment |
---|---|---|
{{SpecName('IndexedDB', '#idl-def-IDBEnvironment', 'IDBEnvironment')}} | {{Spec2('IndexedDB')}} |