我正在集群环境中开发Web应用程序。问题是我们需要为每个创建的实体生成一个ID。我们处于一个具有多个数据库节点的环境中,这些数据库节点都是相互流式传输的。我的想法是一个带有偏移量的序列。因此,一个站点的ID将以1结尾,接下来的2个,依此类推。这似乎是一个难以实施的解决方案,因为您仅限于许多环境。当您处于受干扰的数据库环境时,保证唯一生成的主键的“最佳”方式是什么?集群环境中的数据库ID生成
1
A
回答
0
就我个人而言,我更喜欢偏移序列。是的,你被限制在一定数量的环境中,但实际上,你通常可以从一开始就设置一些东西,以便可用环境的数量远远超过你真正需要的环境。如果你这样做
在网站1
CREATE SEQUENCE sequence_name
START WITH 1
INCREMENT BY 1000;
在现场2
CREATE SEQUENCE sequence_name
START WITH 2
INCREMENT BY 1000;
上下行,最多可以有999个站点,你必须返工你的序列之前。这通常绰绰有余。如果您认为实际上可能有1000个站点,则可以将增量设置为10,000或100,000。给定序列可以生成的值的数量,即使将增量设置为数百万,也不会耗尽。实际上,在处理序列问题之前,您会遇到流处理太多站点的问题。
如果您不想走这条路,另一个选择是使用SYS_GUID
生成一个全局唯一的ID并将其用于您的主键。这不像使用序列那么高效,它需要更多的空间,但它确实允许您拥有任意数量的机器。
相关问题
- 1. 在集群环境中共享数据
- 2. 的集群环境
- 3. 集群环境中的Log4j
- 4. 在集群环境中
- 5. 查找群集环境的SQL Server数据库文件设置
- 6. 关于集群环境的数据库访问相关信息
- 7. 在集群环境中生成一个范围内(0-100k)的随机数
- 8. 从群集环境中的数据库表中读取最快的方式
- 9. 如何使生产数据库上的群集PK非群集?
- 10. 集群环境中的ASP.Net核心数据保护API
- 11. 在WebLogic集群环境中设置WebSphere MQ集成
- 12. 集群环境中的同步
- 13. 在集群环境中的subclipse
- 14. 集群环境中的资产管理
- 15. 多集群环境中的JCR锁定
- 16. 群集环境中的Toplink异常
- 17. 集群环境中的Jboss AS 7 Infinispan
- 18. 群集环境中的休眠ORM
- 19. 群集环境中的关键部分
- 20. Selenium集成开发环境集成开发环境IDE集成开发环境集成开发环境
- 21. 虚拟化(和云)环境中的群集和数据库复制
- 22. 数据库中的群集或数据库中的群集意味着什么?
- 23. 如何在此环境中形成群集并选择群集标头?
- 24. 重交通生产环境中的节点JS群集
- 25. 生产环境中的Tomcat集群/负载平衡性能
- 26. Spring引导与不同数据库环境的集成测试
- 27. 生产数据库中的Flyway集成
- 28. 在集群环境中缓存
- 29. 在Weblogic群集环境中登录-LINUX
- 30. 在集群环境中配置log4j