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


67

我编写了一个HTML5数据库,该数据库抽象了localStorage,indexedDB和WebSQL。使用纯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插件。iOS安卓Windows Phone 8+


问题1-我对使用哪种数据库PhoneGap的理解是否准确?

问题2-是否有可靠的文档说明给定类型的PhoneGap数据库将存储多少数据?*如果是PhoneGap数据库而不是浏览器数据库实现。

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

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


您的html5数据库抽象是开源的吗?链接?
英国电信

我希望这是因为我认为我在此方面做得很好,并且想炫耀它,但事实并非如此。之所以难以维护,是因为随着浏览器越来越接近于实现标准,代码就会中断,或者某些浏览器需要使用不同的功能序列。除非您有可以照顾它的人,否则我不建议您尝试建造一个。
user1873073 2013年

Answers:


95

我对PhoneGap使用的哪个数据库准确吗?

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

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

  1. 本地存储:: 10MB
  2. 会话存储:: 10MB
  3. SQLite数据库:: 50MB-80MB(取决于设备)
  4. 使用插件调用的本机数据库::无限数据量
  5. IndexedDB :: 5MB。仍然存在。但是非常容易出错,这里有运行它的设备/操作系统列表

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

WebSQL正在逐渐被弃用。它的替代品是IndexedDB或SQLite。但是,最适合您的选择是SQLite或本机数据库(例如,iOS上的Core Data)

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

绝对有可能。

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

我已经添加的如何去编码在SQLite和localStorage的数据库的解释我的答案


2
出色的答案,谢谢。IndexedDB真的被弃用了吗?我一直很讨厌IndexedDB(就联系W3C而言)。
user1873073 2013年

是的,我也讨厌IndexedDB。但是我真的觉得SQLite可能是您的最佳选择。通过一些额外的编码,您可以在将数据写入数据库之前添加基本的加密/解密。
2013年

1
我不认为您会考虑授予我赏金吗?充满希望但又可爱的笑容
SashaZd 2013年


谢谢。我加了一个如何在SQLite和localStorage的开始在这里下车:: stackoverflow.com/questions/12005042/phonegap-offline-database/...
SashaZd

6

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

在此处输入图片说明


你是怎么做到的?您是否在配额限制中指定了一些参数?
JohnAndrews

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的快速教程

使用Android和Phonegap存储SQLite数据库

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.