gpt4 book ai didi

javascript - SQL.js(SQLite JavaScript 实现)可以立即自动写入磁盘吗?

转载 作者:IT王子 更新时间:2023-10-29 06:29:27 25 4
gpt4 key购买 nike

我正在对我的 Chrome 扩展(以及该扩展的打包应用程序变体)的想法进行原型(prototype)设计,小型、轻量级的 SQL 数据库(如 SQLite)将是理想的选择。然而,Chrome Apps cannot use Web SQL .

我一直在试验 SQL.js ,一个 SQLite 的 JavaScript 实现,但似乎我需要在我想保存的任何时候手动将整个数据库写入磁盘。这意味着如果我想在当前 session 后保留我的更改,则每次 SQL 写入(例如 UPDATE、INSERT、DELETE)之后都需要手动将整个数据库写入磁盘。正确的?我错过了什么吗?

这是我使用 SQL.js(或 SQLite 的任何其他 JavaScript 实现)的唯一选择吗?变化。

如果 SQLite 实现足够智能,只更新数据文件中实际发生变化的部分,那就更好了。因此,如果您有一个 20 兆的数据库,并且您执行了一个将位标志从 0 翻转为 1 的更新,它可以只更改那个位,而不必将整个 20 兆写入磁盘。

我知道 IndexedDB 是一个替代方案,我正在单独调查它。这个问题是关于我的 SQL.js/SQLite 选项的。我想确定我了解 SQLite 是否可以工作以及如何工作。

似乎确实有一个 Cordova-specific plugin that offers SQLite support ,但这在 Chrome 扩展程序和应用程序中不起作用(至少,在没有自定义的情况下)。

最佳答案

你可以试试Alasql JavaScript SQL 库。它具有本地存储和 IndexedDB 适配器,您可以在其中存储数据。

当 Alasql 立即将每个更改写入 localStorage 时,当前的本地存储适配器可以在 AUTOCOMMIT 模式下工作(参见 Local Storage Adapter 源代码)。

alasql('CREATE LOCALSTORAGE DATABASE MyBase; SET AUTOCOMMIT ON; \
INSERT INTO MyBase.cite VALUES ("Paris","France")");

如果您需要更具体的要求,可以很容易地根据您的需要重写此适配器。

关于javascript - SQL.js(SQLite JavaScript 实现)可以立即自动写入磁盘吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25328972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com