Commit 24048a87 authored by terrymanu's avatar terrymanu
Browse files

update features

parent 261a10dc
Loading
Loading
Loading
Loading
+35 −24
Original line number Diff line number Diff line
@@ -22,39 +22,50 @@ Sharding-JDBC: A data sharding, read/write splitting, BASE transaction and datab

# Features

## 1. Sharding
* Aggregation functions, group by, order by and limit SQL supported in distributed database.
* Join (inner/outer) query supported.
## 1. Data sharding
* Both databases and tables sharding supported.
* Standard aggregation functions, GROUP BY, ORDER BY, LIMIT and JOIN DQL supported.
* Standard DML, DDL, TCL and database administrator command supported.
* Sharding operator `=`, `BETWEEN` and `IN` supported.
* Sharding algorithm customization supported.
* Hint supported.
* Sharding algorithm customization and inline expression supported.
* Route by hint supported.
* Distributed sequence supported.

## 2. Read/Write Splitting
* Same transaction data concurrency guarantee.
* Hint supported.
## 2. Read/write splitting
* Multiple slaves replica supported. 
* Data consistency guarantee in same thread supported.
* Mix read/write splitting and data sharding supported.
* Route by hint supported.

## 3. BASE Transaction
* Best efforts delivery transaction.
* Best efforts delivery transaction supported.
* Try confirm cancel transaction (TBD).

## 6. Distributed ID Generation
* Distributed Unique Time-Sequence Generation
## 4. Orchestration
* Configuration center supported, can refresh dynamically.
* Circuit breaker and failover supported.
* Open tracing supported.

# Architecture

## Sharding-JDBC-Driver

Use JDBC connect databases without redirect cost for java application, best performance for production.

## 5. Compatibility
* ORM self-adapting. JPA, Hibernate, Mybatis, Spring JDBC Template or JDBC supported.
* Connection-pool self-adapting. DBCP, C3P0, BoneCP, Druid supported.
* Any Database supported theoretically. Support MySQL, Oracle, SQLServer and PostgreSQL.

## 6. Configuration
* Java config
* Spring namespace
* YAML
* Inline expression

## 7. Orchestration
* Configuration center, can support data sources, tables and sharding strategies switch dynamically.
* Smart client to orchestrate data access service, can failover automatically.
* Output apm information based on open tracing protocol.
* Any Database supported theoretically. Support MySQL, Oracle, SQLServer and PostgreSQL right now.

## Sharding-JDBC-Server

Use proxy to connect databases(only MySQL protocol for now), for other programing language or MySQL client.

* Use standard MySQL protocol, application do not care about whether proxy or real MySQL.
* Any MySQL command line and UI workbench supported.

## Sharding-JDBC-Sidecar(TBD)

Use sidecar to connect databases, best for Kubernetes or Mesos together.

# Architecture

+9 −8
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ Sharding-JDBC是一个开源的分布式数据库中间件解决方案。它在J
# 功能列表

## 1. 数据分片
* 分库 + 分表
* 支持分库 + 分表
* 支持聚合,分组,排序,分页,关联查询等复杂查询语句
* 支持常见的DML,DDL,TCL以及数据库管理语句
* 支持=,BETWEEN,IN的分片操作符
@@ -37,18 +37,19 @@ Sharding-JDBC是一个开源的分布式数据库中间件解决方案。它在J
* 支持分布式主键

## 2. 读写分离
* 一主多从的读写分离
* 分库分表 + 读写分离
* 基于Hint的强制主库路由
* 支持一主多从的读写分离
* 支持同一线程内的数据一致性
* 支持分库分表与读写分离共同使用
* 支持基于Hint的强制主库路由

## 3. 柔性事务
* 最大努力送达型事务
* TCC型事务(TBD)

## 4. 分布式治理
* 配置动态化,可支持数据源、表与分片策略的动态切换
* 客户端的数据库治理,数据源失效自动切换
* 基于Open Tracing协议的APM信息输出
* 支持配置中心,可动态修改配置
* 支持客户端熔断和失效转移
* 支持Open Tracing协议

# 部署架构

@@ -62,7 +63,7 @@ Sharding-JDBC是一个开源的分布式数据库中间件解决方案。它在J

## Sharding-JDBC-Server

通过代理服务端分片的方式,由代理服务器连接数据库,适合运维以及调试时查询数据。
通过代理服务器连接数据库(目前仅支持MySQL),适合其他开发语言或MySQL客户端操作数据。

* 向应用程序完全透明,可直接当做MySQL使用
* 可适用于任何兼容MySQL协议的的客户端