-
Notifications
You must be signed in to change notification settings - Fork 57
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[RFC] 设计一致性哈希 + 分布式的 Sqlite 方案替换掉 Mysql 服务 #232
Comments
低成本部署么 |
对,减少依赖,单库大表清理数据在 sqlite 下也比较方便,直接删除 db 文件就行了 |
一些前置调研: sqlite 的多 db 文件拆分后的联表查询思路: const sqlite3 = require('sqlite3').verbose();
// 创建数据库连接
const dbA = new sqlite3.Database('path/to/databaseA.sqlite');
const dbB = new sqlite3.Database('path/to/databaseB.sqlite');
// 执行关联查询
dbA.serialize(() => {
dbA.run('ATTACH DATABASE ? AS B', ['path/to/databaseB.sqlite'], (err) => {
if (err) {
console.error(err);
return;
}
dbA.all(`
SELECT *
FROM table1
JOIN B.table2 ON table1.column_name = B.table2.column_name;
`, (err, rows) => {
if (err) {
console.error(err);
return;
}
// 处理查询结果
console.log(rows);
// 关闭数据库连接
dbA.close();
dbB.close();
});
});
}); |
目前在分布式集群部署模式下的现存三方依赖有:
sqlite 这个方案相当于精简为两个依赖:
|
可以来个 cloudflare 的 sqlite 分享了 😊 |
看看能不能搞定这个方案 |
这个绝对是一个很大的进步.比如我的1G内存小鸡.就适合轻量级部署 |
是不是直接考虑单机单进程部署就行了? |
redis 和 oss 感觉更容易精简,前者用个 kv,后者用了 file,只要 plugin 把对应的接口抽象下是不是就行了? |
oss 的文件也可以直接存 sqlite 了。 |
这里的复杂点还要考虑下性能,sqlite 我在 LLM 这里尝试过读取超过 50G 的文件,加载速度会巨慢,所以得做一个去中心化的分布式节点 |
不是定时删除历史数据么?应该不会这么大? |
看实例数量的,一般公司不会这么大,比如我们自己 1d 数据都很大,你可以看看 xprofiler_logs 里面的 process_info 表长度 |
这个是单机场景吧,应该不会很大 |
考虑如下
尝试采用一致性哈希实现分布式 sqlite,彻底去除 Mysql 依赖
The text was updated successfully, but these errors were encountered: