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数据库而不是浏览器数据库实现。
- LocalStorage :: 10MB
- SessionStorage :: 10MB
- SQLite数据库:: 50MB-80MB(取决于设备)
- 本地数据库使用插件调用::无限的数据量
- 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数据库