Indexed Database API

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

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[Bearbeiten | Quelltext bearbeiten]

Die IndexedDB erlaubt es Webseiten 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 in der Regel die Möglichkeit gespeicherte Daten zu löschen, worunter auch Daten der IndexedDB fallen.

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[Bearbeiten | Quelltext bearbeiten]

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.[2]

Alternativen[Bearbeiten | Quelltext bearbeiten]

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.[3]

Für ältere Browser kann die IndexedDB mittels Polyfills simuliert werden.[4]

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. Raymond Camden: IndexedDB and Limits. 17. April 2015, abgerufen am 29. März 2017 (englisch).
  2. Can I use: IndexedDB. Abgerufen am 29. März 2017 (englisch).
  3. Ian Hickson: Web SQL Database. Abgerufen am 29. März 2017 (englisch).
  4. Parashuram Narasimhan: Using IndexedDB API today – the IndexedDB polyfills. In: Mozilla Hacks. 31. Juli 2012, abgerufen am 29. März 2017 (englisch).