IndexedDB API

Hinweis: Diese Funktion ist in Web Workers verfügbar.

IndexedDB ist eine Low-Level-API für die clientseitige Speicherung großer Mengen strukturierter Daten, einschließlich Dateien/Blobs. Diese API verwendet Indizes, um Hochleistungssuchen dieser Daten zu ermöglichen. Während Web Storage nützlich für die Speicherung kleinerer Datenmengen ist, ist es weniger geeignet für die Speicherung größerer Mengen strukturierter Daten. IndexedDB bietet dafür eine Lösung. Dies ist die Hauptseite für die abgedeckte IndexedDB-Dokumentation bei MDN — hier bieten wir Links zur vollständigen API-Referenz und zu Benutzungsanleitungen, Details zur Browser-Kompatibilität und einige Erklärungen zu wichtigen Konzepten.

Wichtige Konzepte und Nutzung

IndexedDB ist ein transaktionales Datenbanksystem, ähnlich wie ein SQL-basiertes relationales Datenbankverwaltungssystem (RDBMS). Im Gegensatz zu SQL-basierten RDBMS, die feste Spaltentabellen verwenden, ist IndexedDB eine JavaScript-basierte objektorientierte Datenbank. IndexedDB ermöglicht es Ihnen, Objekte zu speichern und abzurufen, die mit einem Schlüssel indexiert sind; alle Objekte, die durch den Structured Clone Algorithm unterstützt werden, können gespeichert werden. Sie müssen das Datenbankschema angeben, eine Verbindung zu Ihrer Datenbank öffnen und dann Daten innerhalb einer Reihe von Transaktionen abrufen und aktualisieren.

Hinweis: Wie die meisten Webspeicherlösungen folgt IndexedDB einer Same-Origin-Policy. Während Sie also auf gespeicherte Daten innerhalb einer Domäne zugreifen können, können Sie nicht auf Daten über verschiedene Domänen hinweg zugreifen.

Synchron und asynchron

Operationen, die mit IndexedDB durchgeführt werden, erfolgen asynchron, um Anwendungen nicht zu blockieren.

Speichergrenzen und Aussonderungskriterien

Es gibt eine Reihe von Webtechnologien, die Daten verschiedener Art auf der Clientseite (d.h. auf Ihrer lokalen Festplatte) speichern. IndexedDB wird am häufigsten diskutiert. Der Prozess, durch den der Browser ermittelt, wie viel Speicherplatz er für die Webdatenverarbeitung bereitstellt und was gelöscht wird, wenn dieses Limit erreicht ist, ist nicht einfach und unterscheidet sich zwischen den Browsern. Browser-Speicherquoten und Aussonderungskriterien versucht zu erklären, wie dies funktioniert, zumindest im Fall von Firefox.

Schnittstellen

Um auf eine Datenbank zuzugreifen, rufen Sie open() auf der indexedDB Eigenschaft eines window Objekts auf. Diese Methode gibt ein IDBRequest Objekt zurück; asynchrone Operationen kommunizieren mit der aufrufenden Anwendung durch das Auslösen von Ereignissen auf IDBRequest Objekten.

Verbindung zu einer Datenbank herstellen

IDBFactory

Bietet Zugriff auf eine Datenbank. Ein Objekt dieses Typs ist der Wert der globalen Window.indexedDB und WorkerGlobalScope.indexedDB Eigenschaften. Es ist daher der Einstiegspunkt für die API.

IDBOpenDBRequest

Repräsentiert eine Anfrage zum Öffnen einer Datenbank.

IDBDatabase

Repräsentiert eine Verbindung zu einer Datenbank. Es ist der einzige Weg, um eine Transaktion auf der Datenbank zu erhalten.

Daten abrufen und modifizieren

IDBTransaction

Repräsentiert eine Transaktion. Sie erstellen eine Transaktion auf einer Datenbank, spezifizieren den Umfang (wie z.B. welche Objekt-Speicher Sie zugreifen möchten), und bestimmen die Art des Zugriffs (nur lesen oder lesend/schreibend), den Sie wünschen.

IDBRequest

Generische Schnittstelle, die Datenbankanfragen behandelt und Zugriff auf Ergebnisse bietet.

IDBObjectStore

Repräsentiert einen Objektspeicher, der den Zugriff auf einen Satz von Daten in einer IndexedDB-Datenbank ermöglicht, die über den Primärschlüssel abgerufen wurde.

IDBIndex

Erlaubt ebenfalls den Zugriff auf einen Teil der Daten in einer IndexedDB-Datenbank, verwendet jedoch einen Index, um das oder die Datensätze abzurufen, anstatt den Primärschlüssel. Dies ist manchmal schneller als die Verwendung von IDBObjectStore.

IDBCursor

Iteriert über Objektspeicher und Indizes.

IDBCursorWithValue

Iteriert über Objektspeicher und Indizes und gibt den aktuellen Wert des Cursors zurück.

IDBKeyRange

Definiert einen Schlüsselsbereich, der verwendet werden kann, um Daten aus einer Datenbank in einem bestimmten Bereich abzurufen.

Benutzerdefinierte Ereignisschnittstellen

Diese Spezifikation löst Ereignisse mit der folgenden benutzerdefinierten Schnittstelle aus:

IDBVersionChangeEvent

Die IDBVersionChangeEvent Schnittstelle gibt an, dass die Version der Datenbank geändert wurde, als Ergebnis einer IDBOpenDBRequest.onupgradeneeded Ereignis-Handler-Funktion.

Beispiele

Spezifikationen

Specification
Indexed Database API 3.0

Siehe auch