作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用分布式 NoSQL DB 构建 Web 应用程序。但是,为了为新实体生成 Id,我使用 MySQL 作为 Flickr's ticket server
我只是坚持在应用程序层保留 Id 的库存,以便可以快速轻松地为新实体分配 id,而无需为每个实体逐一从数据库中获取。相反,我可以从数据库中提取一些 Id,比如 1000 个左右,然后使用它们,直到堆栈达到剩余 Id 的一定限制,此时我将从数据库中提取更多 Id 来再次填充堆栈。
感谢您对此的想法和想法。
最佳答案
这是一个好主意,除非您需要 id 是连续的,并且某些 id 从未使用过也没关系。
例如当 SAP ERP 没有订购要求并且可能有“漏洞”时,SAP ERP 会对所谓的“编号范围”执行此操作(可配置)。每个应用程序服务器将请求一组 key 而不是一个 key ,并从该缓存中提供它们。它会在必要时重新填充其缓存。这节省了相当多的往返次数和数据库锁定。
如果应用程序服务器出现故障(或系统停止),则缓存中存在但尚未分发的任何 id 都会丢失(即永远不会被使用)。如果您只需要一个唯一的 ID,有时这很好。如果序列中不能有漏洞(在某些国家/地区,业务文档编号(例如发票编号)会出现这种情况),那就完全不行了。
关于java - 生成主键 : By Pulling from a stock of Ids, 保存在Web应用程序的应用层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5281643/
我是一名优秀的程序员,十分优秀!