2014年1月22日水曜日

Indexed Database API

Indexed Database API(以下IndexedDB)はローカルにテキスト データを保存するAPIを提供しています。

また、簡単な検索方法も提供します。データ保存が主な目的で、規格策定が中断されたWebSQLのようなサービスは提供されていません。複数条件の検索やテーブルの結合などの利用はJavaScriptで処理する、と考えた方が良さそうです。

解説は日本でもネット上に色々ありますが、とりあえず以下のページを参照してみました。
IBM HTML5 の IndexedDB API を使用する

すぐにわかる間違いが一カ所ありましたが、記事の発表が2013年10月24日で比較的新しく、W3Cの規格を調べるときの参考になります。

記事では言及されていませんがこのページで提供されいるサンプルコードにはブラウザごとの違いを吸収する部分があります。Mac OS X上の以下のブラウザで試しましたが、この部分をなくしても動作しました。
Google Chrome バージョン 31.0.1650.63
Firefox バージョン 26.0

IndexedDBでは固定したフィールドではなく、JavaScriptのJSONをレコードに入れています。このためにインデックス指定したKey以外は、レコードごとに異なるKeyと値を設定できます。IndexedDBにはフィールドの概念がないため、データベースのように特定のフィールドだけを取り出せません。レコードごと取り出して、あとはJavaScriptで処理、と言う事のようです。

IndexedDBで検索できるのはインデックスのあるキーに対して、一つの条件に合致するか、条件の数値よりもキーの値が大きいか小さいか、指定した上限数値と下限数値の間にあるか、のみです。先にも書いたように複数の条件で検索するにはJavaScriptで処理した方が良さそうです。

こうなると、JavaScriptでテーブルの結合などリレーショナルデータベース風に処理するためのAPIが欲しくなります。その問合せAPIはやはり"SQL"でしょうか?(大笑)

0 件のコメント: