33

暗号化されたデータベースにユーザーの電話 (100 MB 以上) の大きなオフライン データを保存したいと考えています。可能であれば、事前に入力されたデータベースも配布したいと考えています。私もこれを見ました

Web データベースのことは知っていますが、減価償却されているため、それを使用しないことをお勧めします。

SQLite Pluginなどのサードパーティのプラグインもいくつか見ましたが、iOS および Android デバイスでのみ機能しますが、4 つのプラットフォーム (ios、android、blackberry、windows) をターゲットにしています。

私自身を書き留める以外に、他の解決策はありますか?

4

5 に答える 5

4

WebデータベースのW3C仕様では、Webアプリケーションワーキンググループが、他の2つのストレージ関連の仕様であるWebStorageとIndexedDatabaseAPIの作業を継続していると述べられます

したがって、Webデータベース仕様はアクティブではなくなりますが、他の2つの仕様はアクティブになります。

Web Storageは、ユーザーのブラウザ内でローカルにデータを保存するために使用できます。これを実現するための次のオブジェクトがあります。

  • 有効期限なしでデータを保存するlocalStorage
  • 1つのセッションのデータを格納するsessionStorage

W3C仕様には次のように記載されているため、Webストレージ(100MB以上)はお勧めしません。

オリジンごとに5メガバイトのほとんど任意の制限が推奨されます。

私の意見では、SQLiteは、自己完結型のサーバーレスのゼロ構成のトランザクションSQLデータベースエンジンを実装するインプロセスライブラリであるため、利用可能な最良のオプションです。さらに、SQLiteの制限はあなたのニーズをカバーしているようです:

SQLITE_MAX_PAGE_COUNTの可能な最大設定は2147483646です。最大ページサイズ65536で使用すると、最大SQLiteデータベースサイズは約140テラバイトになります。

暗号化要件に関しては、SQLite拡張機能であるSQLCipherを検討する必要があります。

SQLCipherは、データベースファイルの透過的な256ビットAES暗号化を提供するSQLite拡張機能です。現在まで、Zetetic LLCによってオープンソース化され、後援され、維持されてきました。モバイル分野では、SQLCipherはAppleのiOSだけでなく、Nokia/QTでもかなり長い間広く使用されてきました。

別のオプションは、データベースの書き込みと読み取りの際にデータを暗号化および復号化することです。

これがお役に立てば幸いです。

于 2012-08-22T18:51:12.743 に答える