使用Hibernate、Struts2、Spring框架,当数百万用户同时提交信息或订单时,哪种方式生成数据库的主键更好?
有一些选择:
1:使用“uuid”生成
2:用“序列”生成
3:你的解决方案...
(考虑数据的可移植性和效率)
使用Hibernate、Struts2、Spring框架,当数百万用户同时提交信息或订单时,哪种方式生成数据库的主键更好?
有一些选择:
1:使用“uuid”生成
2:用“序列”生成
3:你的解决方案...
(考虑数据的可移植性和效率)
我会使用数据库来管理唯一键,例如
INSERT INTO yourTable (yourSequence.nextval(), COLUMN1, COLUMN2, ... )
在应用程序中生成自己的密钥肯定会起作用,但如果应用程序扩展到多台服务器,如果您不为此做好准备,可能会导致问题。
如果你使用 MySQL,你可以使用 AUTO_INCREMENT - http://www.tutorialspoint.com/mysql/mysql-using-sequences.htm
查看hibernate生成器的实现——http: //docs.jboss.org/hibernate/orm/3.3/reference/en/html/mapping.html#mapping-declaration-id有多种类型。
我更喜欢 HiLo 算法,请参阅此处的解释What's the Hi/Lo algorithm?因为它为海量数据提供了巨大的吞吐量。
请注意 Guid,因为它不是很好的主键,因为它与聚集主索引一起使用。