数据库主键策略的一些感想
目前在做一个Rss收集相关的web系统。
1.数据库是使用多台mysql。
2.用mysql 的 replication来分离读写。
3.根据用户ID来分布数据库中的数据。
问题:
1.mysql没有像oracle中的sequence。自制sequence的话怕影响效率。
2.采用mysql中的自增长主键,在分布数据库中会有重复主键问题。键值必须在多个数据库中惟一。
3.在网上查了几个程序生成的主键的方式,似乎都很长最长的要128位,这对与键索引来说会太大。
4.用时间到毫秒在加5位随机数来生成主键,但这也要20位,还是不理想。
查询了公司之前项目的主键生成机制。
发现了原项目中用了Oracle的sequence,并用一procedure把数字sequence压缩成字母大小写在加数字的形式。就是把原来的10进变成64进制,相应的位数就减少了很多。
最后决定用php来写一个压缩数字日期加随机数的程序来做,把主键限定在10以内.
大家有什么好的建义,参考参考。