你能自己撸一个数据库吗?

2017-05-24 23:48:45 +08:00
 flowyi
作为一个程序员,特别是后端程序员,应该或多或少与数据库产生联系吧。
那你有考虑过数据库是怎么实现的吗?如果让你一个人实现一个某个领域的数据库( RMDB,Full Text Search,NoSQL,k-v,Data Warehouse, Time-series, etc.),并跑在你公司的某个生产业务上。

a. 你觉得能完成吗?
b. 预计用多久?
c. 为毛?
d. 你的相关学习,工作经历是如何 能 /(不能)支撑你完成这个任务的?

这是个很严肃的问题,可以随意扯蛋。
10781 次点击
所在节点    程序员
60 条回复
fyyz
2017-05-25 08:33:48 +08:00
这玩意非常难,起码要写一个 sql 编译器,设计一个二进制数据库文件。如果不满足于基本的增删改查,要写一套事务系统,那难度就更大了。这些还是小问题,最难的是,这些东西尽量要避免出错,甚至对 bug 零容忍。否则一个小 bug 把数据库文件弄坏了,那怎么搞?
firefox12
2017-05-25 08:35:48 +08:00
读完 sqlit 写一个出来 半年差不多
svenFeng
2017-05-25 08:41:46 +08:00
写一个 rdbms 不难,但是要用于生产环境。。。太难了,全都是坑
svenFeng
2017-05-25 08:48:20 +08:00
如果 kv 引擎、NoSQL,那还好,看一下开源的源码写出来一个至少自己用的感觉是没问题的,时间不清楚,最近打算写一个
shakoon
2017-05-25 08:56:04 +08:00
这问题就像是:你有驾照吗?哦,老司机了啊,那你多久能造出一辆能上路的车来?
flowyi
2017-05-25 09:09:50 +08:00
@liuhaotian 哈哈 你看出来我写错了
liuhaotian
2017-05-25 09:21:15 +08:00
@flowyi 啊..难道你要实现的不是一个 DBMS 吗.. 他的描述好像是业务?
loadinger
2017-05-25 09:23:44 +08:00
哈哈. 有人说什么什么简单, 2 3 天就搞定的.... 我只想说:放你玛的血....
daysv
2017-05-25 09:27:42 +08:00
我是来看各路大神显神通的
xiaoqi
2017-05-25 09:29:18 +08:00
不撸,营养跟不上~
QQ2171775959
2017-05-25 09:29:28 +08:00
你们说的也太笼统了,没有一个具体的指标,没有什么好参考的,随便哪一块小的项目都有可能要你花上大半年时间都说不定。
jhaohai
2017-05-25 09:30:30 +08:00
撸一个简单的很快,但是要对标 oracle、db2 之类的就呵呵了
liprais
2017-05-25 09:33:45 +08:00
不可能的,光把 sql 这一块做到能用就一个人不可能
cjyang1128
2017-05-25 09:45:57 +08:00
我们学校数据库原理课的大程就是撸一个数据库,当然不是一个人,是一个小组。主要有词法分析,b 树索引,数据存储并且包括 GUI,当时打酱油做了最简单的存储=-=,索引层是最难的。也有大神当年是一个人搞定的。。。惊为天人!
junzki
2017-05-25 09:54:54 +08:00
有一个东西叫 SSDB,就是一个人山寨了 Redis (作者自己说的)搞出来的东西。
qianguozheng
2017-05-25 09:59:28 +08:00
你这么一说,我觉得还是可以做的。
初期不考虑各种 benchmark, 比如想要实现内存数据库,类似 redis, 可以申请一个内存池,然后构建红黑数来存储数据结构,反正是 kv, 然后呢再搞个 cli 接口支持增删改查, 是不是一个简单的数据库就完成了?
murmur
2017-05-25 10:02:28 +08:00
小的比不上 sqlite 大的比不上 mysql 所以我做他干嘛
likuku
2017-05-25 10:07:21 +08:00
数据库目前是商业软件的品质上远胜于开源软件的领域。
flowyi
2017-05-25 10:08:21 +08:00
@qianguozheng 这也太简单了……

以前提到数据库,一般就专指 DBMS。现在各种特定领域的存储、查询系统也被笼统的归类到数据库里面,所以还真的很难界定。
qianguozheng
2017-05-25 10:27:05 +08:00
@flowyi 再复杂的系统也是基于这种简单的架构来做的吧。

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

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

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

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

© 2021 V2EX