-
Notifications
You must be signed in to change notification settings - Fork 479
[简介]软件介绍
lightfish edited this page Dec 9, 2020
·
5 revisions
Mycat2是Mycat社区开发的一款分布式关系型数据库(中间件)。它支持分布式SQL查询,兼容MySQL通信协议,以Java生态支持多种后端数据库,通过数据分片提高数据查询处理能力。
学习中间件技术,数据库技术,代码是必须有的。
- 兼容MySQL语法。
- 兼容MySQL值类型。
- 使用基于规则优化与代价的优化器。
- 独立的物理执行引擎。
- 分片算法,序列号算法,负载均衡算法等都可自定义加载。
- 查询引擎可脱离网络框架运行。
自研DSL操纵物理查询计划。
支持SQL转发,缓存结果集。
- 区分不可更新配置/可热更新配置
- 数据库/逻辑表动态创建,重建,删除语句来更改配置
- 支持文件配置,
中间件管理配置 - 一定程度上兼容常见的建表,删除表的DDL语句,支持分片表建表语句
- 支持全局表,普通表,分片表,不支持ER表,把ER表配置成分片表即可,优化器会分析表之间的表关系
- 不支持强一致分布式事务
- 暂时没有数据迁移/扩容组件(待整合)
配置上自定义规则允许任意分库,分表,分库分表
读写分离
Grafana 监控模板以及监控端
-
SQL参数化并支持简单的查询计划缓存
-
EXPLAIN输出查询计划
-
基于规则的优化下推逻辑算子
-
基于代价的优化选择物理算子
-
支持UDF并兼容多数MySQL中的SQL函数
-
兼容MySQL的类型转换系统
-
支持多语句
-
不支持不能消除关联的关联子查询
-
平台兼容性问题,如Java与C之间有难以工程兼顾的问题,比如少数MySQL函数不支持
-
不支持CEP
-
自动加载MySQL系统表免配置
-
支持自定义数据操作的自定义表
- 支持参数化的批量插入
- 支持全局序列号
-
基于代码生成执行的表达式运行时
-
基于解释器模型的表达式运行时(待开发)
-
实现对应查询引擎的MySQL中的SQL函数
-
并行拉取数据源
-
纯JDBC模式完整支持多语句,Proxy能自动检测多语句冲突报错
- 仅支持mysql_native_password 原生网络协议
- 后端支持jdbc或者mysql_native_password 原生网络协议
- Proxy模式可任意透传响应文本结果集并响应多语句
- 不支持加密协议
- 不支持压缩协议
- 不支持透传预处理语句(涉及预处理句柄管理待完善或者说意义不大)
- 支持单个本地事务和多个本地事务
- 支持基于Proxy的事务
- 理论上基于JDBC的事务框架的多线程事务框架容易支持
JTA方案的分布式事务方案由于性能太差被移除- 没有准备支持分布式事务,请通过架构层面解决这个问题
- 基于轮训心跳的集群管理
- 集群管理可被禁用
- 策略模式的心跳类