docs.rodeo

MDN Web Docs mirror

IndexedDB API

{{DefaultAPISidebar("IndexedDB")}}  {{AvailableInWorkers}} 

IndexedDB is a low-level API for client-side storage of significant amounts of structured data, including files/blobs. This API uses indexes to enable high-performance searches of this data. While Web Storage is useful for storing smaller amounts of data, it is less useful for storing larger amounts of structured data. IndexedDB provides a solution. This is the main landing page for MDN’s IndexedDB coverage — here we provide links to the full API reference and usage guides, browser support details, and some explanation of key concepts.

Key concepts and usage

IndexedDB is a transactional database system, like an SQL-based Relational Database Management System (RDBMS). However, unlike SQL-based RDBMSes, which use fixed-column tables, IndexedDB is a JavaScript-based object-oriented database. IndexedDB lets you store and retrieve objects that are indexed with a key; any objects supported by the structured clone algorithm can be stored. You need to specify the database schema, open a connection to your database, and then retrieve and update data within a series of transactions.

[!NOTE] Like most web storage solutions, IndexedDB follows a same-origin policy. So while you can access stored data within a domain, you cannot access data across different domains.

Synchronous and asynchronous

Operations performed using IndexedDB are done asynchronously, so as not to block applications.

Storage limits and eviction criteria

There are a number of web technologies that store data of one kind or another on the client side (i.e. on your local disk). IndexedDB is most commonly talked about. The process by which the browser works out how much space to allocate to web data storage and what to delete when that limit is reached is not simple, and differs between browsers. Browser storage quotas and eviction criteria attempts to explain how this works, at least in the case of Firefox.

Interfaces

To get access to a database, call open() on the indexedDB property of a window object. This method returns an {{domxref("IDBRequest")}}  object; asynchronous operations communicate to the calling application by firing events on {{domxref("IDBRequest")}}  objects.

Connecting to a database

Retrieving and modifying data

Custom event interfaces

This specification fires events with the following custom interface:

Examples

Specifications

{{Specifications}} 

See also

In this article

View on MDN