为什么我们不用 git 当数据库呢?

2022-11-22 16:47:19 +08:00
 andyJado

一行 sql 也没写过不知道为啥要用这玩意 blob tree grep awk 各种 pipe 倒是一点不怵 我感受不到任何 crud 比 git 更好用的(个人感受 github 就是拿 git 当数据库的, 对吧?(摆事实

11590 次点击
所在节点    程序员
101 条回复
kkwa56188
2022-11-22 22:18:43 +08:00
虽然 kv nosql 也可以叫数据库, 但正儿八经的数据库 是 关系数据库.
去 leetcode 里, 做完 三道简单的 "数据库" 的题目, 先.
wxf666
2022-11-22 22:31:12 +08:00
@andyJado

以及,怎么确保『用户消费货币 和 用户发帖 /回复』同时发生或不发生?(防止突然断电、程序突然崩溃等)

这些都是最最最基础的数据库功能,连 1MB 的 SQLite 都能轻易实现


可能数据量太大(而且没有数据),你不好练习

可以去搜索一下『 SQL 经典 50 题』,一些基于『十来行学生、课程、教师、成绩数据』的各种查询,看看怎么用 Git 实现?
8zip
2022-11-22 22:48:01 +08:00
Json 也能当数据库的,csv 甚至 txt 也行
jim9606
2022-11-22 22:49:54 +08:00
你确实可以把 git 当数据库用,如果你了解 git 的底层实现,你就知道它底层其实就是一个 kv 数据库。
但是,如果你真的只是需要一个 kv 数据库而不需要 git 针对版本管理做的业务封装,一般都会有更好的选择。

真有点复杂度的业务不会纯拿 bash 和 coreutils 来写,因为数据处理和错误处理太蛋疼了,换成 python 都会省事些。但在业务不复杂的时候,shell 的低耦合易部署的好处就比较重要了。

你现在觉得 sql 没用,是因为你还没遇到达到那种复杂度的需求。
mikewang
2022-11-22 22:56:01 +08:00
这句话本身就有问题,就好比问“为什么我们不把牙医当作医生”一样(举个例子)。
因为牙医本身就是医生;而 Git 的核心本身也就是一个数据库。

数据库的范围可能比你想象的要大:即使你想“不用数据库”以文件存储处理数据,然而整个文件系统它也是一个数据库。

同样地,你不能把牙医当全科医生对待,也不能将 Git 当一般数据库用。不是没有可能,而是各有各的擅长之处。
Tink
2022-11-22 23:05:16 +08:00
为什么不用 excel 当数据库
DeWjjj
2022-11-22 23:06:37 +08:00
以前有文本流的,但是一旦东西多了必须上数据库。
不然数据的问题,会卡死你。
adoal
2022-11-23 00:01:37 +08:00
因为你构想出来的用 git 当数据库的场景都很简单。当业务需要复杂的查询和复杂的写入事务,你要给简单操作加上各种一致性约束和保障,加上各种索引,做各种在简单场景下可能是负面操作但复杂场景下反而是优化的设计,最后大概率重新发明关系数据库。
adoal
2022-11-23 00:06:30 +08:00
Unix pipe 串起来各种神操作,对于流式数据处理很好用。但在数据量大时,如果需要中途“倒车”,需要各种分组聚合,就麻烦大了。
adoal
2022-11-23 00:07:32 +08:00
按 V2 以前常看到劝人找个正经工作上班的说法……你先找个正经数据库作业做一遍看看呗。
msg7086
2022-11-23 02:04:42 +08:00
git 本来就是一个数据库。再往前,svn 也是一个数据库。再往下,文件系统也是一个数据库。但是你跑业务可不只是要一个数据库。你平时用的是 rdbms ,关系型数据库,是表格型的,而且要符合 acid ,而且对数据完整性,并发性,查询速度以及读写性能都有很高的要求,git 这速度已经很慢了。你会主动选一个比 MySQL 慢 100 倍的数据库吗?
chengxiao
2022-11-23 04:49:33 +08:00
我是受够了 拿 Github 当数据库的人了,一大堆人拿日记,小说往里灌内容,导致 github 的中文搜素,全是垃圾
ALXG
2022-11-23 07:12:34 +08:00
字符的信息熵太低了, 比不了二进制. 用来检索倒是不错.
xFrye
2022-11-23 10:10:44 +08:00
纸和笔也能记录数据,拿他当数据库也不错,对吧
msaionyc
2022-11-23 10:18:32 +08:00
理论上来说,txt 也可以当数据库的
2han9wen71an
2022-11-23 10:26:39 +08:00
@qistchan 我们就是用 svn 当数据存储,不过还是有数据库(当做缓存?),用于加快系统访问速度
mingxulin
2022-11-23 10:30:41 +08:00
gerrit 的 notedb 就是基于 git 的
xaplux
2022-11-23 10:39:10 +08:00
想象了一下你用牙签喝粥的样子
ljrdxs
2022-11-23 10:53:26 +08:00
@andyJado 告诉你答案了。先入门关系型数据库,然后就懂了。
如果你甚至看不出那是回答,你真要考虑转行。
southsala
2022-11-23 10:56:53 +08:00
广义上讲,文件系统也算数据库。但是你这个比较法太 low ,一时不知道该怎么喷了

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

https://ex.noerr.eu.org/t/897127

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

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

© 2021 V2EX