开源的存储引擎--cantian

cantian

上次稼先社会活动之后,在北京签售的时候见到了三位参天的核心人物。我有感于他们的热情、务实和坦诚,我觉得还应该在深入的做一些事情。至少可以安装体验一下,做做推广。毕竟现在务实的产品不多了,很多都是浮躁的宣传。为了踏实做事的产品和人做一些宣传。

在华为的产品中有这么一款特殊的产品,大家看了以后都会觉得这是数据库呀,但是这个产品算是在存储产品线的。开始我也不理解,后面我会解释为什么会这样。

华为对自己的产品命名都是宏大的,比如鲲鹏、鸿蒙,我今天说的这个是参天。由于现在开源了,不仅仅是华为的了。不过对外这个团队都是这样写的,cantian还是很低调的。我个人还是喜欢低调的,因为能接受意见。

cantian正式介绍

刚才我们提到说这个产品算存储这边的。不知道的人会问为什么这样算?结合他们在gitee上的描述:

Cantian引擎,是一个存储引擎,采用了存算分的离架构,通过分布式缓存技术、事务MVCC机制、多主集群高可用等关键技术,可以让使能普通的单机数据库,让其变得具有类似Oracle RAC的多读多写能力。Cantian引擎无需修改已有数据库的实现,可以以无侵入的方式被MySQL等数据库加载运行。类似Oracle RAC,Cantian引擎的多读多写,也需要基于共享存储来构建。任何能够提供共享存储并可以提供标准文件接口的存储系统都可以进行对接测试。

既然如此是一个存储引擎,那么算在存储上也顺理成章了。其他的一些话术我不在这里引用了。最后说一点就是他实现了RAC的架构。其实在数据库中主从架构也算是HA,但是这种是一写多读。而RAC的能做到多谢多读。对于MySQL来说虽然MGR也是可以做到多写多读的,但是普遍大家都觉得单主模式靠谱一点。所以如果想基于MySQL的多谢多读,怎么办?cantian就在存储引擎上做文章,共享存储来实现。虽然我没有实地安装过,但是从朋友那里看到安装好以后得存储引擎是这样的。

也就是说和innodb没有关系了。纯自己的引擎。熟悉MySQL的朋友会知道搞懂了innodb基本就搞懂了一半MySQL。因为主体就是innodb存储引擎(当然也有其他引擎,只是innodb是重心),那么这里cantian没有跟随官方的路线,而是自己另起炉灶。这个角度很别致啊。

cantian的源码地址

https://gitee.com/openeuler/cantian

在往下看的时候,看到这个有点震惊。

步骤确实惊人。

安装过MySQL的人都知道。一条命令就按照完成了。我给别人上课时候MGR也就5分钟解决。从某种意义上来说这个作为MySQL的RAC显然复杂了很多。我仅仅看这个步骤就不是30分钟可以解决的。

那说到这里可能会说,既然那么麻烦为什么还要做RAC这样的多读多写?答案就是有需要。

多读多写一方面可能承载更多的业务请求,另外一方面对于高可用有更好的体验。数据库这种有状态的产品和中间件这种无状态的产品不一样。中间件没有ACID的要求,重启切换都可以,甚至在容器中都可以。但是数据库会涉及到不同节点的数据不一样。在一致性要求下,性能就要做妥协。反之,要求性能的极致,那么一致性就要有些妥协。而RAC下就解决了分布式下的一致性的。所以有不少企业也在这个上面去研究。

Oracle体系复杂,MySQL体系相对简单。所以Oracle的RAC会麻烦很多。MySQL的MGR约等于MySQL的RAC+ADG,这里说的是约等于。而参天这种架构就是能在MySQL的下层做文章实现了MySQL兼容下的RAC架构。这意味着既有了MySQL的分布式,也能解决一致性问题。由于RAC架构的高可用容灾特性,那么即使一个节点宕机,对应用无感知可以继续使用。无需人工介入干预,这对当下不少追求业务连续性的企业来说是很友好的。

这一切是源于cantian的共享存储。其实在阿里和腾讯的部分产品介绍中也看到过类似的解决方案。只是他们是共享存储上面建立的读写分离。这样数据无需从写节点同步到读节点。而cantian是共享存储上多读多写,和Oracle的RAC的模式很像。这里无需数据同步到其他节点也是非常有意义的。数据库中大事务对数据同步及其不友好,DDL也一样。但是在共享存储下,这些都不是问题。数据是集中统一的。

在cantian这种下,原有的使用MySQL的用户可以体验高可用。也可以说使用A节点写,B节点读,沿袭自己从前的使用也可以,不同的是没有MySQL主从延迟。

不少数据库的安装是一座山

过去几年中,有一次技术大会,盖总在墨天轮的问题统计中发现,使用Oracle数据库最大的问题是来自于安装。而不是运行时候的问题。安装问题占到总问题的58%的比例。所以可以得出Oracle的安装是有难度的。这一点我深信不疑。刚工作时候在windows上安装过Oracle。后来尝试在Linux上安装,确实麻烦。可能在2010年以前,谁在Linux上安装好,就是高手了。现如今没那么难了,但是比起MySQL和Redis、PG这些来说还是难一点。

基于以上的情况--我要提建设性意见(吐槽)了

我不确定我能安装好,看了总监写了一篇以后,我更加确定我应该安装不好。劝退概率太大了。比如MySQL官网上有对不同操作系统平台,不同操作系统版本,不同CPU架构的不同的版本。用户可以直接下载(当然非要源码编译也行)而大部分人都希望是拿来rpm安装或者解压配置环境变量就可以使用。第一个建议:给个不同环境下的成品。

既然存储引擎,那么我们就那其他存储引擎对比。PG和MySQL的存储引擎基本上都是插件形式,我说的插件是执行一个install就完成的这样形式。本身RAC这种存算分离会涉及到网络等其他的。这些周边不得已要去花精力没办法,但是数据库和存储上别再给DBA加戏了。可以考虑心疼DBA一下。

我想起我第一家公司的时候,有一些产品,安装手册600页。一包打印纸都不够。为什么?除了使用说明,安装是也是一个问题。比如安装完成以后,找到DLL目录,用U盘中的相应的DLL文件去替换。我当时就想,这就不能把最新(正确的)动态链接库做进去吗?如果安装完QQ,每次也去替换DLL或者exe,那QQ使用者能有10万都算多的。

我后来反思,我是把Oracle从上传安装包后,都可以做到一键安装或者分解了几个shell,依次执行或者串联执行。这样使用者能快速部署。如果大家看过总监写的深入浅出cantian,你们就会觉得我这些建议绝对是良心建议了。

在写这些的过程中也和cantian的核心人员交流过。他们的宽容和大度也让我感动。国内有些厂家是听不进去意义,不能说不好。而cantian的团队说:"你们提的很好!","都是很有意义的反馈","准备研发后续优化了"。

将来等优化过后,再和现在的比较一下。我估计会有惊人的改变,那样的话,我非常荣幸的见证了历史。

不少数据库产品都会提到四个字:安稳易用。可见易用是一个重点,也是卖点。先搞定DBA,让DBA容易接纳,产品就要推广了。

相关推荐
清酒伴风(面试准备中......)5 分钟前
小白学编程之——数据库如何性能优化
数据库·oracle·性能优化
The Future is mine32 分钟前
SQL Server中delete table和truncate table删除全表数据哪个快?
数据库
瀚高PG实验室39 分钟前
HGDB插入超长字段报错指示列名的问题处理
数据库
好吃的肘子1 小时前
MongoDB 高可用复制集架构
数据库·mongodb·架构
兮兮能吃能睡1 小时前
Python之with语句
数据库·python
不穿铠甲的穿山甲2 小时前
MySQL-数据库分布式XA事务
数据库·分布式·mysql
Hadoop_Liang2 小时前
解决Mawell1.29.2启动SQLException: You have an error in your SQL syntax问题
大数据·数据库·maxwell
码上飞扬2 小时前
MongoDB数据库深度解析:架构、特性与应用场景
数据库·mongodb·架构
飞天红猪侠c2 小时前
MySQL-逻辑架构
数据库·mysql
文牧之3 小时前
AutoVACUUM (PostgreSQL) 与 DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC (Oracle) 对比
运维·数据库·postgresql·oracle