【问题标题】:Nodejs persist a sqlite in-memory databaseNodejs 持久化一个 sqlite 内存数据库
【发布时间】:2016-10-17 10:06:10
【问题描述】:

我正在使用 nodejs sqlite 库 (https://github.com/mapbox/node-sqlite3)。如何将内存数据库持久化到磁盘?由于在 c/c++ 实现中有备份 api,我如何使用这个库在 nodejs 中持久化? (或与其他库/机制)

【问题讨论】:

  • 当你不想在内存中使用内存数据库时,为什么要使用它?
  • 出于性能原因,我想拥有一个内存数据库,并且我想每 x 分钟保存一次(在检查点中)

标签: node.js sqlite persist in-memory


【解决方案1】:

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

只需使用普通的磁盘数据库即可。 您可以使用 PRAGMA synchronous = OFF 使其与内存数据库一样不安全。

【讨论】:

    【解决方案2】:

    看起来node-sqlite3 现在支持备份 api(请参阅this test file)。不幸的是,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);
      });
    

    【讨论】:

      猜你喜欢
      • 2015-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-26
      • 2022-01-19
      • 2017-08-09
      • 1970-01-01
      • 2018-11-11
      相关资源
      最近更新 更多