分布式数据库等其它一些基本概念(三)

来源:互联网 发布:数据预处理与数据清洗 编辑:程序博客网 时间:2024/06/13 22:49

ShardingRelating

拆分

 

在集中式数据库中是一个大表,在分布式数据库中则创建多个分片表。

 

1、水平拆分

 

万言不如一例。

设表Customer

Id

Name

1

A

2

B

3

C

4

D

5

D

 

假设有2个虚拟分片,按字段Id进行分片则有

Id

Name

拆分算法

所在分片

1

A

1%2

B

2

B

2%2

A

3

C

3%2

B

4

D

4%2

A

5

D

5%2

B

 

于是数据以行为单位拆分到不同的分片数据库中去

Shard A 数据库

Id

Name

2

B

4

D

Shard B 数据库

Id

Name

1

A

3

C

5

D

 

同理,若按字段Name进行分片则有

Id

Name

拆分算法

所在分片

1

B

B.hashCode %2 = 66 %2

A

2

C

C.hashCode %2 = 67 %2

B

3

C

C.hashCode %2 = 67 %2

B

4

D

D.hashCode %2 = 68 %2

A

5

D

D.hashCode %2 = 68 %2

A


综合

类型

描述

例子

Global

每个分片都存储着相同的copy

Table Customer: 5 recs. Shard 1: 5 recs, shard 2: 5 recs.

Random

简单地随机分片

Table Customer: 5 recs. Shard 1: 1 recs, shard 2: 4 recs.

水平拆分

按各种分片算法及拆分字段,把数据按行拆分

算法如:

虚拟ShardId = shardingKeyValue%虚拟分片数(long)

虚拟ShardId = shardingKeyValue.hashCode%虚拟分片数 (string)

垂直拆分

把数据按列拆分

(后补)


0 0
原创粉丝点击