我正在建立一個API,我們需要有一個唯一的ID爲每個神器。身份證代第nosql存儲
我們正在考慮使用GUID,但是看其他apis,比如foursquare/facebook,我們會看到不同的結構,比如:4d7adc94c7fca1431d6125a2,這很小。
那麼是否有在nosql鍵值存儲器上生成id的最佳實踐?
我正在建立一個API,我們需要有一個唯一的ID爲每個神器。身份證代第nosql存儲
我們正在考慮使用GUID,但是看其他apis,比如foursquare/facebook,我們會看到不同的結構,比如:4d7adc94c7fca1431d6125a2,這很小。
那麼是否有在nosql鍵值存儲器上生成id的最佳實踐?
Guids是128位的,它們的生成算法可以確保在任何時間在任何機器上生成的密鑰都是唯一的。
例如,MongoDB使用12byte = 96bit的密鑰。這是有道理的,因爲密鑰是在一組機器中生成的,所以擁有多個密鑰的機會肯定會降低。
無論數據存儲在NoSQL還是關係SQL數據庫中,Ids的問題都是一樣的。集中式密鑰生成器(如增量式Ids)使密鑰大小更小,這對於提高性能有時非常重要。另一方面,這種關鍵性能對性能的影響往往不是太重要,更重要的是,集中式密鑰生成被認爲是分佈式系統的殺手。
看到 http://www.mongodb.org/display/DOCS/Object+IDs
我認爲最好的做法中也是GUID和BSON的ObjectId。由於分佈式系統是主流,集中式ID現在非常流行。您的決定還取決於Guid生成器的可用性。
我懷疑他們正在使用整個數據或一些自然鍵的散列。 –