开源的存储引擎--cantian

news2024/11/28 4:33:44

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容易接纳,产品就要推广了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2219124.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从一个事故中理解 Redis(几乎)所有知识点

作者:看破 一、简单回顾 事故回溯总结一句话: (1)因为大 KEY 调用量,随着白天自然流量趋势增长而增长,最终在业务高峰最高点期占满带宽使用 100%。   (2&#xff…

如何安装MySql

一.卸载MySql 1.1安装版 进入“控制面板”,将有关“mysql”的一切都删除,再到“C:\ProgramData”中,将“mysql”文件夹删除。 1.2压缩版 先在cmd中停止mysql服务 net stop mysql8 再删除解压“mysql”文件夹即可 二.安装MySql 2.2安装版…

RabbitMQ进阶_可靠性

文章目录 一、 发送者的可靠性1.1、 生产者重试机制1.2、 生产者确认机制1.2.1、确认机制理论1.2.2、确认机制实现1.2.2.1、定义ReturnCallback1.2.2.2、定义ConfirmCallback 二、 MQ的可靠性2.1、 数据持久化2.1.1、 交换机持久化2.1.2、 队列持久化2.1.3、 消息持久化 2.2、 …

端点物联网学习资源合集

端点物联网 学习资源合集 导航 1. 物联网实战--入门篇 文章链接 简介:物联网是一个包罗万象的行业和方向,知识碎片严重,本系列文章通过 边学边用 的思想,逐步建立学习者的信心和兴趣,从而进行更深入透彻的学习和探索…

IDEA如何用maven打包(界面和命令两种方式)

前言 我们在使用IDEA开发时,如果是springboot项目的话,一般是用maven来管理我们的依赖的。然后,当我们开发完成之后,就需要打包部署了。 那么,我们应该如何打包呢? 如何打包(jar包&#xff09…

scrapy案例——链家租房数据的爬取

案例需求: 1.使用scrapy爬虫技术爬取链家租房网站(成都租房信息_成都出租房源|房屋出租价格【成都贝壳租房】 )的数据(包括标题、价格和链接) 2.利用XPath进行数据解析 3.保存为本地json文件 分析: 请…

(AtCoder Beginner Contest 375)B - Traveling Takahashi Problem

(AtCoder Beginner Contest 375)B - Traveling Takahashi Problem 题目大意 按顺序给定n个点 ( x i , y i ) (x_i,y_i) (xi​,yi​) 求按顺序走过这n个点并回到原点的总距离 任意两点之间的距离是欧几里得距离 思路 按照题意模拟即可,时间…

GPTLink 源码快速搭建 ChatGPT 商用站点

GPTLink 源码快速搭建 ChatGPT 商用站点,基于PHP(Hyperf) Vue开发的,可以通过docker轻松部署,并且有一个支持PC和移动端的完美UI控制台。该项目提供了许多强大的功能,包括自定义付费套餐、一键导出对话、任务拉客和用户管理等等。…

NeRF三维重建—神经辐射场Neural Radiance Field(二)体渲染相关

NeRF三维重建—神经辐射场Neural Radiance Field(二)体渲染相关 粒子采集部分 粒子采集的部分我们可以理解为,在已知粒子的情况下,对图片进行渲染的一个正向的过程。 空间坐标(x,y,z)发射的光线通过相机模型成为图片上…

分布式篇(分布式事务)(持续更新迭代)

一、事务 1. 什么是事务 2. 事务目的 3. 事务的流程 4. 事务四大特性 原子性(Atomicity) 一致性(Consistency) 持久性(Durability) 隔离性(Isolation) 5. MySQL VS Oracle …

云黑系统全解无后门 +搭建教程

这套系统呢是玖逸之前南逸写的一套云黑系统,功能带有卡密生成和添加黑名单等,源码放在我的网盘里已经两年之久,由于玖逸现在已经跑路了所以现在发出来分享给大家,需要的可以自己拿去而开,反正功能也不是很多具体的自己…

免费字体二次贩卖;刮刮乐模拟器;小报童 | 生活周刊 #4

Raycast 的两款在线工具 Raycast 公司出品,必属精品,之前的代码转图片工具,交互和颜值都做得很漂亮 现在又新出了一个 图标制作器,一键制作美观好看的图标 猫啃网 没想到像【汇文明朝体】这样免费的字体都被人拿来当成【打字机字…

C# WinForm 用名字name字符串查找子控件

工作上遇到界面控件太多,需要对一些控件批量处理。虽然可以用代码批量控制,但要么是建立数组集合把所有要处理的控件放进去循环处理,要么是一个一个列出来修改属性。 但我大多数要求改的控件命名上是有规律的,所有只需要循环拼接字…

使用 MongoDB 构建 AI:利用实时客户数据优化产品生命周期

在《使用 MongoDB 构建 AI》系列博文中,我们看到越来越多的企业正在利用 AI 技术优化产品研发和用户支持流程。例如,我们介绍了以下案例: Ventecon 的 AI 助手帮助产品经理生成和优化新产品规范 Cognigy 的对话式 AI 帮助企业使用任意语言&a…

卸载 Git

目录 打开 Geek找到 Git右键卸载 Git卸载完成等待扫描注册表点击完成清除Git在本地的配置文件 打开 Geek 找到 Git 右键卸载 Git 卸载完成 等待扫描注册表 点击完成 已经删除完毕 清除Git在本地的配置文件 进入 C:\Users\用户名 删除框起来的配置文件 👇 源码资料…

【移动安全】OWASP MASTG 移动应用程序安全测试指南

OWASP 是 Open Web Application Security Project MASTG 是 Mobile Application Security Testing Guide 移动应用程序安全测试指南 英文网站:https://mas.owasp.org/MASTG/ 中文网站:http://www.owasp.org.cn/OWASP-CHINA/owasp-project/owasp-mobile-…

Docker本地镜像发布到Docker Registry私有仓库

1. 私有仓库 私有库可以部署在本地或私有云环境中,我们可以控制镜像的访问权限。相比公共仓库,私有库提供了更高的安全性和更快的访问速度。此外,私有库还支持自定义,你可以根据自己的需求来配置仓库。 私有仓库解决方案 Harbo…

递归神经网络解释(RNN)

Recurrent Neural Network (RNN) 如今,不同的机器学习技术用于处理不同类型的数据。最难处理和预测的数据类型之一是顺序数据。顺序数据与其他类型的数据不同,因为虽然可以假设典型数据集的所有特征都是与顺序无关的,但不能假设顺序数据集是无关的。为了处理这种类型的数据…

018_基于python+django荣誉证书管理系统2024_jytq9489

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍:CodeMentor毕业设计领航者、全网关注者30W群落,InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者,博客领航之星、开发者头条/腾讯云/AW…

【服务器部署】Docker部署小程序

一、下载Docker 安装之前,一定查看是否安装docker,如果有,卸载老版本 我是虚拟机装的Centos7,linux 3.10 内核,docker官方说至少3.8以上,建议3.10以上(ubuntu下要linux内核3.8以上&#xff0c…