IndexedDB

Diese Übersetzung ist unvollständig. Bitte helfen Sie, diesen Artikel aus dem Englischen zu übersetzen.

IndexedDB ist eine low-level API für die clientseitige Speicherung großer Mengen sturkturierter Daten einschließlich Dateien. Sie erlaubt auch Hochleistungssuchen dieser Daten durch die Verwendung von Indizes. Während der DOM Speicher nützlich zur Speicherung kleiner Datenmengen ist, ist er für größere Mengen strukturierte Daten wenig hilfreich. IndexedDB stellt hierfür eine Lösung bereit. Dies ist die Einstiegsseite der IndexedDB Referenz von MDN — hier stellen wir Links zur vollständigen API Referenz, Gebrauchsanleitungen, Unterstützngsdetails der Browser und einige Erklärungen des Schlüsselkonzeps zur Verfügung.

Hinweis: Dieses Feature ist in Web Workers verfügbar.

Anmerkung: Die IndexedDB API ist leistungsfähig, kann aber für einfache Anwendungen zu kompliziert erscheinen. Wenn Du eine einfachere API bevorzugst, versuche Sammlungen wie localForage und dexie.js. Diese machen IndexedDB benutzerfreundlicher.

Anmerkung: Manche älteren Browser unterstützen IndexedDB nicht aber sie unterstützen WebSQL. Eine Möglichkeit dieses Problem zu umgehen ist es, mittels polyfill auf WebSQL oder auch auf localStorage für nicht unterstützende Browser zurückzugreifen. Das beste erhältiche polyfill ist derzeit localForage.

Schlüsselkonzepte und Gebrauch

IndexedDB ist ein direktes Datenbank System, wie ein SQL-basiertes RDMS; während allerdings das Letztere Tabellen mit fixen Spalten benutzt, ist IndexedDB eine JavaScript-basierte objekt-orientierte Datenbank. IndexedDB läßt dich Objekte, die mit einem Schlüssel indiziert sind, speichern und wiederfinden. Jedes Objekt, das von einem strukturierten Klon Algorithmus unterstützt wird, kann gespeichert werden. Du brauchst zum Beschreiben des Datenbankschemas eine offene Verbindung zu deiner Datenbank, dann kannst du Daten mit einer Reihe von Tranaktionen wiederfinden und aktualisieren.

Anmerkung: wie die meisten Web Speicher Lösungen folgt IndexedDB einem gleicher-Ursprung Grundsatz. Deshalb ist es nicht möglich auf Daten anderer Domänen zuzugreifen, während man auf gespeicherte Daten innerhalb einer Domäne zugreift.

Synchron und asynchron

Operationen unter Verwendung von IndexedDB werden asynchron durchgeführt, um Anwendungen nicht zu blockieren. IndexedDB beinhaltete ursprünglich eine asynchrone und eine synchrone API; die synchrone API war nur für den Gebrauch von Web Workers gedacht. Die synchrone Version wurde aus der Spezifikation entfernt, weil ihre Notwendigkeit fraglich war, aber sie kann in Zukunft wieder eingeführt werden, wenn es genug Nachfrage von Web Entwicklern gibt.

Speichergrenzen und Löschkriterien

Es gibt mehrere Webtechnologien, um Daten auf die eine oder andere Art auf der Client Seite zu speichern (d. h. auf deiner lokalen Festplatte), über IndexedDB wird dabei am häufigsten geredet. Der Prozess mit dem der Browser herausfindet, wieviel Speicherplatz Webdaten zur Verfügung gestellt werden soll und was gelöscht werden soll, wenn die Grenze erreicht ist, ist nicht einfach und unterscheidet sich zwischen den Browsern. Browser Speichergrenzen und Löschkriterien versuchen zu erklären, wie das geschieht - zumindest im Fall von Firefox.

IndexedDB Schnittstellen

Um Zugang zu einer Datenbank zu erhalten, benutze open() von den indexedDB Attributen eines window Objekts. Diese Methode gibt ein IDBRequest Objekt zurück; asynchrone Operationen kommunizieren mit der aufrufenden Anwendung durch feuern von Events von IDBRequest Objekten.

Mit einer Datenbank verbinden

IDBEnvironment
Stellt den Zugang zur IndexedDB Funktionalität zur Verfügung. Es ist implementiert durch die window und worker Objekte.
IDBFactory
Stellt den Zugang zu einer Datenbank bereit. Dies ist die durch das globale Objekt indexedDB bereitgestellte Schnittstelle und dadurch der Eingangspunkt für die API.
IDBOpenDBRequest
Stellt eine Anfrage zum Öffnen einer Datenbank dar.
IDBDatabase
Repräsentiert eine Verbindung zu einer Datenbank. Es ist der einzige Weg eine Transaktion in der Datenbank zu erreichen.
IDBRequest
Eine allgemeine Schnittstelle, die Datenbankabfragen behandelt und den Zugang zu Ergebnissen bereitstellt.

Abrufen und modifizieren von Daten

IDBTransaction
Stellt eine Transaktion dar. Du erstellst eine Transaktion zu einer Datenbank, beschreibst den Geltungsbereich (beispielsweise auf welchen Objekt Speicher du zugreifen willst), und bestimmst die Art des Zugriffs (nur lesen oder lesen und schreiben), den du willst.
IDBObjectStore
Represents an object store that allows access to a set of data in an IndexedDB database, looked up via primary key.
IDBIndex
Also allows access to a subset of data in an IndexedDB database, but uses an index to retrieve the record(s) rather than the primary key. This is sometimes faster than using IDBObjectStore.
IDBCursor
Iterates over object stores and indexes.
IDBCursorWithValue
Iterates over object stores and indexes and returns the cursor's current value.
IDBKeyRange
Defines a key range that can be used to retrieve data from a database in a certain range.
IDBLocaleAwareKeyRange
Defines a key range that can be used to retrieve data from a database in a certain range, sorted acording to the rules of the locale specified for a certain index (see createIndex()'s optionalParameters.).

Custom event interfaces

This specification fires events with the following custom interface:

IDBVersionChangeEvent
The IDBVersionChangeEvent interface indicates that the version of the database has changed, as the result of an IDBOpenDBRequest.onupgradeneeded event handler function.

Obsolete interfaces

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:

IDBVersionChangeRequest
Represents a request to change the version of a database. The way to change the version of the database has since changed (by calling IDBFactory.open without also calling IDBDatabase.setVersion), and the interface IDBOpenDBRequest now has the functionality of the removed IDBVersionChangeRequest.
IDBDatabaseException
Represents exception conditions that can be encountered while performing database operations.
IDBTransactionSync
Sync version of IDBTransaction.
IDBObjectStoreSync
Sync version of IDBObjectStore.
IDBIndexSync
Sync version of IDBIndex.
IDBFactorySync
Sync version of IDBFactory.
IDBEnvironmentSync
Sync version of IDBEnvironment.
IDBDatabaseSync
Sync version of IDBDatabase.
IDBCursorSync
Sync version of IDBCursor.

Examples

Specifications

Specification Status Comment
Indexed Database API
Die Definition von 'IDBEnvironment' in dieser Spezifikation.
Empfehlung Initial definition

Browser compatibility

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support

23.0 webkit
24

10.0 (10.0) moz
16.0 (16.0)
10, partial 15 7.1
Available in workers (Ja) 37.0 (37.0)[1] ? (Ja) ?
IDBLocaleAwareKeyRange Nicht unterstützt 43.0 (43.0)[2] Nicht unterstützt Nicht unterstützt Nicht unterstützt
Feature Android Firefox Mobile (Gecko) Firefox OS IE Phone Opera Mobile Safari Mobile
Basic support 4.4 22.0 (22.0) 1.0.1 10 22 8
Available in workers (Ja) 37.0 (37.0)[1] (Ja) ? (Ja) ?
IDBLocaleAwareKeyRange Nicht unterstützt 43.0 (43.0)[2] 2.5[2] Nicht unterstützt Nicht unterstützt Nicht unterstützt
  • [1] IDBCursorWithValue is not available in workers until Gecko 42.0 (Firefox 42.0 / Thunderbird 42.0 / SeaMonkey 2.39).
  • [2] This feature is currently hidden behind a flag — to enable it and experiment, go to about:config and enable dom.indexedDB.experimental.

See also

  • localForage: A Polyfill providing a simple name:value syntax for client-side data storage, which uses IndexedDB in the background, but falls back to WebSQL and then localStorage in browsers that don't support IndexedDB.
  • dexie.js: A wrapper for IndexedDB that allows much faster code development via nice, simple syntax.

Schlagwörter des Dokuments und Mitwirkende

 Mitwirkende an dieser Seite: tleilax, NiklasMerz, Patrick_St., Huan
 Zuletzt aktualisiert von: tleilax,