我觉得友好的id还是很必要,比方说qq号就很友好,电话号码就很友好,甚至短的(注册较早)的qq号还有特殊的商业价值...
欢迎大家讨论下数据库的id策略,怎样才能方便的生成友好的id
"但是在插入数据时,程序还要读取一次数据库才能获取id," 每次自增2000, 每个单线程程序一次性拿2000的ID出来存内存里慢慢用, 用完再去找数据库要. 程序意外挂掉时, 也不过是跳跃了一些的id. 2000根据自己的业务量来定.
分库分表很不利, 我没理解你...... ID除以余数 很方便. UUID 才可怕吧.
######不是说id造成分库分表有问题,而是说分库分表后id的产生变得有问题######回复 @Lunar_Lin : 谢谢你参与讨论,我学到了新的方案######@水牛叔叔 sorry, 是他说的1.2######回复 @水牛叔叔 : 这个服务进程自己预留ID的方案是楼下南陌说的方案1.1的改良版本. id池表做个容灾. 应付新浪微播量级的都不会有什么问题. 按10个分布式服务, 200010已经很大很大了. 平常的网站用户ugc和评论的量级, 感觉 10 * 100 或者 1 100 应该够了.######回复 @水牛叔叔 : uuid 样子看起来呗. 没什么. 个人觉得还是32/64位的uint看起来最像ID.######1.专门建一个库/表分配全局唯一的ID.
2.每张表划分ID区域.
3.错位分配
4.组合ID.
以上是针对MySQL数据库在分库分表情况下生成全局ID的一些西想法.具体的操作方法可以参考我的blog: http://chaubeau.github.io/blog/2014/06/10/mysql-shardingzai-gao-bing-fa-xia-de-quan-ju-idsheng-cheng/######方案1.2挺和我心意的######这个方法不错######blog的背景图大白腿不错。######UUID就行吧. QQ号虽然友好,估计不是主键.######@南陌 , @Lunar_Lin ,你们好。 我现在想取一批id保存到内存里,然后慢慢用,用完了再取,也不用做容灾,因为我每次取表里的最大id,然后根据这个id用程序生成后续的递增id。这批id我打算存在普通的容器里,比如List之类的,这样做只要考虑多线程同步的问题。你们觉得这个方法可行吗?######回复 @水牛叔叔 : 可行的. 如果 以一个线程为单位去拿id的. 连多线程互斥也不用考虑了. 我不明白你说的内存数据同步. 这里只考虑id的话 应该够了.######我想到了一个问题:分布式下,内存数据的同步也是问题,还是要一个集中的存储地方
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。