PhoneGap使用哪个数据库,大小限制是多less?

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

  • IE10 – indexedDB – 最大1GB
  • FireFox – indexedDB – 无限
  • Safari – WebSQL – 最大50MB
  • Chrome – IndexedDB(或Web SQL) – 无限制(使用HTML5 Quota API ref1 , ref2 )
  • 歌剧 – WebSQL(直到他们切换到WebKit?) – 无限

我想扩大使用PhoneGap或配额API的最大数据库大小。 从PhoneGap的文档中,它看起来像当前的PhoneGap数据库生态圈是:

  • WebSQL – Android,黑莓,iPhone和webOS
  • localStorage – Windows Phone 7
  • indexedDB – Windows Phone 8 ,我猜,无处不在indexedDB是可用的,但WebSQL不是。

还有PhoneGap SqlLite插件。 iOS , Android , Windows Phone 8+


问题1 – 我对PhoneGap将使用的数据库的理解是否准确?

问题2 – 是否有关于给定types的PhoneGap数据库将存储多less数据的可靠文档? *如果是PhoneGap数据库而不是浏览器数据库实现。

问题3 – PhoneGap是否有计划遵守Web存储标准,从而将WebSQL降低为支持indexedDB? 如果是这样,一旦切换到indexedDB,我仍然能够使用我现有的WebSQL代码(通过内置的PhoneGap-polyfill)?

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

我的理解PhoneGap将使用哪个数据库准确?

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

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

  1. LocalStorage :: 10MB
  2. SessionStorage :: 10MB
  3. SQLite数据库:: 50MB-80MB(取决于设备)
  4. 本地数据库使用插件调用::无限的数据量
  5. IndexedDB :: 5MB。 仍然存在。 但是非常麻烦,这里有一个设备/操作系统的列表

PhoneGap是否计划遵守Web存储标准,从而将WebSQL降低为支持indexedDB? 如果是这样,一旦切换到indexedDB,我仍然能够使用我现有的WebSQL代码(通过内置的PhoneGap-polyfill)?

WebSQL正在慢慢被弃用。 它的替代品是IndexedDB或SQLite。 但是,对于您来说最好的select是SQLite或本地数据库(例如iOS上的核心数据)

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

这绝对是可能的。

  • 在Android上,您可以指定数据库的位置,并将数据推送到外部数据库。
  • 在iOS上,您可以使用本地数据库调用来将数据存储在CoreData上,而不需要外部存储器。
  • 在所有操作系统的所有情况下,您可以创build一个平面数据库文件(如文本文件),将数据存储在键值列表中,然后在第一次运行时将这些数据提取到您的应用程序中。 在这种情况下请注意内存pipe理。

我已经添加了解释如何在我的答案中编码SQLite和LocalStorage数据库。

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

在这里输入图像说明

IndexedDB –

  • 它与许多types的移动操作系统和版本不兼容
  • 它只与特定版本的移动操作系统兼容
  • 开发人员不能在IndexedDB中使用SQL。 SQL语句可以在SQLite和WebSQL上使用
  • 大多数开发人员尽可能避免使用IndexedDB

WebSQL –

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

SQLite –

  • 它获得了Google的奖项
  • SQLite有它的官方网站。 IndexedDB和WebSQL不
  • 在Google上,SQLite返回了180万个结果。 WebSQL返回的结果less于700K,IndexedDB返回282K的结果。
  • 开发人员可以使用SQLite的通用SQL语句。

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

使用Android和Phonegap存储SQLite数据库