A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.cdn.mozilla.net/ja/docs/Web/API/IndexedDB_API/Basic_Terminology below:

IndexedDB の主な特徴と基本用語 - Web API

IndexedDB の主な特徴と基本用語

この記事では IndexedDB の主な特徴を説明し、IndexedDB API の理解に関連する重要な用語を紹介しています。

また、以下の記事も参考になるでしょう。

主な特徴

IndexedDB は、ユーザーのブラウザー内にデータを永続的に保存するための方法です。ネットワークの利用可否にかかわらず、豊富なクエリー機能を備えたウェブアプリケーションを作成できるため、オンラインでもオフラインでも動作します。IndexedDB は、大量のデータを保存するアプリケーション (貸し出し用図書館の DVD カタログなど) や、インターネットへの持続的な接続を必要としないアプリケーション (メールクライアント、ToDo リスト、メモ帳など) に有効です。

IndexedDB では、「キー」に基づいてインデックス化されたオブジェクトを保存・取得することができます。データベースへの変更は、すべてトランザクション内で行われます。多くのウェブストレージ技術と同様に、IndexedDB は同一オリジンポリシーに従っています。そのため、ドメイン内の保存データにはアクセスできますが、異なるドメイン間のデータにはアクセスできません。

他の種類のデータベースでの作業を前提としていると、IndexedDB での作業に戸惑うことがあるかもしれません。そのため、以下のような IndexedDB の主な特徴を覚えておくことが重要です。

制限事項

IndexedDB は、クライアントサイドのストレージを必要とするほとんどのケースをカバーするように設計されています。しかし、以下のようないくつかのケースには対応していません。

また、以下のような条件でブラウザーがデータベースを消去することがあるので注意が必要です。

正確な状況やブラウザーの機能は時間とともに変化しますが、ブラウザーベンダーの一般的な考え方は、可能な限りデータを残すために最善の努力をするというものです。

主な用語

この節では、IndexedDB API の理解に関連する主な用語を定義および説明します。

データベース データベース

普通 1 つ以上のオブジェクトストアで構成される、情報の格納庫です。それぞれのデータベースには以下のものがあります。

データベースコネクション

データベースを開くために作成される操作。指定されたデータベースは、同時に複数の接続を保有することができます。

永続性

Firefox では、IndexedDB は以前は永続性がありました。つまり、読み書きトランザクションにおいて、すべてのデータがディスクにフラッシュされたことが保証されたときにのみ、complete が発行されていました。

Firefox 40 では、IndexedDB トランザクションは、パフォーマンスを向上させるために、他の IndexedDB に対応するブラウザーと同様に永続性の保証を緩和しています (Firefox バグ 1112702 を参照)。この場合、 complete イベントは、OS がデータの書き込みを指示した後に発生しますが、そのデータが実際にディスクにフラッシュされる前に発生する可能性もあります。そのため、イベントは以前よりも早く配信されるかもしれませんが、データがディスクにフラッシュされる前に OS がクラッシュしたり、システムの電源が切れたりすると、トランザクション全体が失われてしまう可能性がわずかながらあります。このような致命的な事象は稀であるため、ほとんどの人はこれ以上気にする必要はありません。

メモ: Firefox では、何らかの理由で永続性を確保したい場合 (たとえば、後で再計算できない重要なデータを保存している場合)、実験的な (標準外の) readwriteflush モードを使用してトランザクションを作成することで、complete イベントを配信する前にトランザクションをディスクに強制的にフラッシュさせることができます(IDBDatabase.transaction を参照)。これは現在実験的なものであり、about:config で dom.indexedDB.experimental 設定項目が true に設定されている場合にのみ使用できます。

インデックス

インデックスは、参照オブジェクトストアと呼ばれる別のオブジェクトストアにあるレコードを探すために特化したオブジェクトストアです。インデックスは永続的なキー-値ストレージで、そのレコードの値の部分が参照するオブジェクトストアのレコードのキー部分となります。インデックス内のレコードは、参照されるオブジェクトストア内のレコードが挿入、更新、または削除されるたびに、自動的に入力されます。インデックス内の各レコードは、参照するオブジェクトストア内の1つのレコードのみを参照することができますが、複数のインデックスが同じオブジェクトストアを参照することは可能です。オブジェクトストアが変更されると、そのオブジェクトストアを参照しているすべてのインデックスが自動的に更新されます。

また、キーを使用してオブジェクトストア内のレコードを見いだすこともできます。

インデックスの使用について詳しくは、 IndexedDB の使用を参照してください。インデックスについてのリファレンス記事は、 IDBKeyRange を参照してください。

オブジェクトストア

データベースにデータを保存する仕組みです。オブジェクトストアはレコードを持続的に保持しており、これはキーと値の組です。オブジェクトストア内のレコードは、キー によって昇順に整列して保存されています。

すべてのオブジェクトストアには、そのデータベース内で一意となる名前が必要です。オブジェクトストアは、オプションで キージェネレーター と キーパス を持つことができます。オブジェクトストアにキーパスがある場合は インラインキー、ない場合は アウトオブラインキー が使用されます。

オブジェクトストアのリファレンス文書は、 IDBObjectStore を参照してください。

リクエスト

データベースへの読み書きが行われる処理。すべてのリクエストは、 1 つの読み取りまたは書き込み処理を表します。

トランザクション

特定のデータベースで行う、原子性を持つデータアクセスやデータ変更の操作のセットです。これは、データベース内のデータと対話する手段です。実際は、データベース内のデータの読み取りや変更はトランザクション内で実施しなければなりません。

書き込みトランザクションのスコープが重ならない限り、ひとつのデータベース接続で同時に複数のアクティブなトランザクションが存在できます。トランザクションのスコープは生成時に定義され、トランザクションがどのオブジェクトストアと対話できるかや、トランザクションの持続期間にわたって保持し続けるかを示します。よって例えば、データベース接続で flyingMonkey オブジェクトストアのみ対象とするスコープを持つ書き込みトランザクションがすでに存在するとき、unicornCentaur オブジェクトストアや unicornPegasus オブジェクトストアをスコープで持つ別のトランザクションを開始できます。読み取りトランザクションは、スコープが重なっていても複数実行できます。

トランザクションは持続期間が短いものを除き、長時間のトランザクションがストレージ資源をロックする状況から解放するために、ブラウザーが終了させることができます。トランザクションは中止させることができ、トランザクションによるデータベースの変更箇所はロールバックされます。また、開始するトランザクションや中止するトランザクションを待つ必要はありません。

トランザクションには readwrite、readonly、versionchange の 3 つのモードがあります。オブジェクトストアやインデックスの生成および削除は、versionchange トランザクションを使用する場合に限り実行できます。トランザクションのタイプについて詳しくは、IndexedDB のリファレンスをご覧ください。

すべての操作はトランザクション内で発生しますので、トランザクションは IndexedDB の重要な概念です。トランザクションについて、特にバージョン付けとの関係については、IDBTransaction および関連文書をご覧ください。ここにリファレンス文書もあります。

バージョン

始めにデータベースを生成したとき、バージョンは整数の 1 になります。それぞれのデータベースは、一度に 1 つのバージョンを持ちます。一度に複数のバージョンを持つことはできません。バージョンを変更する唯一の方法は、現在のバージョンより大きなバージョンでデータベースを開くことです。

キーと値 インラインキー

保存される値の一部として保存されるキーです。これは キーパス を使用して見つけます。インラインキーは、ジェネレーターを使用して生成できます。キーが生成されると、キーパスを使用してキーを値の中に保存したり、キーとして使用したりすることができます。

キー

オブジェクトストアに保存された値は、このデータ値によって編成および取り出しされます。オブジェクトストアは キージェネレーター、キーパス、明示的に指定した値の、3 種類の生成源のいずれかからキーを得られます。キーは、自身の前にあるものより大きな数値を持つデータ型であることが必要です。オブジェクトストア内の各レコードはオブジェクトストア内で一意のキーを持たなければならず、オブジェクトストア内で複数のレコードが同じキーを持つことはできません。

キーは 文字列、date、浮動小数点数値、配列のいずれかの型を使用できます。配列では、キーは空の値から無限大までの範囲を使用できます。また、配列の中に配列を含めることができます。文字列または整数値のキーしか使用できないという条件はありません。

代わりに、インデックスを使用してオブジェクトストア内のレコードを検索することもできます。

キージェネレーター

指定した順序で新たなキーを生成する仕組みです。オブジェクトストアがキージェネレーターを持たない場合は、保存するレコードのキーをアプリケーションが提供しなければなりません。ジェネレーターはストア間で共有しません。これはむしろブラウザーの実装の細部であり、Web 開発において実際にはキージェネレーターの生成やアクセスは行いません。

キーパス

オブジェクトストアやインデックスのどこからブラウザーがキーを取り出すべきかを定義します。有効なキーパスは空文字列、JavaScript の識別子、ピリオドで区切られた複数の JavaScript の識別子、あるいはそれらを収めた配列のいずれかを含むことができます。空白を含むことはできません。

アウトオブラインキー

保存する値とは別に保存されるキーです。

値

それぞれのレコードは値を持っており、論理値、数値、文字列、date、オブジェクト、配列、正規表現、undefined、null を含む、JavaScript で表現可能なものをどれでも含むことができます。

オブジェクトまたは配列を保存する場合は、それらのプロパティや値もまた、有効な値をどれでも持つことができます。

また、Blob やファイルも保存可能です。仕様書 をご覧ください。

レンジとスコープ カーソル

キーレンジに属する複数のレコードにわたって反復処理を行うための仕組みです。カーソルは、反復処理を行うインデックスやオブジェクトストアがどれかを示す source を持ちます。またレンジ内の位置や、レコードキーの順序について増加方向に移動しているか減少方向に移動しているかの情報も持ちます。カーソルのリファレンス文書として、IDBCursor をご覧ください。

キーレンジ

キーとして使用する、何らかのデータ型の連続的な区間です。キーまたはキーレンジを使用して、オブジェクトストアやインデックスからレコードを取り出すことができます。下限または上限を使用して、レンジを制限またはフィルタリングできます。例えばキーが x から y の間であるすべての値に対して、反復処理を行うことができます。

キーレンジのリファレンス文書として、IDBKeyRange をご覧ください。

スコープ

トランザクションの適用先であるオブジェクトストアやインデックスのセットです。読み取りのみのトランザクションのスコープは、同時に重ね合ったり実行することができます。一方、書き込みトランザクションのスコープは重ね合うことができません。同時に同一のスコープで複数のトランザクションを開始することはできますが、それらはキューに収められ、順番に実行されます。

次のステップ

IndexedDB の主な特徴と主要な用語を理解できたら、より具体的な作業に入ることができます。API の使い方のチュートリアルについては、IndexedDB の使用をご覧ください。

関連情報

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4