This repository has been archived by the owner on Aug 15, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 75
数据库添加新后端 #405
Labels
Comments
|
因为 docker 和 bot 开机启动有一个依赖关系,所以当使用 mongo 时, bot 连接数据库失败后不应该放弃,而是不断轮询直到成功。 |
只是为了性能的话mongodb应该还不如sqlite |
为啥呢 |
// const { MongoClient } = require('mongodb');
// or as an es module:
import { MongoClient } from "mongodb";
// Connection URL
const url = "mongodb://adachi:adachi@127.0.0.1:9933";
const client = new MongoClient(url);
// Database Name
const dbName = "adachi";
async function main() {
// Use connect method to connect to the server
await client.connect();
console.log("Connected successfully to server");
const db = client.db(dbName);
const collection = db.collection("documents");
// the following code examples can be pasted here...
const insertResult = await collection.insertMany([{ a: 1 }, { a: 2 }, { a: 3 }]);
console.log("Inserted documents =>", insertResult);
const findResult = await collection.find({}).toArray();
console.log("Found documents =>", findResult);
const filteredDocs = await collection.find({ a: 3 }).toArray();
console.log("Found documents filtered by { a: 3 } =>", filteredDocs);
const updateResult = await collection.updateOne({ a: 3 }, { $set: { b: 1 } });
console.log("Updated documents =>", updateResult);
const deleteResult = await collection.deleteMany({ a: 3 });
console.log("Deleted documents =>", deleteResult);
const indexName = await collection.createIndex({ a: 1 });
console.log("index name =", indexName);
return "done.";
}
main()
.then(console.log)
.catch(console.error)
.finally(() => client.close());
|
实际上 mongo 部署起来仍然很方便,我有点犹豫要不要留着 lowdb 了, lowdb 唯一的意义就在于 windows 上部署方便了 |
Closed
MongoDB 大致调了一下,测试数据已经调通,不过两个数据库同步数据没有调通,但是我意识到 MongoDB NodeJS Driver 不支持同步方法后,觉得使用 MongoDB 带来的好处无法平衡代码改动带来的影响。我尝试使用 DeAsync.js,但是马上意识到这不是一个好主意。这个功能将停止开发, #485 将替代此功能。 |
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
问题描述
目前 lowdb 的性能问题实在是太严重了,在我实现了数据库定时清理后,因为数据库不会再无限制增长了而稍微掩盖了一下这个问题,但是在一个极大量用户的 bot 中,lowdb 根本无法胜任。我的想法是增加一个新的、非关系型的后端,然后两个后端可以使用 setting.yml 中的配置选项进行切换(暂时不考虑数据同步,或者使用在 tools 下的脚本进行同步),默认使用 lowdb 。我无法割舍 lowdb 能够极大简化 bot 部署步骤的优点,但是也无法忍受 lowdb 在并发场景中的低效。
对于新后端的要求,我的想法是编程上尽可能的易于实现,能够用最小的代码量把当前的 database.js 迁移过去,最终能够让调用者无感。目前我只是有一个想法,还没有去仔细想怎么做这件事。当前我比较倾向于 MongoDB 。
这可能是一个长期的工作,或许要花费数周甚至更长的时间。
代码状态:当前提交
f27b71b
The text was updated successfully, but these errors were encountered: