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

本文详细介绍了在分布式数据库环境中如何通过水平拆分将大表数据分散存储于多个分片表中,包括实例演示、分片算法以及不同类型的拆分方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)

垂直拆分

把数据按列拆分

(后补)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值