IndexedDB API

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

IndexedDB ist eine Low-Level API für die clientseitige Speicherung von erheblichen Mengen strukturierter Daten, einschließlich Dateien/Blobs. Diese API verwendet Indizes, um Hochleistungssuchen dieser Daten zu ermöglichen. Während der Web Storage nützlich ist, um kleinere Datenmengen zu speichern, ist er weniger nützlich für die Speicherung größerer Mengen strukturierter Daten. IndexedDB bietet eine Lösung dafür. Dies ist die Hauptseite für die MDN-Berichterstattung zu IndexedDB — hier bieten wir Links zur vollständigen API-Referenz und zu Anwendungsleitfäden, Details zur Browser-Kompatibilität und einige Erläuterungen zu Schlüsselkonzepten.

Schlüsselkonzepte und Verwendung

IndexedDB ist ein transaktionales Datenbanksystem, ähnlich einem auf SQL basierenden Relational Database Management System (RDBMS). Im Gegensatz zu SQL-basierten RDBMSes, 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 vom structured clone algorithm unterstützt werden, können gespeichert werden. Sie müssen das Datenbankschema festlegen, eine Verbindung zu Ihrer Datenbank öffnen und dann Daten in einer Reihe von Transaktionen abrufen und aktualisieren.

Hinweis: Wie die meisten Web-Speicherlösungen folgt IndexedDB einer same-origin policy. Während Sie also auf gespeicherte Daten innerhalb einer Domain zugreifen können, können Sie nicht auf Daten zwischen verschiedenen Domains zugreifen.

Synchron und asynchron

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

Speicherkapazität und Räumungskriterien

Es gibt mehrere Web-Technologien, die Daten in irgendeiner Form clientseitig (d. h. auf Ihrer lokalen Festplatte) speichern. IndexedDB wird am häufigsten erwähnt. Der Prozess, wie der Browser ermittelt, wie viel Speicherplatz den Web-Datenspeichern zugewiesen wird und was gelöscht werden soll, wenn dieses Limit erreicht ist, ist nicht einfach und unterscheidet sich zwischen den Browsern. Browser-Speicherquoten und Räumungskriterien versucht zu erklären, wie dies funktioniert, zumindest im Fall von Firefox.

Schnittstellen

Um auf eine Datenbank zuzugreifen, rufen Sie open() an der indexedDB Eigenschaft eines window Objekts auf. Diese Methode gibt ein IDBRequest Objekt zurück; asynchrone Operationen kommunizieren mit der aufrufenden Anwendung, indem sie Ereignisse auf IDBRequest Objekten auslösen.

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 in der Datenbank zu erhalten.

Daten abrufen und ändern

IDBTransaction

Repräsentiert eine Transaktion. Sie erstellen eine Transaktion in einer Datenbank, geben den Umfang an (wie etwa, welche Objekt-Speicher Sie zugreifen möchten), und bestimmen die Art des Zugriffs (nur lesen oder readwrite), den Sie möchten.

IDBRequest

Generische Schnittstelle, die Datenbankanfragen bearbeitet und Zugang zu Ergebnissen bietet.

IDBObjectStore

Repräsentiert einen Objektspeicher, der Zugriff auf eine Reihe von Daten in einer IndexedDB-Datenbank erlaubt, die über den Primärschlüssel aufgerufen werden.

IDBIndex

Ermöglicht auch den Zugriff auf einen Teil von Daten in einer IndexedDB-Datenbank, benutzt jedoch einen Index, um den Datensatz abzurufen, anstatt des Primärschlüssels. Dies ist manchmal schneller als die Verwendung von IDBObjectStore.

IDBCursor

Durchläuft Objektspeicher und Indizes.

IDBCursorWithValue

Durchläuft Objektspeicher und Indizes und gibt den aktuellen Wert des Cursors zurück.

IDBKeyRange

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

Anpassungsfähige Ereignis-Schnittstellen

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

IDBVersionChangeEvent

Das IDBVersionChangeEvent Interface zeigt an, dass sich die Version der Datenbank geändert hat, als Ergebnis einer IDBOpenDBRequest.onupgradeneeded Ereignis-Handler-Funktion.

Beispiele

Spezifikationen

Specification
Indexed Database API 3.0

Siehe auch