このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

IndexedDB API

メモ: この機能はウェブワーカー内で利用可能です。

IndexedDB は、ファイルや blob を含む大量の構造化データをクライアント側で保存するための低レベル API です。この API はインデックスを使用して、高パフォーマンスなデータの検索を行うことができます。ウェブストレージは比較的少量のデータを保存するのに有用ではありますが、構造化された非常に多くのデータを扱うには不十分です。IndexedDB が解決策を提供します。ここでは、完全な API リファレンスと使用ガイド、ブラウザーの対応の詳細、および重要な概念の説明へのリンクを提供します。

主要概念と使用法

IndexedDB は SQL ベースの関係データベース管理システム (RDBMS) と同様に、トランザクションのあるデータベースシステムです。しかし、SQL ベース の RDBMS が固定された列を持つテーブルを使用するのに対して、IndexedDB は JavaScript ベースのオブジェクト指向データベースです。IndexedDB では、キーでインデックス付けされたオブジェクトを保存および取り出すことができます。構造化複製アルゴリズムに対応した、任意のオブジェクトを保存することができます。データベースのスキーマを定義し、データベースへの接続を確立し、そして一連のトランザクションでデータの取り出しや更新を行う必要があります。

メモ: たいていのウェブストレージ技術と同様に、IndexedDB も同一オリジンポリシーに従います。よって、保存済みデータは同一ドメイン内からアクセスできますが、異なるドメインにまたがってデータへアクセスすることはできません。

同期と非同期

IndexedDB を扱う操作は非同期に実行しますので、他のアプリケーションを妨げません。

ストレージの上限と破棄基準

クライアント側 (すなわちローカルディスク) に何らかのデータを保存するウェブ技術はいくつかあります。IndexedDB はそのような技術としてもっともよく語られます。ブラウザーがどれだけの容量をウェブデータストレージに割り当てるかや、容量の上限に達したときにどのデータを削除するかのプロセスは単純ではなく、またブラウザーにより異なります。ブラウザーのストレージ容量と削除基準で、少なくとも Firefox ではどのようにしているかの解説を試みています。

インターフェイス

データベースへのアクセスを行いたい場合は、 open()window オブジェクトの indexedDB プロパティ上で呼び出してください。このメソッドは IDBRequest オブジェクトを返します。IDBRequest オブジェクト上で発行されたイベントによってアプリケーションが呼び出されることにより、非同期操作が行われます。

データベースへの接続

IDBFactory

データベースへのアクセスを提供します。グローバルの Window.indexedDB および WorkerGlobalScope.indexedDB プロパティによって実装されており、従って API へのエントリーポイントになります。

IDBOpenDBRequest

データベースを開くリクエストを表します。

IDBDatabase

データベース接続を表します。データベースとのトランザクション処理を行う唯一の方法です。

データの取り出しと変更

IDBTransaction

トランザクションを表します。(アクセスしたいオブジェクトストアの) スコープを指定し、(読み取り専用または読み書き可能といった) アクセスの種類を定義して、データベースへのトランザクションを作成します。

IDBRequest

データベースへのリクエストの処理、および結果へのアクセスを提供する汎用インターフェイスです。

IDBObjectStore

IndexedDB 内のデータセットにアクセスできるオブジェクトストアを表し、主キーを使用して探索します。

IDBIndex

こちらも IndexedDB データベース内のデータのサブセットにアクセスできますが、レコードの探索に主キーではなくインデックスを使用します。IDBObjectStore より高速に動作する場合があります。

IDBCursor

オブジェクトストアとインデックスを反復処理します。

IDBCursorWithValue

オブジェクトストアとインデックスを反復処理して、カーソルの現在の値を返します。

IDBKeyRange

データベースから一定の範囲のデータを取り出すために使用可能な、キーの範囲を定義します。

カスタムイベントインターフェイス

本仕様では、以下のカスタムインターフェイスでイベントが発生します。

IDBVersionChangeEvent

IDBVersionChangeEvent インターフェイスは、IDBOpenDBRequest.onupgradeneeded イベントハンドラー関数によってデータベースのバージョンが変更されたことを表します。

仕様書

Specification
Indexed Database API 3.0

関連情報