PhoneGap使用什么数据库以及大小限制是多少?

时间:2013-03-29 16:24:09

标签: cordova mobile offline

我写了一个HTML5数据库,它抽象了localStorage,indexedDB和WebSQL。使用直接HTML5我的数据库选项如下所示:

  • IE10 - indexedDB - 最大1GB
  • FireFox - indexedDB - 无限
  • Safari - WebSQL - 最多50MB
  • Chrome - IndexedDB(或Web SQL) - 无限制(使用HTML5配额API ref1ref2
  • Opera - WebSQL(直到他们切换到webkit?) - 无限

我想使用PhoneGap或Quota API扩展最大数据库大小。从PhoneGap的文档看起来,当前的PhoneGap database ecosphere是:

  • 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 standards,从而放弃WebSQL而转而使用indexedDB?如果是这样,一旦切换到indexedDB,我仍然可以使用我现有的WebSQL代码(通过内置的PhoneGap-polyfill)吗?

问题4 - 在数据库大小有限且无法通过PhoneGap或Quota API进行扩展但是可以访问文件系统的情况下,假设“额外”是合理的数据可以存储在设备的文件系统上还是存储在SD卡上?

3 个答案:

答案 0 :(得分:95)

  

我对数据库PhoneGap将使用的准确度的理解是什么?

是的。 PhoneGap可以使用LocalStorage,SessionStorage或SQLite数据库。您也可以使用PhoneGap通过插件连接到设备本机类,并传递本机类数据,然后将其存储在设备上。

  

是否有关于给定类型的PhoneGap数据库将存储多少数据的可靠文档?如果是PhoneGap数据库而不是浏览器数据库实现。

  1. LocalStorage :: 10MB
  2. SessionStorage :: 10MB
  3. SQLite数据库:: 50MB-80MB(取决于设备)
  4. 使用插件调用的本机数据库::无限数据量
  5. IndexedDB :: 5MB。仍然存在。但非常错,theres a list of devices/OS's that run it here
  6.   

    PhoneGap是否计划遵守Web存储标准,从而放弃WebSQL而转而使用indexedDB?如果是这样,一旦切换到indexedDB,我仍然可以使用我现有的WebSQL代码(通过内置的PhoneGap-polyfill)吗?

    WebSQL正在慢慢被弃用。它的替代品是IndexedDB或SQLite。但是,最好的选择是SQLite或本机数据库(例如iOS上的核心数据)

      

    在数据库大小有限且无法通过PhoneGap或Quota API扩展但是可以访问文件系统的情况下,可以合理地假设“额外”数据可以存储在设备的文件系统上或在SD卡上?

    绝对有可能。

    • 在Android上,您可以指定数据库的位置,从而将数据推送到外部数据库。
    • 在iOS上,您可以使用本机数据库调用在CoreData上存储数据,没有外部存储器。
    • 在所有操作系统的所有情况下,您都可以创建一个平面数据库文件,如文本文件,将数据存储在键值列表中,然后在首次运行时将这些文件存入您的应用程序。在这种情况下要小心内存管理。

    我在my answer中添加了如何编写SQLite和LocalStorage数据库的解释。

答案 1 :(得分:6)

我能够在Android 4.0.4平板电脑上运行测试。它使用WebSQL(一个甚至不支持db.changeVersion的旧版WebSQL),它允许我填满整个硬盘(12GB与我的数据库)。我不知道其他设备或SD卡如何工作。

enter image description here

答案 2 :(得分:3)

IndexedDB -

  • 它与许多类型的移动操作系统和版本
  • 不兼容
  • 它仅与非常特定的移动操作系统版本兼容
  • 开发人员不能将SQL与IndexedDB一起使用。 SQL语句可以在SQLite和WebSQL上使用
  • 大多数开发人员都尽可能地主动避免使用IndexedDB

WebSQL -

  • W3C已弃用它,这意味着它已不再维护或开发
  • 它需要另一个名为Polyfill的插件,以使移动应用程序能够与流行的移动操作系统(如Google Android和Apple iOS)配合使用

SQLite -

  • 它获得了Google的奖励
  • SQLite有其官方网站。 IndexedDB和WebSQL没有
  • 在Google上,SQLite会返回180万条结果。 WebSQL返回少于700K的结果,IndexedDB返回282K结果。
  • 开发人员可以使用SQLite的常见SQL语句。

如果你想要一个关于SQLite的快速教程

Storage of SQLite database using Android and Phonegap