Commit d5c066ff authored by terrymanu's avatar terrymanu
Browse files

update docs

parent 7bcfb694
Loading
Loading
Loading
Loading
+64 −15
Original line number Diff line number Diff line
@@ -4,19 +4,68 @@ title = "未来线路规划"
weight = 11
+++
# 未来线路规划
1. 更加灵活和多维度的配置。包括spring支持,分片算法inline支持,读写分离配置,水平垂直分片配置,动态表配置等。
1. 更多的SQL支持。包括distinct结果归并, group by和count之后进行haviing的支持,计算表达式支持,如sum(pv) / count(uv)等。
1. 柔性分布式事务。
1. 读写分离。读写一致性处理。
1. 分布式主键生成器。
1. SQL重写优化,进一步提升性能。
1. SQL Hint,可指定某SQL在某具体库表执行,基于业务规则而非SQL解析路由。
1. 小表广播。
1. HA相关。
1. 流量控制。
1. 数据库建表工具。
1. 数据迁移。
1. 复杂SQL解析支持,如子查询,存储过程等。
1. Oracle, SQLServer,DB2支持。
1. 配置中心。

## 进行中

### config
1. Spring命名空间
1. yaml配置
1. 动态配置逻辑表,例:logic_tables="order_${0..64}"
1. 分片算法inline支持,例:sharding_express="user_id % 8"

### transaction
1. sharding-jdbc-core发送SQL执行事件
1. bed类型事务日志存储设计
1. bed类型事务同步尝试
1. 基于elastic-job的bed类型事务异步尝试

## 计划中

### config 2.0
1. 动态表配置
1. 只分库不需要逻辑表和真实表对应配置
1. 简化只分库配置,无需配置逻辑表和真实表对应关系
1. 简化只分表配置,可指定默认数据源,简化单库TableRule配置

### transaction 2.0
1. 基于tcc的柔性事务

### distribution id
1. JDBC接口改写
1. 分布式主键策略接口制定
1. 基于snowflake的分布式主键算法实现
1. 基于groupsequence的分布式主键算法实现
1. 基于数据库的分布式主键算法实现

### parser 2.0
1. 判断不支持SQL并直接报错
1. 支持DISTINCT
1. 支持GROUP BY聚合之后进行HAVING
1. 支持计算表达式,如:SUM(pv) / COUNT(uv)
1. 支持通过SQL注释指定SQL Hint
1. SQL重写优化,进一步提升性能

### merger 2.0
1. 管道化结果归并
1. 支持OR语句根据row的唯一标识去重
1. 支持DISTINCT
1. 支持GROUP BY聚合之后进行HAVING
1. 支持计算表达式,如:SUM(pv) / COUNT(uv)

### router 2.0
1. 支持通过SQL注释指定SQL Hint
1. ThreadLocal Hints需重新考虑生命周期是否和connection以及statement绑定
1. 释放资源时,自动清理ThreadLocal Hints

## 待定

1. 读写分离
1. 字典表复制广播
1. HA相关
1. 流量控制
1. 建表工具
1. 动态扩容
1. 配置中心
1. 其他数据库支持

+2 −2
Original line number Diff line number Diff line
@@ -86,8 +86,8 @@ table_reference ([INNER] | {LEFT|RIGHT} [OUTER]) JOIN table_factor [JOIN ON cond
| ----------------------------------------------------------------------------------------------- |
| INSERT INTO tbl_name (col1, col2, ...) VALUES `(val1, val2,....), (val3, val4,....)`            |
| INSERT INTO tbl_name (col1, col2, ...) `SELECT col1, col2, ... FROM tbl_name WHERE col3 = val3` |
| INSERT INTO tbl_name SET col1 = val1                                                            |
| SELECT `DISTINCT` * FROM table_name WHERE column1 = value1                                      |
| INSERT INTO tbl_name `SET col1 = val1`                                                          |
| SELECT `DISTINCT` * FROM tbl_name WHERE column1 = value1                                        |
| SELECT COUNT(col1) as count_alias FROM tbl_name GROUP BY col1 `HAVING count_alias > val1`       |
| SELECT * FROM tbl_name1 `UNION` SELECT * FROM tbl_name2                                         |
| SELECT * FROM tbl_name1 `UNION ALL` SELECT * FROM tbl_name2                                     |