我们正在开发一个应用程序,其中表的实体ID必须以从1开始的增量顺序为每个命名空间。
我们在allocateIdRange界面中遇到了allocateIds,DatastoreService个方法,但这些ID必须手动分配,并且不会由DatastoreService本身分配。手动分配ID可能会导致多个实例出现同步问题。
任何人都可以向我提出解决这个问题的建议吗?
我们正在使用objectify 3.0进行DatastoreService操作。
答案 0 :(得分:0)
我同意Tim Hoffman和tx802,当他们说你应该重新考虑有关顺序ID的设计时。不久前我不得不实施非常相似的东西,因为客户强迫我们使用顺序和不间断的数字来订购号码(原因不明)。无论我们使用sharding counters(链接包含完整代码示例)作为订单号,我们都遵守了客户的意愿。分片计数器的工作方式如下:
为什么这样做:
<强>总结强> 您可以对顺序ID使用分片计数器。如果你可以避免整个顺序id困境,那将是一个更好的解决方案。