2017-02-12 72 views
1

我有问题,我必须在整个系统中生成唯一编号。应用程序'X'通过使用一些输入生成值'A',将使用此值'A'通过其他应用程序作为输入来生成其他值“B”。跨系统生成唯一编号的算法

'A'和'B'两个值都将在后面的KDB中保存。这样做的目的是确定'A'的哪个值触发'B'的生成值。 'A'以非常高的速度生成,所以我正在寻找快速的算法,并且不会妨碍应用程序'X'的性能。

回答

2

你想要的是一个UUID。见https://en.m.wikipedia.org/wiki/Universally_unique_identifier。它们通常基于MAC地址,时间戳,哈希和随机性等内容。他们的理论意图是全球独一无二的。根据平台的不同,通常会内置用于生成它们的函数。如果有必要,我可以在不使用手机的情况下进一步扩展,但从此开始。

您可能会偶尔碰到它们,https://www.uuidgenerator.net可以举几个例子。

这就是说,如果你将它们插入到数据库中,另一个调查策略是使用数据库自​​动分配的主键ID号。因为您必须首先存储它们才能获得指定的ID,但这并不总是可行的,但对于您的应用程序来说,哲学上听起来正确。

虽然有许多警告,但您也可以推出自己的产品。例如。应用程序启动的时间戳与一些内部计数器连接在一起。只要意识到碰撞风险,即使不太可能,例如两个应用程序同时启动,或者系统时钟不正确。考虑到其他更可靠的策略的存在,我不认为这种方法是严重使用的。

无论你使用什么,我建议最终还将它用作数据库中的主键。它会为你简化整体的事情,并且在数据库中有两个唯一的ID(例如UUID加上自动生成的主键)使你的数据库非标准化(https://en.m.wikipedia.org/wiki/Database_normalization)。