有没有人在生产用过 sqlite+nas 分布式存储的?

2024-09-03 09:34:27 +08:00
 chen0520

数据库访问量不算大,甲方要求如果用数据库只能用特定的国产数据库,我网上搜了一下几乎没啥介绍,所以就想能不能直接不通过实体的数据库,目前我能想到的方案就这个,我主要担心瞬时的的简单并发会不会有问题,有人有相关经验吗

3531 次点击
所在节点    Go 编程语言
32 条回复
BG7ZAG
2024-09-03 09:40:01 +08:00
国产数据库不是一堆吗?都是基于 postgresql 的,腾讯的 TDSQL ,阿里 PolarDB ,华为的 openGauss...
chen0520
2024-09-03 09:42:18 +08:00
@BG7ZAG 特定的,我问了下这些都不能用
Jinnrry
2024-09-03 09:44:39 +08:00
啊? SQLite 不也是数据库吗?而且目测也不在你特定数据库里面
pota
2024-09-03 09:45:06 +08:00
sqlite 本身问题不大,还是要看并发量
qW7bo2FbzbC0
2024-09-03 09:47:42 +08:00
那些能用就用呗,实在不行用 redis 实现
oswinw
2024-09-03 10:09:20 +08:00
并发不大就问题不大
mightybruce
2024-09-03 10:24:15 +08:00
甲方说什么就是什么, 都限定了信创数据库,那就用起来,其他数据库根本不会给你过审的。
joyoyao
2024-09-03 10:25:11 +08:00
访问量不大可以的,sqlite 小项目用的人还是很多的。nas 分布式存储是啥,nfs 吗?
mightybruce
2024-09-03 10:28:51 +08:00
sqlite 也是数据库,只不过是可以嵌入程序运行的数据库,像这样的嵌入式数据库有 SQLite, RocksDB, and DuckDB, 多尝试尝试
ConfusedBiscuit
2024-09-03 10:29:09 +08:00
我猜 OP 的主要疑问是,如果放在 NAS 等共享存储里,多个 sqlite 实例同时访问同一个数据库文件,会不会有问题。说实话,我也没这么用过,但是听起来有点儿危险。不知道有没有 sqlite 大佬能解答。

还有,我也同意楼上大家的看法,要求用什么数据库就用什么数据库,做好数据层抽象,未来想换什么数据库都不太麻烦。
mightybruce
2024-09-03 10:32:40 +08:00
题外话,sqlite 不适合独立出来做数据服务器,适合嵌入在程序中, 这种就算用 sqlite 需要魔改,当然市面上已经有了这种魔改 sqlite 作为数据库引擎的高性能分布式数据库 (bloomberg 出的 comdb2)
https://github.com/bloomberg/comdb2
wwd179
2024-09-03 10:32:54 +08:00
并发写 sqlite 文件的时候,有写锁吧。性能估计很差。
chen0520
2024-09-03 11:02:29 +08:00
@ConfusedBiscuit 没有指定,可以不用,只是用实体数据库的话只能用这一种
meeop
2024-09-03 11:06:50 +08:00
性能没问题,只是你需要自己处理并发访问,数据备份等逻辑
chen0520
2024-09-03 11:09:41 +08:00
@joyoyao 是的,基于 k8s pv 挂上去
chen0520
2024-09-03 11:10:18 +08:00
@meeop 你的意思并发写的话要有实现分布式锁的逻辑?
mightybruce
2024-09-03 11:36:06 +08:00
建议别尝试了, 通过修改 sqlite 数据库文件同步到共享存储的方式的方式是错误的,不要研究了,
另外出了问题你也搞不定,sqlite 是不存在跨机操作数据文件的方式的,sqlite 对数据文件的保护的确是操作系统的文件锁,
另外 nas 这种共享存储 不适合关键的数据库主备。

我也只见过 mysql, oracle 数据库搞这种共享存储的数据库集群的成熟方案,sqlite 别搞。

1.基于共享存储的方案 SAN
方案介绍:SAN(Storage Area Network)简单点说就是可以实现网络中不同服务器的数据共享,共享存储能够为数据库服务器和存储解耦。使用共享存储时,服务器能够正常挂载文件系统并操作,如果服务器挂了,备用服务器可以挂载相同的文件系统,执行需要的恢复操作,然后启动 MySQL 。

2.基于磁盘复制的方案 DRBD
方案介绍:DRBD(Distributed Replicated Block Device)是一种磁盘复制技术,可以获得和 SAN 类似的效果。DBRD 是一个以 linux 内核模块方式实现的块级别同步复制技术。它通过网卡将主服务器的每个块复制到另外一个服务器块设备上,并在主设备提交块之前记录下来。DRBD 与 SAN 类似,也是有一个热备机器,开始提供服务时会使用和故障机器相同的数据,只不过 DRBD 的数据是复制存储,不是共享存储。

其他方式是通过网络 IO 的主从之类的方案
onichandame
2024-09-03 11:46:11 +08:00
不让用数据库就 json 文件一把梭。sqlite 设计只应对单线程程序访问,放共享存储中也只能同时给一个进程使用
chen0520
2024-09-03 11:46:14 +08:00
@mightybruce 好的,感谢大佬,码了这么多字
body007
2024-09-03 11:52:01 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1069791

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX