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.
- Lesen Sie mehr über IndexedDB-Schlüsseleigenschaften und grundlegende Terminologie.
- Erlernen Sie die asynchrone Verwendung von IndexedDB aus den Grundlagen mit unserem Verwenden von IndexedDB Leitfaden.
- Sehen Sie ein vollständiges Schritt-für-Schritt-Beispiel im Leitfaden zum Überprüfen, wann eine Frist fällig ist.
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
undWorkerGlobalScope.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 einerIDBOpenDBRequest.onupgradeneeded
Ereignis-Handler-Funktion.
Beispiele
- To-do-Benachrichtigungen (Beispiel live ansehen): Die Referenzanwendung für die Beispiele in den Referenzdokumenten.
Spezifikationen
Specification |
---|
Indexed Database API 3.0 |