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

Posted

技术标签:

【中文标题】PhoneGap 使用啥数据库,大小限制是多少?【英文标题】:What database does PhoneGap use and what is the size limit?PhoneGap 使用什么数据库,大小限制是多少? 【发布时间】:2013-03-29 16:24:09 【问题描述】:

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

IE10 - 索引数据库 - 最大 1GB FireFox - indexedDB - 无限制 Safari - WebSQL - 最大 50MB Chrome - IndexedDB(或 Web SQL) - 无限制(使用 HTML5 Quota API ref1, ref2) 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 插件。 ios、Android、Windows Phone 8+


问题 1 - 我对 PhoneGap 将使用什么数据库的理解准确吗?

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

问题 3 - PhoneGap 是否有计划坚持 Web Storage standards 从而放弃 WebSQL 以支持 indexedDB?如果是这样,一旦切换到 indexedDB,我是否仍然可以使用现有的 WebSQL 代码(通过内置的 PhoneGap-polyfill)?

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

【问题讨论】:

你的html5数据库抽象是开源的吗?链接? 我希望是因为我认为我在这方面做得很好并且想炫耀它,但事实并非如此。它很难维护,因为随着浏览器越来越接近实现标准,代码中断或某些浏览器需要使用不同的功能序列。除非您有人可以照看它,否则我不建议您尝试构建它。 【参考方案1】:

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

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

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

    本地存储 :: 10MB 会话存储 :: 10MB SQLite 数据库 :: 50MB-80MB(取决于设备) 使用插件调用的本地数据库 :: 无限数据量 索引数据库 :: 5MB。依然存在。但是非常有问题,theres a list of devices/OS's that run it here

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

WebSQL 正在慢慢被弃用。它的替代品是 IndexedDB 或 SQLite。然而,对您来说最好的选择是 SQLite 或本机数据库(例如 iOS 上的 Core Data)

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

这绝对是可能的。

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

我在my answer 中添加了关于如何为 SQLite 和 LocalStorage 数据库进行编码的说明。

【讨论】:

出色的答案,谢谢。 IndexedDB 真的被弃用了吗?我一直讨厌 IndexedDB(甚至就此联系 W3C)。 是的,我也讨厌 IndexedDB。但我真的觉得 SQLite 可能是您的最佳选择。通过一些额外的编码,您可以在将数据写入数据库之前添加基本的加密/解密。 我想你不会考虑给我赏金吧? 充满希望却又可爱的笑容 sry,我以为它是自动完成的 谢谢。我在这里添加了如何在 SQLite 和 LocalStorage 中开始 :: ***.com/questions/12005042/phonegap-offline-database/…【参考方案2】:

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

【讨论】:

你是怎么做到的?您是否在配额限制上指定了一些参数?【参考方案3】:

索引数据库 -

它与许多类型的移动操作系统和版本不兼容 它仅与非常特定版本的移动操作系统兼容 开发人员不能将 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

【讨论】:

以上是关于PhoneGap 使用啥数据库,大小限制是多少?的主要内容,如果未能解决你的问题,请参考以下文章

谁知道Access数据库行数有没有限制?是多少?

Android 上带有 Phonegap 的缓存清单的大小限制

现代浏览器中当前的 cookie 限制是多少?

是啥限制了我在内存方面对堆栈的使用?

腾讯微云上传文件大小限制是多少?为啥我不能上传超过1g的文件?今天刚用不了解,我记得以前不是宣传

PostgreSQL一个数据库最大支持多少个表?