67

localStorage、indexedDB、および WebSQL を抽象化する HTML5 データベースを作成しました。ストレート HTML5 を使用すると、データベース オプションは次のようになります。

  • IE10 - indexedDB - 最大 1GB
  • FireFox - indexedDB - 無制限
  • Safari - WebSQL - 最大 50MB
  • Chrome - IndexedDB (または Web SQL) - 無制限 (HTML5 Quota API ref1ref2を使用)
  • Opera - WebSQL (Webkit に切り替えるまで?) - 無制限

PhoneGap または Quota API を使用してデータベースの最大サイズを拡張したいと考えています。PhoneGap のドキュメントから、現在のPhoneGap データベースのエコスフィアは次のように見えます。

  • WebSQL - Android、Blackberry、iPhone、および webOS
  • localStorage - Windows Phone 7
  • indexedDB - Windows Phone 8と、おそらくどこでも indexedDB は利用できますが、WebSQL は利用できません。

PhoneGap SqlLite プラグインもあります。iOSAndroidWindows Phone 8+


質問 1 - PhoneGap が使用するデータベースについて、私の理解は正確ですか?

質問 2 - 特定のタイプの PhoneGap データベースに保存されるデータの量に関する確固たる文書はありますか? *ブラウザ データベースの実装ではなく、PhoneGap データベースである場合。

質問 3 - PhoneGap はWeb Storage 標準に準拠し、それによって WebSQL を廃止して indexedDB を採用する計画はありますか? その場合、indexedDB に切り替えた後も、既存の WebSQL コードを (組み込みの PhoneGap-polyfill を介して) 使用できますか?

質問 4 - データベースのサイズが制限されており、PhoneGap または Quota API のいずれによっても拡張できないが、ファイル システムへのアクセスが可能である状況では、「余分な」データがデバイスのファイル システムまたはSDカードに?

4

3 に答える 3

95

PhoneGap がどのデータベースを使用するかについての私の理解は正確ですか?

はい、そうです。PhoneGap は、LocalStorage、SessionStorage、または SQLite データベースを使用できます。または、PhoneGap を使用して、プラグインを介してデバイスのネイティブ クラスに接続し、ネイティブ クラス データを渡してデバイスに保存することもできます。

特定のタイプの PhoneGap データベースに保存されるデータの量に関する確かなドキュメントはありますか? ブラウザー データベースの実装ではなく、PhoneGap データベースである場合。

  1. ローカルストレージ:: 10MB
  2. セッションストレージ:: 10MB
  3. SQLite データベース :: 50MB-80MB (デバイスによって異なります)
  4. プラグイン呼び出しを使用したネイティブ データベース :: 無制限のデータ量
  5. インデックス DB:: 5MB。まだ存在します。しかし、非常にバグがあります。ここでそれを実行するデバイス/OSのリストがあります

PhoneGap は Web Storage 標準に準拠し、WebSQL を廃止して indexedDB を採用する予定はありますか? その場合、indexedDB に切り替えた後も、既存の WebSQL コードを (組み込みの PhoneGap-polyfill を介して) 使用できますか?

WebSQL は徐々に廃止されています。その代替は、IndexedDB または SQLite です。ただし、最適なオプションは、SQLite またはネイティブ データベース (iOS の Core Data など) のいずれかです。

データベースのサイズが制限されており、PhoneGap または Quota API のいずれによっても拡張できないが、ファイル システムへのアクセスは可能である場合、「余分な」データをデバイスのファイル システムまたは SD に保存できると想定するのは合理的ですか?カード?

それは間違いなく可能です。

  • Android では、データベースの場所を指定できるため、データを外部データベースにプッシュできます。
  • iOS では、ネイティブ データベース呼び出しを使用して CoreData にデータを格納できます。外部メモリはありません。
  • すべての OS のすべてのケースで、テキスト ファイルなどのフラットなデータベース ファイルを作成し、データをキーと値のリストに格納してから、最初の実行時にそれらをアプリに取り込むことができます。この場合、メモリ管理に注意してください。

answerに SQLite および LocalStorage データベースのコーディング方法の説明を追加しました。

于 2013-04-04T13:15:33.633 に答える
6

Android 4.0.4 タブレットでテストを実行できました。WebSQL (db.changeVersion をサポートしていない古いバージョンの WebSQL) を使用し、ハード ドライブ全体 (データベースで 12GB) をいっぱいにすることができました。他のデバイスや SD カードの仕組みについてはわかりません。

ここに画像の説明を入力

于 2013-04-03T13:20:40.917 に答える
3

インデックスDB -

  • 多くの種類のモバイル OS およびバージョンと互換性がありません
  • 非常に特定のバージョンのモバイル OS とのみ互換性があります
  • 開発者は IndexedDB で SQL を使用できません。SQLite と WebSQL で SQL ステートメントを使用できます
  • ほとんどの開発者はできる限り IndexedDB の使用を積極的に避けています

WebSQL -

  • W3C によって廃止されました。これは、もはや維持または開発されていないことを意味します。
  • モバイル アプリケーションが Google Android や Apple iOS などの一般的なモバイル OS で動作するようにするには、Polyfill と呼ばれる別のプラグインが必要です。

SQLite -

  • Google から賞を受賞しました
  • SQLite には公式 Web サイトがあります。IndexedDB と WebSQL は
  • Google では、SQLite は 180 万件の結果を返します。WebSQL は 700K 未満の結果を返し、IndexedDB は 282K の結果を返します。
  • 開発者は、SQLite で一般的な SQL ステートメントを使用できます。

SQLite の簡単なチュートリアルが必要な場合

Android と Phonegap を使用した SQLite データベースのストレージ

于 2014-09-13T21:14:30.180 に答える