Nodejs 持久化一个 sqlite 内存数据库

Nodejs persist a sqlite in-memory database

我正在使用 nodejs sqlite 库 (https://github.com/mapbox/node-sqlite3)。如何将内存数据库持久保存到磁盘?因为在 c/c++ 实现中有备份 api 我怎么能用这个库在 nodejs 中坚持? (或与另一个 library/mechanism)

Using the backup API 是唯一的方法。 而 Node.js 没有实现这个 API.

只需使用普通的磁盘数据库即可。 您可以使用 PRAGMA synchronous = OFF.

使其与内存数据库一样不安全

好像node-sqlite3 now supports the backup api (see this test file). Unfortunately, the API Documentation从2017年就没有更新了,所以很容易漏掉。

看起来最简单的方法是:

        var backup = db.backup('test/tmp/backup.db');
        backup.step(-1, function(err) {
            if (err) throw err;
            backup.finish(function(err) {
                if (err) throw err;
                // It finished!
            });
        });

注意:这些天我推荐better-sqlite3

而 better-sqlite3 有 documentation for its backup api!

就这么简单

db.backup(`my-backup.db`)
  .then(() => {
    console.log('backup complete!');
  })
  .catch((err) => {
    console.log('backup failed:', err);
  });