Die Indexed Database API, kurz IndexedDB, ist eine Programmierschnittstelle, die es Webseiten mittels JavaScript erlaubt, strukturierte Daten im Browser zu speichern. Der Standard wird vom World Wide Web Consortium entwickelt und in allen modernen Browsern implementiert.
Grundprinzipien
Die IndexedDB erlaubt es Webseiten, Informationen dauerhaft in einer Datenbank zu speichern. Dabei steht jeder Domain ein eigener Speicherbereich zur Verfügung, ein Zugriff auf die von einer anderen Domain gespeicherten Daten ist gemäß der Same-Origin-Policy nicht vorgesehen. Wie groß der verfügbare Speicher ist, hängt vom Browser ab, üblicherweise gibt es eine feste Grenze, die nicht überschritten werden kann, und eine weiche, ab der der Benutzer der Speicherung vorher zustimmen muss.[1] Die Speicherung erfolgt prinzipiell dauerhaft, Browser bieten jedoch ihren Benutzern grundsätzlich die Möglichkeit gespeicherte Daten zu löschen.[2]
Die Datenbank ist eine Objektdatenbank, in der Regel werden JavaScript-Objekte gespeichert, wobei einer der Einträge als Schlüssel dient, über den die Daten wieder abgefragt werden können. Auch für andere Einträge der gespeicherten Objekte können Indizes angelegt werden um eine effiziente Suche zu ermöglichen.
Der Zugriff auf die Datenbank erfolgt asynchron: Der Client stellt eine Anfrage und registriert Callback-Funktionen. Sobald das Ergebnis der Anfrage feststeht, wird er über entsprechende Ereignisse darüber informiert, dabei werden im Erfolgsfall die angefragten Daten mitgeliefert, im Falle eines Fehlers der Grund. Beim Zugriff werden Transaktionen eingesetzt um konsistente Daten auch dann zu gewährleisten, wenn beispielsweise durch zwei gleichzeitig geöffnete Tabs mehrere unabhängige Zugriffe auf die Datenbank erfolgen.
Implementierungen
Die genaue Implementierung der Datenbank ist nicht festgelegt, es bietet sich jedoch ein B-Baum an. Alle modernen Browser unterstützen den Standard, da dieser jedoch laufend weiterentwickelt wird, nicht immer in der aktuellen Version. In älteren Browserversionen ist die API teilweise noch mit einem Herstellerpräfix versehen.[3]
Alternativen
Eine wesentlich einfachere Alternative zum Speichern von Daten, die dafür auch weniger Funktionen bietet, ist Web Storage.
Ein alternativer Standard, der eine Datenbank zur Verfügung stellt, die sich über SQL abfragen lässt, war die Web SQL Database. Dieser Standard wurde allerdings nur in wenigen Browsern implementiert, sodass seine Weiterentwicklung zu Gunsten der IndexedDB eingestellt wurde.[4]
Für ältere Browser kann die IndexedDB mittels Polyfills simuliert werden.[5]
Weblinks
- Indexed Database API: Offizielle Spezifikation
- IndexedBD Grundkonzepte: Beschreibung im Mozilla Developer Network
Einzelnachweise
- ↑ Raymond Camden: IndexedDB and Limits. 17. April 2015, abgerufen am 29. März 2017 (englisch).
- ↑ Sören Hentzschel: Datenschutz-Fix: Löschen lokaler Datenbanken ab Firefox 56 möglich. 24. September 2017, abgerufen am 26. September 2017.
- ↑ Can I use: IndexedDB. Abgerufen am 29. März 2017 (englisch).
- ↑ Ian Hickson: Web SQL Database. Abgerufen am 29. März 2017 (englisch).
- ↑ Parashuram Narasimhan: Using IndexedDB API today – the IndexedDB polyfills. In: Mozilla Hacks. 31. Juli 2012, abgerufen am 29. März 2017 (englisch).