IndexedDB

IndexedDB is een API voor het opslaan van significante hoeveelheden van gestructureerde
data op de cliënt en voor hoogperformante opzoekingen van deze data door het gebruik van indexen.
Terwijl DOM Storage handig is voor het opslaan van kleinere hoeveelheden van data is het minder bruikbaar voor de 
opslag van grotere hoeveelheden van gestructureerde data.
IndexedDB levert hiervoor de oplossing.
 
Deze pagina is het startpunt voor de technische omschrijving van de API objecten.
Als je een basis nodig hebt kan je Basic Concepts About IndexedDB consulteren. Voor meer details kan je Using IndexedDB raadplegen.
 
IndexedDB voorziet aparte APIs voor synchrone en asynchrone toegang.
De synchrone API is bedoeld voor het gebruik in Web Workers, maar is nog door geen enkele browser geimplementeerd.
De asynchrone API werkt zowel met als zonder Web Workers, maar Firefox heeft dit nog niet geïmplementeerd.


Asynchrone API

De asynchrone API methoden geven feedback zonder de oproepende thread te blokkeren.
Om asynchrone toegang tot een database te verkrijgen roep je open() op het indexedDB attribuut van een window object. Deze methode stuurt een IDBRequest object (IDBOpenDBRequest); asynchrone operaties communiceren met de oproepende applicatie door events uit te voeren op  IDBRequest objecten.

Notitie: Het indexedDB object heeft een prefix in oudere browserversies (eigendom mozIndexedDB in Gecko < 16, webkitIndexedDB in Chrome, en msIndexedDB in IE 10).

  • IDBFactory voorziet toegang tot een database. Dit is de interface die geïmplementeerd is door het globale object indexedDB en het is daarom het startpunt van de API.
  • IDBCursor itereert over object stores en indexen.
  • IDBCursorWithValue Itereert over object stores en indexen en stuurt de huidige waarde van de cursor terug.
  • IDBDatabase stelt een connectie naar de database voor, het is de enige manier om een transactie te verkrijgen op de database.
  • IDBEnvironment voorziet toegang tot een client gebaseerde database. Het is geïmplementeerd door window objecten.
  • IDBIndex voorziet toegang tot de metadata van een index.
  • IDBKeyRange definieert een bereik van sleutels.
  • IDBObjectStore stelt een object store voor.
  • IDBOpenDBRequest stelt een aanvraag voor om de database te openen.
  • IDBRequest voorziet toegang tot resultaten van asynchrone aanvragen naar databases en database objecten.  Je verkrijgt dit wanneer je een asynchrone methode oproept.
  • IDBTransaction stelt een transactie voor.  Je maakt een transactie op de database, specifieert de omvang (zoals welke object stores je toegang toe wil verkrijgen), en bepaal de soort van toegang die je wil (enkel lezen of schrijven).
  • IDBVersionChangeEvent duidt aan dat de versie van de database is veranderd.

Een vroege versie van de specificatie definieert ook deze nu verwijderde interfaces. Ze zijn nog steeds gedocumenteerd in geval u oudere code moet aanpassen:

Er is ook een synchronone versie van de API.  De synchrone API is nog in geen enkele browser geïmplementeerd. Het is bedoeld om te werken met WebWorkers.

Opslaglimieten

Er is geen limiet op een enkel database item qua omvang.
Echter kan er wel een limiet zijn op elke indexedDB database omvang.
Deze limiet (en hoe de gebruikerinterface deze zal verklaren) kan variëren per browser.

Voorbeeld

Een krachtig voorbeeld waarvoor indexedDB gebruikt kan worden op het web is een voorbeeld door Marco Castelluccio, winnaar van de IndexedDB Mozilla DevDerby. De winnende demo was eLibri, een bibliotheek en eBook lezer applicatie.

Browsercompatibiliteit

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Asynchronous API

24.0
11.0 webkit

16.0 (16.0)
4.0 (2.0) moz
10 15.0 Not supported
Synchronous API
(used with WebWorkers)
Not supported Not supported
See bug 701634
Not supported Not supported Not supported
Feature Android Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile
Asynchronous API Not supported 6.0 (6.0) moz Not supported Not supported Not supported

Er is ook de mogelijkheid om IndexedDB te gebruiken op oudere browsers die WebSQL ondersteunen door gebruik te maken van IndexedDB Polyfill.

Zie ook

Documentlabels en -medewerkers

 Aan deze pagina hebben bijgedragen: bartleemans
 Laatst bijgewerkt door: bartleemans,