私はアプリケーション開発の研究開発段階にあり、次の重要な要件があります。
クォータの制限のため、Webストレージを使用できません- SQLite と Indexed DB を比較しています。
APIの選択に困惑しています。 SQLiteに代わる他の方法や、Safariで予想されるIndexed DBのサポートはありますか?
IndexedDBを放棄することは悪い考えだと思います。これはおそらく将来の形式であるため、SafariがWebSQLのサポートを停止する可能性があるためです。
2つの間のギャップを埋めるためのさまざまなJavaScriptソリューションがあるようです-ユーザーのブラウザーで利用可能な方の節約: IndexedDBとWebSQLをブリッジするJavaScriptライブラリ これはおそらく最良のソリューションだと思います。
まず第一に、W3Cで廃止されたのはSQLiteではなくWebSQLです。
IndexedDB-
WebSQL-
SQLite-
SQLiteの簡単なチュートリアルが必要な場合は、
AndroidおよびPhonegap を使用したSQLiteデータベースのストレージ
はい、IndexedDB APIは優れており、すべてのブラウザが近い将来サポートする予定です。
私は間違いなく自分のソリューションをお勧めします https://bitbucket.org/ytkyaw/ydn-db これはIndexedDBの非常に薄いラッパーであり、Safliteの場合はSqliteにフォールバックします。
IndexedDBは将来的にサポートされるデータベースである可能性が高く、WebSQLの代わりにそれを使用するのが最善です。レイモンドが指摘したように、デスクトップとモバイルの両方のブラウザーで現在/将来のサポートを確認するには、 http://www.caniuse.com を参照するのが最善です。
ソリューションの現在のニーズに応じて、 local storage を使用してクエリインターフェイスを提供する、利用可能な多数のJavaScriptライブラリの1つで問題ない場合があります。私にとってうまくいったライブラリの1つは Lawnchair です。
IndexedDBとWebSQLのどちらかを選択したくない場合は、JavaScriptライブラリ PouchDB を使用できます。
私はそれをAndroid Webviewで使用してオフラインデータを保存し、それはかなりうまくいきます。インターネット接続が利用できず、同期されている場合、データはローカルデータベースに保存されます(IndexedDBまたはWebSQLを使用)利用可能な接続がある場合、リモートデータベース( CouchDB データベース)を使用します。
PouchDBはIndexedDBに依存しますが、IndexedDBがサポートされていない場合は WebSQLにフォールバック します。 Cordova/PhoneGapのSQLiteプラグインを使用する可能性もあります。
あなたがwebsql、localStorage、indexedDBのテーマについて調査した場合、グーグルがこの質問に私たちを案内するので、私はこの質問を更新するために少し編集したかったのです。編集が拒否されたので、回答として投稿しています。
他の人が回答で述べたように、IndexedDBはそのドキュメントと仕様について、サポートとWeb上のコンテンツについて少し前に欠けていました。
しかし、IndexedDBのサポートは モバイル向けに大幅に改善されました です。それは非常に改善され、サポートもまったくないブラウザはOpera Mini、 ただし、市場での使用率は0,34%のみ です。
2015年の時点で、WebSQLが非推奨となり、IEであり、Firefoxがサポートを停止したため、IndexedDBに移行することをお勧めします(これだけで、市場での使用量の15%以上です!) SQLiteは急速に領域をIndexedDBに失っており、これは現在、非常に優れています ドキュメントソース 、 many 。 一部の公式も !。 [〜#〜] ibm [〜#〜] のように、使用の動機付けもします。
使うつもりで今のところ問題はありません。 Safariはそれにサポートを追加し、すべての主要なブラウザも同様です。頑張れ!
編集:個人的な補遺:IndexedDBを試しました。私は私のチームのシニアです。IndexedDBの構文は、小さなストレージの問題に対しては、複雑すぎて複雑です。localstorageを使用して、単純なJSONデータを保存し、必要に応じて解析しました。私のチームの誰にとってもそれを手に入れる方がずっと良い(もちろん私も!)
他の人が指摘したように、この質問が行われたため、webSQL 非推奨になりました 、IndexedDB実装 現在、すべての主要なブラウザーベンダーに存在しています 。
ですから、ここで同じ決断を迫られることに気付いた人は、IndexedDBを使用してください。
ここの他のものも、2つのタイプのデータベース間で選択を行う必要がないことを正しく示唆しています。クライアントマシンで利用可能なデータベースを利用するライブラリを選択(または作成)するだけです。
そのようなライブラリを探しているなら、 BakedGoods をチェックしてください。すべてのネイティブおよび一部の非ネイティブクライアントストレージ機能でストレージ操作を実行するために使用できる統一されたインターフェイスを確立します。また、それぞれがユーザーに提供する柔軟性とオプションを維持します。
それを使用すると、サポートされているデータベースの種類のいずれかでストレージ操作を実行することは問題です...
...両方のデータベースタイプに適切な操作オプションと同等の構成を指定します。
//If the operation is a set(), and the referenced structures
//don't exist, they will be created automatically.
var webSQLOptionsObj = {
databaseName: "Example_DB",
databaseDisplayName: "Example DB",
databaseVersion: "",
estimatedDatabaseSize: 1024 * 1024,
tableData: {
name: "Main",
keyColumnName: "lastName",
columnDefinitions: "(lastName TEXT PRIMARY KEY, firstName TEXT)"
},
tableIndexDataArray: [name: "First_Name_Index", columnNames: "(firstName)"]
};
var indexedDBOptionsObj = {
databaseName: "Example_DB",
databaseVersion: 1,
objectStoreData: {
name: "Main",
keyPath: lastName,
autoIncrement: false
},
objectStoreIndexDataArray: [
{name: "First_Name_Index", keyPath: "firstName", unique: false, multiEntry: false}
],
};
var optionsObj = {
conductDisjointly: false,
webSQL: webSQLOptionsObj,
indexedDB: indexedDBOptionsObj
};
...そして操作の実行:
bakedGoods.set({
data: [
{value: {lastName: "Obama", firstName: "Barack"}},
{value: {lastName: "Biden", firstName: "Joe"}}
],
storageTypes: ["indexedDB", "webSQL"],
options: optionsObj,
complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){}
});
そのシンプルなインターフェースと比類のないストレージファシリティサポートは、一部のストレージファシリティ固有の構成に対するサポートの欠如という代償を伴います。たとえば、複数列の主キーを持つWebSQLテーブルでのストレージ操作の伝導はサポートされていません。
そのため、これらのタイプの機能を頻繁に使用する場合は、他の場所を調べることをお勧めします。
ああ、そして完全な透明性のために、BakedGoodsはこの男がここで管理しています:).
これはゲームに遅れるかもしれませんが、あなたは以下を見ることができます: SequelSphere
クロスブラウザで動作し、ローカルストレージを使用してデータを保持する、100%HTML5/JavaScriptリレーショナルデータベースです。 SQLを使用してクエリすることもできます。これは独自のデータベースエンジンであり、組み込み(WebSQL)リレーショナルデータベースに依存しません。そのため、すべてのブラウザーで機能します。
現在はlocalStorageのみをサポートしていますが、今後のすべての標準をサポートするという考えです。ブラウザは他のタイプの永続性をサポートしているため、SequelSphereはそれを利用します。良い点は、標準SQLを使用してSequelSphereに対してのみコーディングし、永続性を処理させることです。
それにもかかわらず、それは市場への新製品であることを認識してください。そのため、それはプラスとマイナスの両方を伴います。