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 strukturierter 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ützungsdetails der Browser und einige Erklärungen des Schlüsselkonzepts zur Verfügung.
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.
- Lies mehr über die Konzepte hinter IndexedDB.
- Nutze IndexedDB asynchron, indem du die Grundlagen mit unserer IndexedDB Anleitung erlernst.
- Finde Entwickler Empfehlungen, um Web Apps offline arbeiten zu lassen auf unserer Offline Apps Seite
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
undworker
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 anIDBOpenDBRequest.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 callingIDBDatabase.setVersion
), and the interfaceIDBOpenDBRequest
now has the functionality of the removedIDBVersionChangeRequest
. 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
- eLibri: A powerful library and eBook reader application, written by Marco Castelluccio, winner of the IndexedDB Mozilla DevDerby.
- To-do Notifications (view example live): The reference application for the examples in the reference docs.
- Storing images and files in IndexedDB
Specifications
Specification | Status | Comment |
---|---|---|
Indexed Database API Die Definition von 'IDBEnvironment' in dieser Spezifikation. |
Empfehlung | Initial definition |
Browser compatibility
Wir konvertieren die Kompatibilitätsdaten in ein maschinenlesbares JSON Format. Diese Kompatibilitätstabelle liegt noch im alten Format vor, denn die darin enthaltenen Daten wurden noch nicht konvertiert. Finde heraus wie du helfen kannst!
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Basic support |
23.0 webkit |
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.