【发布时间】:2014-10-09 08:09:25
【问题描述】:
我正在为 Chrome 扩展程序(以及该扩展程序的打包应用变体)设计一个原型,小型、轻量级的 SQL 数据库(如 SQLite)将是理想的选择。但是,Chrome Apps cannot use Web SQL。
我一直在试验SQL.js,这是 SQLite 的 JavaScript 实现,但似乎我需要在任何时候手动将整个数据库写入磁盘以保存。这意味着,如果我想在当前会话之后保留我的更改,则每次 SQL 写入(例如,UPDATE、INSERT、DELETE)都需要手动将整个数据库写入磁盘。正确的?我错过了什么吗?
这是我对 SQL.js(或 SQLite 的任何其他 JavaScript 实现)的唯一选择吗?变化。
如果 SQLite 实现足够智能,只更新实际更改的数据文件部分,那就更好了。因此,如果您有一个 20 meg 的数据库,并且您执行更新,将位标志从 0 翻转到 1,它可以只更改一位,而不必将整个 20 meg 写入磁盘。
我知道 IndexedDB 作为替代方案,我正在单独对其进行调查。这个问题是关于我的 SQL.js/SQLite 选项的。我想确定我是否理解 SQLite 是否以及如何工作。
似乎确实有 Cordova-specific plugin that offers SQLite support,但这在 Chrome 扩展程序和应用程序中不起作用(至少,在没有自定义的情况下)。
【问题讨论】:
-
@Xan,我看到你删除了 Google Chromee 扩展标签,说“删除了不相关的标签”。这是关于在 Google Chrome 扩展程序或 Google Chrome 应用程序中使用 SQL.js 的问题。为什么你觉得标签无关紧要?
-
对不起,我看错了你的问题。我会把它回滚。
-
IndexedDB 的一个大问题是它位于应用程序的沙箱中,因此任何其他应用程序都无法访问给定的数据库。因此,不可能有 IndexedDB 实用程序。您对 IndexedDB 所做的一切都必须由单个应用程序提供。 (这是除了没有 SQL 的事实之外。)您用 SQL.js 描述的问题通常不是 Chrome 应用程序的限制,所以我认为理论上可以有一个 SQL 数据库来更新其文件(s ) 更有效。
标签: javascript sql sqlite google-chrome-extension google-chrome-app