数据分片以及全局id的生成

来源:互联网 发布:nginx php error log 编辑:程序博客网 时间:2024/06/07 01:23

一. 数据分片

在分布式存储系统中,数据需要分散存储在多台设备上,数据分片(Sharding)就是用来确定数据在多台存储设备上分布的技术。数据分片要达到三个目的:

  1. 分布均匀,即每台设备上的数据量要尽可能相近;
  2. 负载均衡,即每台设备上的请求量要尽可能相近;
  3. 扩缩容时产生的数据迁移尽可能少。

但是数据分片后,各个数据库如何维护记录的唯一性id呢?


二. 全局唯一性id的生成

1.mogodb的唯一性id生成算法

|0|1|2|3|4|5|6 |7|8|9|10|11||时间戳  |机器ID|PID|计数器   |1. 时间戳:4个字节,标准纪元开始的以秒为单位的时间戳;2. 机器ID:3个字节,一般是主机名的散列值,保证机器的唯一性;3. PID:2个字节,进程id,保证了同一台机器上多个mongodb服务的唯一性;4. 计数器:3个字节,一个自动增加的计数器,保证了同一秒内不会出现相同的id;

2.Mysql的UUID() 函数

原创粉丝点击