RadonDB是开源的云原生MySQL数据库,用于构建全局的,可扩展的云服务
概观
RadonDB是一个开源的,云原生的MySQL数据库,可实现无限的可扩展性和性能。
什么是RadonDB?
RadonDB是基于MySQL的云原生数据库,并在完全分布式的集群中进行设计,可实现无限的可扩展性(横向扩展),容量和性能。它支持确保高数据一致性的分布式事务,并利用MySQL作为存储引擎来提高可信数据的可靠性。RadonDB与MySQL协议兼容,支持自动表分片以及批处理自动化功能,以简化维护和操作流程。
特征
- 自动分片
- 审核和记录
- 并行执行:并行查询,并行DML和并行DDL
- 并行CHECKSUM TABLE:提供与MySQL相同的结果
- 分布式事务:快照隔离
- 分布式联接:排序合并联接,嵌套循环联接
- 分布式全文本搜索
- 数据库的多Tenan
- 准备好的SQL语句
- JSON格式
文献资料
有关安装,部署和管理的指南,请参阅我们的文档。
建筑
总览
RadonDB是基于MySQL的新一代分布式关系数据库(MyNewSQL)。它旨在创建供开发人员使用的开源数据库:该数据库具有财务高可用性,大容量数据库,自动平面拆分表,可伸缩性和强一致性等功能,该指南着手详细说明内部-the过程的工作方式,作为一种解释手段。
SQL层
SQL支持
在SQL语法级别上,RadonDB与MySQL完全兼容。您可以在此处查看 RadonDB支持的所有SQL功能 radon_sql_support
SQL解析器,计划器,执行器
在您的SQL节点通过代理从mysql客户端接收到SQL请求之后,RadonDB解析该语句,创建查询计划,然后执行该计划。
+---------------+
x---------->|node1_Executor |
+--------------------+ x +---------------+
| SQL Node | x
|--------------------| x
+-------------+ | sqlparser | x +---------------+
| query |+----------->| |--x---------->|node2_Executor |
+-------------+ | Distributed Plan | x +---------------+
| | x
+--------------------+ x
x +---------------+
x---------->|node3_Executor |
+---------------+
Parsing
接收到的查询由sqlparser(描述了mysql支持的语法)进行解析,并生成抽象语法树(AST)。
Planning
借助AST,RadonDB通过生成一棵planNodes树开始计划查询的执行。此步骤还包括针对预期的AST表达式分析客户端的SQL语句的步骤,其中包括类型检查之类的内容。
您可以看到使用查询计划生成的内容EXPLAIN
(在此阶段,我们仅用于EXPLAIN
分析表分布)。
Excuting
与分布式执行计划并行地在存储层中执行执行器。
带事务的SQL
SQL节点是无状态的,但是为了保证事务处理Snapshot Isolation
,它目前是写多读模式。
交易层
Distributed transaction
RadonDB提供分布式事务处理功能。如果位于不同存储节点的分布式执行程序并且其中一个节点执行失败,则其余节点的操作将被回滚。这保证了跨节点操作的原子性,并使数据库处于一致状态。
Isolation Levels
RadonDB在一致性级别上达到了SI(快照隔离)级别。只要分布式事务尚未提交,或者如果某些分区已提交,则该操作对其他事务不可见。
Transaction with SQL Layer
SQL节点是无状态的,但是为了保证事务处理Snapshot Isolation
,它目前是写多读模式。
现场演示
问题
该集成GitHub的问题跟踪器 被用于此项目。
执照
RadonDB在GPLv3下发布。参见许可
开源地址:https://github.com/radondb/radon