首先题主说法有点问题,mysql不是存储引擎,mysql是一个数据库应用。
mysql的存储引擎有4种:
MyISAM:最早的mysql存储引擎,简单快速,不支持事务,数据限制也较多。
InnoDB:在线事务处理的主力存储引擎,支持事务,目前mysql的默认引擎。
memory:说白了就是内存数据库,更加简单快速,不支持任何数据库高级特性。
Archive:只允许写入的存储引擎,速度快,并发性能好。
如果你是说要C实现一个mysql数据库功能,最简单可用的应该是sqlite。SQLitewww.sqlite.org
然后说难度
难度还是挺高的,原因有几个
首先你要非常熟悉数据结构,设计和支持各种数据类型,定长的变长的和超长的。这就是挺高的要求了。让一个逻辑结构以标准格式写入文件本身就很麻烦。
还有字符集问题,这个很麻烦,标准也多,目前主流utf8多一些,但是utf8也有细分问题,需要你小心处理,否则会严重影响数据库字符串查询和操作的功能。
要在保证数据可靠存储前提下实现事务本身就挺麻烦。单线程模式下已经简单很多了,这需要你对计算机IO工作机制非常了解。要是多线程的那就是太复杂了。当然,如果你完全不在乎任何性能也可以用最简单粗暴的方式实现。
然后你要实现常用的几种索引建立,同步,存储,btree,hash起码要实现吧,需要有扎实的数据结构基础。
再就是就是SQL解释,语法分析,需要你对有编译原理基础。
最后就是优化,是最难的,如何更快执行,更快得到结果,更准确进行语法解析,更节省硬件资源,更可靠,支持更多特性。。。
基本上如果你能独立搞下来一个类似SQLite功能和性能的数据库,不说大牛,你也是C语言牛,搞别的编程也肯定是牛了,大部分程序员都要给跪了。