数据库sharding下的主键生成策略

数据库水平分区(sharding),即对同一张数据库表,按照规则将数据切分至多个数据库。

 

如上图,将user表切分至三个数据库中.

 

在对数据库水平分区的情况下,面对多个数据库,想要生成一个唯一性的主键这是一个问题。

 

通常解决办法有两种:

 

UUID:

使用UUID很容易就可以生成唯一性主键,并且不用担心主键生成效率问题,当然缺点是UUID的长度过长,浪费空间,所以下面介绍另外一种方法。

 

单独一台服务器负责主键生成:

即我们使用一台单独的服务器(如mysql) 负责主键的生成

 

如果我们是使用mysql数据库,可以创建一张表来模拟oracle的sequence:

表sql:

 

 

create table tab_sequence (value bigint not null)

 oracle数据库直接使用sequence即可.

 

 

但现在我们又会碰到单点问题,即如果master挂了,对我们的应用影响非常大。

 

所以我们可以配合使用mysql 的复制功能。

 

 

配合使用linux HA: heartbeat,就算master服务器或是硬盘故障了,我们也可以很快的切换至slave.保障高可用性。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值