2017-02-12 37 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)。