c 写数据mysql数据库_用纯C,写一个类mysql存储引擎,难度有多大?

首先题主说法有点问题,mysql不是存储引擎,mysql是一个数据库应用。

mysql的存储引擎有4种:

MyISAM:最早的mysql存储引擎,简单快速,不支持事务,数据限制也较多。

InnoDB:在线事务处理的主力存储引擎,支持事务,目前mysql的默认引擎。

memory:说白了就是内存数据库,更加简单快速,不支持任何数据库高级特性。

Archive:只允许写入的存储引擎,速度快,并发性能好。

如果你是说要C实现一个mysql数据库功能,最简单可用的应该是sqlite。SQLite​www.sqlite.orgd6b2f17f7754e125c6fe9421bf110cfa.png

然后说难度

难度还是挺高的,原因有几个

首先你要非常熟悉数据结构,设计和支持各种数据类型,定长的变长的和超长的。这就是挺高的要求了。让一个逻辑结构以标准格式写入文件本身就很麻烦。

还有字符集问题,这个很麻烦,标准也多,目前主流utf8多一些,但是utf8也有细分问题,需要你小心处理,否则会严重影响数据库字符串查询和操作的功能。

要在保证数据可靠存储前提下实现事务本身就挺麻烦。单线程模式下已经简单很多了,这需要你对计算机IO工作机制非常了解。要是多线程的那就是太复杂了。当然,如果你完全不在乎任何性能也可以用最简单粗暴的方式实现。

然后你要实现常用的几种索引建立,同步,存储,btree,hash起码要实现吧,需要有扎实的数据结构基础。

再就是就是SQL解释,语法分析,需要你对有编译原理基础。

最后就是优化,是最难的,如何更快执行,更快得到结果,更准确进行语法解析,更节省硬件资源,更可靠,支持更多特性。。。

基本上如果你能独立搞下来一个类似SQLite功能和性能的数据库,不说大牛,你也是C语言牛,搞别的编程也肯定是牛了,大部分程序员都要给跪了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值