我正在为Chrome扩展(以及该扩展的打包应用变体)提供一个原型,而像SQLite这样的小型轻量级的SQL数据库将是理想的选择。然而,Chrome应用程序不能使用Web.
我一直在试验SQL.js,这是SQLite的一个JavaScript实现,但似乎我需要随时将整个数据库手动写入磁盘。这意味着,如果我想将更改保存到当前会话之后,每一次SQL写入(例如,UPDATE、INSERT、DELETE)之后都需要手动将整个数据库写入磁盘。对,是这样?我是不是遗漏了什么?
是我使用SQL.js (或任何其他JavaScript实现SQLite)的唯一选项吗?,如果数据在数据发生变化时自动写入磁盘,则会容易得多。
更好的情况是,如果SQLite实现足够智能,只更新数据文件中实际更改的部分。因此,如果您有一个20 meg数据库,并且执行了一个从0到1的位标志翻转的更新,那么它就可以更改这一点,而不必将整个20 megs写到磁盘上。
我知道IndexedDB是另一种选择,我正在分别对它进行调查。这个问题与我的SQL.js/SQLite选项有关。我想确定我是否理解,以及如何让SQLite工作。
确实有一个Cordova特有的插件,提供SQLite支持,但在ChromeExtension&Apps中,这是行不通的(至少在没有定制的情况下)。
发布于 2014-12-20 17:22:30
您可以尝试阿拉斯克尔 JavaScript SQL库。它有本地存储和IndexedDB适配器,您可以在这里存储数据。
当Alasql立即将所有更改写入localStorage时,当前本地存储适配器可以在AUTOCOMMIT模式下工作(参见本地存储适配器源代码)。
alasql('CREATE LOCALSTORAGE DATABASE MyBase; SET AUTOCOMMIT ON; \
INSERT INTO MyBase.cite VALUES ("Paris","France")");如果您需要更具体的需求,那么很容易根据您的需要重写这个适配器。
https://stackoverflow.com/questions/25328972
复制相似问题