Loading README.md +35 −24 Original line number Diff line number Diff line Loading @@ -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 Loading README_ZH.md +9 −8 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ Sharding-JDBC是一个开源的分布式数据库中间件解决方案。它在J # 功能列表 ## 1. 数据分片 * 分库 + 分表 * 支持分库 + 分表 * 支持聚合,分组,排序,分页,关联查询等复杂查询语句 * 支持常见的DML,DDL,TCL以及数据库管理语句 * 支持=,BETWEEN,IN的分片操作符 Loading @@ -37,18 +37,19 @@ Sharding-JDBC是一个开源的分布式数据库中间件解决方案。它在J * 支持分布式主键 ## 2. 读写分离 * 一主多从的读写分离 * 分库分表 + 读写分离 * 基于Hint的强制主库路由 * 支持一主多从的读写分离 * 支持同一线程内的数据一致性 * 支持分库分表与读写分离共同使用 * 支持基于Hint的强制主库路由 ## 3. 柔性事务 * 最大努力送达型事务 * TCC型事务(TBD) ## 4. 分布式治理 * 配置动态化,可支持数据源、表与分片策略的动态切换 * 客户端的数据库治理,数据源失效自动切换 * 基于Open Tracing协议的APM信息输出 * 支持配置中心,可动态修改配置 * 支持客户端熔断和失效转移 * 支持Open Tracing协议 # 部署架构 Loading @@ -62,7 +63,7 @@ Sharding-JDBC是一个开源的分布式数据库中间件解决方案。它在J ## Sharding-JDBC-Server 通过代理服务端分片的方式,由代理服务器连接数据库,适合运维以及调试时查询数据。 通过代理服务器连接数据库(目前仅支持MySQL),适合其他开发语言或MySQL客户端操作数据。 * 向应用程序完全透明,可直接当做MySQL使用 * 可适用于任何兼容MySQL协议的的客户端 Loading Loading
README.md +35 −24 Original line number Diff line number Diff line Loading @@ -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 Loading
README_ZH.md +9 −8 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ Sharding-JDBC是一个开源的分布式数据库中间件解决方案。它在J # 功能列表 ## 1. 数据分片 * 分库 + 分表 * 支持分库 + 分表 * 支持聚合,分组,排序,分页,关联查询等复杂查询语句 * 支持常见的DML,DDL,TCL以及数据库管理语句 * 支持=,BETWEEN,IN的分片操作符 Loading @@ -37,18 +37,19 @@ Sharding-JDBC是一个开源的分布式数据库中间件解决方案。它在J * 支持分布式主键 ## 2. 读写分离 * 一主多从的读写分离 * 分库分表 + 读写分离 * 基于Hint的强制主库路由 * 支持一主多从的读写分离 * 支持同一线程内的数据一致性 * 支持分库分表与读写分离共同使用 * 支持基于Hint的强制主库路由 ## 3. 柔性事务 * 最大努力送达型事务 * TCC型事务(TBD) ## 4. 分布式治理 * 配置动态化,可支持数据源、表与分片策略的动态切换 * 客户端的数据库治理,数据源失效自动切换 * 基于Open Tracing协议的APM信息输出 * 支持配置中心,可动态修改配置 * 支持客户端熔断和失效转移 * 支持Open Tracing协议 # 部署架构 Loading @@ -62,7 +63,7 @@ Sharding-JDBC是一个开源的分布式数据库中间件解决方案。它在J ## Sharding-JDBC-Server 通过代理服务端分片的方式,由代理服务器连接数据库,适合运维以及调试时查询数据。 通过代理服务器连接数据库(目前仅支持MySQL),适合其他开发语言或MySQL客户端操作数据。 * 向应用程序完全透明,可直接当做MySQL使用 * 可适用于任何兼容MySQL协议的的客户端 Loading