0
点赞
收藏
分享

微信扫一扫

信息平台数据库主键中心化设计方案


提到数据库的sharding,你可能会了解mysql的做法: http://www.uml.org.cn/sjjm/201211212.asp

下面介绍另一种依靠规则来解决此类问题。

我的想法是, 通过合理的规划, 在3.0初期, 就是用bigint, 具体方案如下:

1. 维护一个全局的DB-schema文档.

2.每个DB一个编号,  格式为3位十进制,

例如 BusinessPlatform:100    xTrans2ZTC:101

整体容量为 900 个DB  (我们系统的DB数量应该不会超过这个数字吧)

3.DB内部, 每个Table一个编号, 格式为4位十进制,

例如  dbo.opt_Order:1000    dbo.opt_Waybill:1001

整体容量为9000个table,  相同的DB内部table编号不可重复

4. 每个Table的主键采用 DB编号+table编号+11位十进制

11位十进制的容量 00000000000—99999999999

也是每个表可以有一千亿的容量

信息平台数据库主键中心化设计方案_数据

 

以上只是管理运作方案,维护成本比较小, 达到的目的是DB性能和数据可移植性. 

具体技术实现如下:

1. Mssql2012新特性 支持sequence,  可以为每个必要的表建立对应的sequence (有些历史数据表作为数据存档 没必要建立sequence)


比如说 当前 DB:105, Table: 1045

那么sequence的initvalue就是 105104500000000000,  increment是1, 以此类推.

请大家考虑这种方案的可行性和维护成本, 谢谢!

 

举报

相关推荐

0 条评论