Skip to content

Commit 32b350d

Browse files
author
gaohongtao
committed
Update doc
1 parent 436cc58 commit 32b350d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+329
-411
lines changed

sharding-jdbc-doc/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
本文档使用[hugo](http://gohugo.io/overview/introduction/)生成文档。
2+
同时使用主题[hugo theme learn](https://github.com/matcornic/hugo-theme-learn)来作为文档风格。

sharding-jdbc-doc/config.toml

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,3 @@
11
baseurl = "http://dangdangdotcom.github.io/sharding-jdbc/"
2-
languageCode = "en-us"
3-
title = "Sharding-JDBC"
4-
5-
[params]
6-
description = "A JDBC driver for shard databases and tables"
7-
author_url = "https://github.com/dangdangdotcom"
8-
project_url = "https://github.com/dangdangdotcom/sharding-jdbc"
9-
project_documentation = "http://dangdangdotcom.github.io/sharding-jdbc"
10-
github_project_name = "Sharding-JDBC"
11-
github_user_name = "dangdangdotcom"
12-
13-
first_color="#f8f8f8"
14-
first_border_color="#e7e7e7"
15-
first_text_color="#333"
16-
17-
second_color="white"
18-
second_text_color="#333"
19-
20-
header_color="#f8f8f8"
21-
header_text_color="rgb(51, 51, 51)"
22-
23-
header_link_color="#777"
24-
header_link_hover_color="rgb(51, 51, 51)"
2+
canonifyurls = true
3+
theme = "hugo-theme-learn"
Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,34 @@
11
+++
2-
date = "2016-11-23T20:30:55+08:00"
2+
toc = true
3+
date = "2016-12-06T22:38:50+08:00"
34
title = "FAQ"
4-
weight = 0
5-
+++
5+
weight = 2
6+
prev = "/01-start/quick-start"
7+
next = "/01-start/features"
68

7-
## 阅读源码时为什么会出现编译错误?
9+
+++
810

9-
代码使用[Lombok](https://projectlombok.org/download.html)实现极简代码。关于更多使用和安装细节,请参考官网。
11+
## 使用问题
1012

11-
## 使用Spring命名空间时在网上相应地址找不到xsd?
13+
### 使用Spring命名空间时在网上相应地址找不到xsd?
1214

1315
Spring命名空间使用规范并未强制要求将xsd文件部署至公网地址,只需在jar包的`META-INF\spring.schemas`配置,并在jar包中相关位置存在即可。
1416

1517
我们并未将`http://www.dangdang.com/schema/ddframe/rdb/rdb.xsd`部署至公网,但并不影响使用。相关问题请参考Spring命名空间规范。
1618

17-
## 异常:Cloud not resolve placeholder ... in string value ...?
19+
### 异常:Cloud not resolve placeholder ... in string value ...?
1820

1921
由于inline表达式内使用Groovy语法,Groovy语法的变量占位符为`${}`,与Spring的Property占位符冲突。
2022
故需要在Spring的配置文件中增加
2123
`<context:property-placeholder location="classpath:conf/rdb/conf.properties" ignore-unresolvable="true"/>`
2224

23-
## inline表达式返回结果出现浮点数?
25+
### inline表达式返回结果出现浮点数?
2426

2527
Java的整数相除结果是整数,但是对于inline表达式中的Groovy语法则不同,整数相除结果是浮点数。
26-
想获得除法整数结果需要将`A/B`改为`A.intdiv(B)`
28+
想获得除法整数结果需要将`A/B`改为`A.intdiv(B)`
29+
30+
## 编译源代码问题
31+
32+
### 阅读源码时为什么会出现编译错误?
33+
34+
代码使用[Lombok](https://projectlombok.org/download.html)实现极简代码。关于更多使用和安装细节,请参考官网。

sharding-jdbc-doc/content/post/features.md renamed to sharding-jdbc-doc/content/01-start/features.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
+++
2-
date = "2016-01-08T16:14:21+08:00"
2+
toc = true
3+
date = "2016-12-06T22:38:50+08:00"
34
title = "详细功能列表"
45
weight = 3
6+
prev = "/01-start/faq"
7+
next = "/01-start/limitations"
8+
59
+++
6-
# 详细功能列表
710

811
## 功能性需求
912

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
+++
2+
icon = "<b>1. </b>"
3+
date = "2016-12-02T16:06:17+08:00"
4+
title = "起航"
5+
weight = 0
6+
next = "/01-start/faq"
7+
chapter = true
8+
9+
+++
10+
11+
# 本章导航
12+
13+
- 如果想快速体验`Sharding-JDBC`的强大功能,请阅读[快速上手](/01-start/quick-start)
14+
- 如果在使用中遇到什么问题,请首先在[FAQ](/01-start/faq)中寻找解决问题的答案。
15+
- 想要在自己的项目中集成`Sharding-JDBC`,您一定很关心它[能做什么](/01-start/features)[不能做什么](/01-start/limitations)
16+
- 数据库中间件一般都不会支持完全的SQL语法,在这里你能了解到[支持的SQL语法](/01-start/sql-supported)
17+
- 最后,你会关心中间件的性能情况。这里将为你我们的[性能测试结果](/01-start/stress-test)
18+
19+
# 简介
20+
21+
* `Sharding-JDBC`直接封装`JDBC API`,可以理解为增强版的`JDBC`驱动,旧代码迁移成本几乎为零
22+
* 可适用于任何基于`java``ORM`框架,如:`JPA`, `Hibernate`, `Mybatis`, `Spring JDBC Template`或直接使用`JDBC`
23+
* 可基于任何第三方的数据库连接池,如:`DBCP`, `C3P0`, `BoneCP`, `Druid`等。
24+
* 理论上可支持任意实现`JDBC`规范的数据库。虽然目前仅支持`MySQL`,但已有支持`Oracle``SQLServer``DB2`等数据库的计划。
25+
* `Sharding-JDBC`功能灵活且全面
26+
* 分片策略灵活,可支持`=``BETWEEN``IN`等多维度分片,也可支持多分片键共用。
27+
* `SQL`解析功能完善,支持聚合,分组,排序,`Limit``OR`等查询,并且支持`Binding Table`以及笛卡尔积的表查询。
28+
* 支持柔性事务(目前仅最大努力送达型)。
29+
* 支持读写分离。
30+
* 支持生成唯一有顺序主键
31+
* `Sharding-JDBC`配置多样
32+
* 可支持YAML和Spring命名空间配置
33+
* 灵活多样的`inline`方式
34+
35+
36+
# 整体架构图
37+
38+
![整体架构图1](/img/architecture.png)

sharding-jdbc-doc/content/post/limitations.md renamed to sharding-jdbc-doc/content/01-start/limitations.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
+++
2-
date = "2016-01-08T16:14:21+08:00"
2+
toc = true
3+
date = "2016-12-06T22:38:50+08:00"
34
title = "使用限制"
4-
weight = 8
5-
+++
5+
weight = 4
6+
prev = "/01-start/features"
7+
next = "/01-start/sql-supported"
68

7-
# 使用限制
9+
+++
810

911
## `JDBC`未支持列表
1012

Lines changed: 28 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,28 @@
1-
# 主要贡献者
1+
+++
2+
toc = true
3+
date = "2016-12-06T22:38:50+08:00"
4+
title = "快速入门"
5+
weight = 1
6+
prev = "/start"
7+
next = "/01-start/faq"
28

3-
* 张亮 &nbsp;&nbsp;&nbsp;[当当](http://www.dangdang.com/) [email protected]
4-
* 高洪涛 [当当](http://www.dangdang.com/) [email protected]
5-
* 曹昊 &nbsp;&nbsp;&nbsp;[当当](http://www.dangdang.com/) [email protected]
6-
* 岳令 &nbsp;&nbsp;&nbsp;[当当](http://www.dangdang.com/) [email protected]
9+
+++
710

8-
# 交流与参与
11+
## 使用API配置
912

10-
- **讨论QQ群:** 532576663(不限于Sharding-JDBC,包括分布式,数据库相关以及其他互联网技术交流。由于QQ群已接近饱和,我们希望您在申请加群之前仔细阅读文档,并在加群申请中正确回答问题,以及在申请时写上您的姓名和公司名称。并且在入群后及时修改群名片。否则我们将有权拒绝您的入群申请。谢谢合作。)
11-
- **邮件组 [email protected]** ,如果在使用上需要帮助,或者疑似的bug,请发邮件到该邮件组中。发邮件之前请先阅读[FAQ](http://dangdangdotcom.github.io/sharding-jdbc/post/faq/)
12-
- 报告bug,提交增强功能建议和提交补丁等,请阅读[如何进行贡献](https://github.com/dangdangdotcom/sharding-jdbc/blob/master/CONTRIBUTING.md)
13+
### Maven安装
1314

14-
# 简介
15-
`Sharding-JDBC`直接封装`JDBC API`,可以理解为增强版的`JDBC`驱动,旧代码迁移成本几乎为零:
16-
17-
* 可适用于任何基于`java``ORM`框架,如:`JPA`, `Hibernate`, `Mybatis`, `Spring JDBC Template`或直接使用`JDBC`
18-
* 可基于任何第三方的数据库连接池,如:`DBCP`, `C3P0`, `BoneCP`, `Druid`等。
19-
* 理论上可支持任意实现`JDBC`规范的数据库。虽然目前仅支持`MySQL`,但已有支持`Oracle``SQLServer``DB2`等数据库的计划。
20-
21-
`Sharding-JDBC`定位为轻量级`java`框架,使用客户端直连数据库,以`jar`包形式提供服务,未使用中间层,无需额外部署,无其他依赖,`DBA`也无需改变原有的运维方式。`SQL`解析使用`Druid`解析器,是目前性能最高的`SQL`解析器。
22-
23-
`Sharding-JDBC`功能灵活且全面:
24-
25-
* 分片策略灵活,可支持`=``BETWEEN``IN`等多维度分片,也可支持多分片键共用。
26-
* `SQL`解析功能完善,支持聚合,分组,排序,`Limit``OR`等查询,并且支持`Binding Table`以及笛卡尔积的表查询。
27-
* 支持柔性事务(目前仅最大努力送达型)。
28-
* 支持读写分离。
29-
30-
`Sharding-JDBC`配置多样:
31-
32-
* 可支持YAML和Spring命名空间配置
33-
* 灵活多样的`inline`方式
34-
35-
***
36-
37-
以下是常见的分库分表产品和`Sharding-JDBC`的对比:
38-
39-
| 功能 | Cobar | Cobar-client | TDDL | Sharding-JDBC |
40-
| ------------- |:-------------:| --------------:| -----------:|----------------:|
41-
| 分库 ||| 未开源 ||
42-
| 分表 ||| 未开源 ||
43-
| 中间层 |||||
44-
| ORM支持 | 任意 | 仅MyBatis | 任意 | 任意 |
45-
| 数据库支持 | 仅MySQL | 任意 | 任意 | 任意 |
46-
| 异构语言 || 仅Java | 仅Java | 仅Java |
47-
| 外部依赖 ||| Diamond ||
48-
49-
***
50-
51-
# 整体架构图
52-
53-
![整体架构图1](img/architecture.png)
54-
55-
# Quick Start
56-
57-
## 引入maven依赖
5815
```xml
5916
<!-- 引入sharding-jdbc核心模块 -->
6017
<dependency>
6118
<groupId>com.dangdang</groupId>
6219
<artifactId>sharding-jdbc-core</artifactId>
63-
<version>1.0.0</version>
20+
<version>${sharding-jdbc.version}</version>
6421
</dependency>
6522
```
6623

6724
## 规则配置
25+
6826
`Sharding-JDBC`的分库分表通过规则配置描述,请简单浏览配置全貌:
6927

7028
```java
@@ -78,9 +36,10 @@ ShardingRule shardingRule = ShardingRule.builder()
7836

7937
规则配置包括数据源配置、表规则配置、分库策略和分表策略组成。这只是最简单的配置方式,实际使用可更加灵活,如:多分片键,分片策略直接和`tableRule`绑定等。
8038

81-
>详细的规则配置请参考[用户指南](post/user_guide)
39+
>详细的规则配置请参考[分库分表](guide/sharding)
8240
8341
## 使用基于ShardingDataSource的JDBC接口
42+
8443
通过`ShardingDataSourceFactory`工厂和规则配置对象获取`ShardingDataSource``ShardingDataSource`实现自`JDBC`的标准接口`DataSource`。然后可通过`DataSource`选择使用原生`JDBC`开发,或者使用`JPA`, `MyBatis``ORM`工具。
8544
`JDBC`原生实现为例:
8645

@@ -101,7 +60,19 @@ try (
10160
}
10261
```
10362

104-
## 使用Spring命名空间配置
63+
## 使用Spring
64+
65+
### Maven安装
66+
67+
```xml
68+
<!-- 引入sharding-jdbc核心模块 -->
69+
<dependency>
70+
<groupId>com.dangdang</groupId>
71+
<artifactId>sharding-jdbc-config-spring</artifactId>
72+
<version>${sharding-jdbc.version}</version>
73+
</dependency>
74+
```
75+
### Spring命名空间
10576

10677
```xml
10778
<?xml version="1.0" encoding="UTF-8"?>
@@ -144,3 +115,4 @@ try (
144115
</rdb:data-source>
145116
</beans>
146117
```
118+
>详细的规则配置请参考[Spring配置](guide/spring)

sharding-jdbc-doc/content/post/sql_supported.md renamed to sharding-jdbc-doc/content/01-start/sql-supported.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
+++
2-
date = "2016-01-08T16:14:21+08:00"
2+
toc = true
3+
date = "2016-12-06T22:38:50+08:00"
34
title = "SQL支持详细列表"
4-
weight = 9
5-
+++
5+
weight = 5
6+
prev = "/01-start/limitations"
7+
next = "/01-start/stress-test"
68

7-
# SQL支持详细列表
9+
+++
810

911
由于`SQL`语法灵活复杂,分布式数据库和单机数据库的查询场景又不完全相同,难免有和单机数据库不兼容的`SQL`出现。
1012
本文详细罗列出已明确可支持的`SQL`种类以及已明确不支持的`SQL`种类,尽量让使用者避免踩坑。
@@ -36,6 +38,7 @@ SELECT select_expr [, select_expr ...] FROM table_reference [, table_reference .
3638
```
3739

3840
#### select_expr
41+
3942
```sql
4043
* |
4144
COLUMN_NAME [AS] [alias] |
@@ -44,6 +47,7 @@ COUNT(* | COLUMN_NAME | alias) [AS] [alias]
4447
```
4548

4649
#### table_reference
50+
4751
```sql
4852
tbl_name [AS] alias] [index_hint_list] |
4953
table_reference ([INNER] | {LEFT|RIGHT} [OUTER]) JOIN table_factor [JOIN ON conditional_expr | USING (column_list)] |

sharding-jdbc-doc/content/post/stress_test.md renamed to sharding-jdbc-doc/content/01-start/stress-test.md

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
+++
2-
date = "2016-01-08T16:14:21+08:00"
3-
title = "压力测试报告"
4-
weight = 10
5-
chart = true
2+
toc = true
3+
date = "2016-12-06T22:38:50+08:00"
4+
title = "性能测试报告"
5+
weight = 6
6+
prev = "/01-start/sql-supported"
7+
next = "/02-guide"
8+
69
+++
7-
# 压力测试报告
10+
811
## 测试目的
912
`Sharding-JDBC`进行性能测试,客观、公正评估系统的性能,目的有三:
1013

@@ -25,7 +28,7 @@ chart = true
2528
| 数据表行数 | 1000万 | 1000万 |
2629
## 网络拓扑
2730

28-
![网络拓扑图](../../img/stress_test_arch.png)
31+
![网络拓扑图](/img/stress_test_arch.png)
2932
## 单库情况下Sharding-JDBC与JDBC性能对比
3033
测试结论:
3134

@@ -87,3 +90,18 @@ chart = true
8790
经过8个小时的疲劳测试,jvm的堆大约占用不到600MB的内存,且使用量比较稳定。没有发生Full GC。
8891
<canvas id="fatigueTest" width="400" height="150"></canvas>
8992

93+
<script src="//cdn.bootcss.com/moment.js/2.11.1/moment.min.js"></script>
94+
<script src="//cdn.bootcss.com/Chart.js/2.0.0-beta2/Chart.min.js"></script>
95+
<script src="/data/chart.js"></script>
96+
<script>
97+
$("canvas").each(function(){
98+
var data = chartData[$(this).attr("id")];
99+
$(data.datasets).each(function(index, obj){
100+
$.extend(obj, charStyle[index])
101+
});
102+
new Chart(this.getContext("2d"),{
103+
type: 'line',
104+
data: data
105+
});
106+
})
107+
</script>

sharding-jdbc-doc/content/post/concepts.md renamed to sharding-jdbc-doc/content/02-guide/concepts.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
+++
2-
date = "2016-03-03T16:14:21+08:00"
2+
toc = true
3+
date = "2016-12-06T22:38:50+08:00"
34
title = "核心概念"
4-
weight = 4
5+
weight = 1
6+
prev = "/02-guide"
7+
next = "/02-guide/sharding"
8+
59
+++
610

711
本文介绍`Sharding-JDBC`包含的一些核心概念。

0 commit comments

Comments
 (0)