淘先锋技术网

首页 1 2 3 4 5 6 7
写一个类mysql存储引擎?

要看你实现的是mysql的哪个存储引擎,一般的存储引擎难度不是很大,而带有事务的存储引擎会比较麻烦一点,会涉及到锁的粒度问题。

介绍

mysql是一个关系型的数据库,一般在项目早期或者中小型的服务端用的比较多,而且是开源免费使用的。

纯C语言,写任何软件,都需要开发者有很强的造轮子的功底,对数据结构和算法非常精通才可以,以及数据结构之间的组合关系非常熟练,不会因为多层指针而被绕晕。

目前mysql服务端主要使用的是C语言开发,分为四层:连接层、服务层、引擎层和存储层。而引擎层是可以由第三方实现的,像国内的阿里就在引擎层做了匹配业务的实现。

存储引擎是数据库底层软件组织,通过使用数据引擎进行创建、查询、更新和删除数据。

不同的存储引擎提供不同的存储机制、索引技巧、锁定级别等功能,使用不同的存储引擎,还可以 获得特定的功能。

现在许多不同的数据库都支持多种不同的数据引擎。

了解mysql的引擎层

查看mysql的存储引擎,使用命令:show engines。

查看mysql默认使用的存储引擎,使用命令:show variables like '%storage_engine%'。

我们比较常见的mysql的存储引擎有MyISAM和InnoDB,一个是非事务型的代表,一个是事务型的代表,不过现在的InnoDB的性能已经非常接近MyISAM了,大家可以直接默认都使用InnoDB。

存储引擎开发准备工作

知己知彼,方能百战不殆。

学好C语言的数据结构和算法,数组、栈、队列、链表、二叉树、红黑树、B+树、Hash算法、基本排序算法等等,熟练掌握并融汇贯通。熟练掌握一些基本的三方C语言库,如openssl、regex等还需要学会使用工具,CMake、Gcc、Git等付出与回报

我们做的任何事情,都需要事先了解付出和收获比,如果你浪费了一生的时间,做了一个无人问津的产品出来,在迟暮之年回首往事,定然会痛彻心扉。

但是凡事有弊都有利,通过实现数据库的存储引擎,可以学会很多C语言开发的技巧,专研了各种数据结构和算法,这对未来成为大牛级别的人物,是非常棒的一个事情。

案例分析

如果你准备进入大厂,如企鹅、阿里、字节跳动、网易和百度等公司,那么学习怎么写存储引擎是非常值得的。

如果你对上面所述的知识,都已经学的很好了,那么至少是P8级别的。

总结

写一个存储引擎的难度,总体是比较大的,但却是一个非常好的挑战,无论最后成功或者失败,你都是最大的赢家。

如果你对技术也有追求,对现实迷茫,请关注我,暗黑程序员。