2010-07-10 55 views
2

我現在很困惑MongoDB可以爲單個服務器生成多少個唯一ID。當然,對於多個服務器,它們的id對象的服務器部分也會發生變化,但是對於一臺服務器,唯一可以改變的部分看起來是pid部分(2位數)和遞增部分(4位數) 。如果我對此有錯,請糾正我。MongoDB可以爲單個服務器生成多少個唯一的ID?

由於只有6個十六進制數字發生了變化,我非常肯定,單個服務器只有16777216個可能的組合。

我問這個問題的原因是因爲我正在考慮使用MongoDB來存儲數十億條獨特的記錄,並且數量會不斷增長。

使用MongoDB進行這種工作是否安全?如果我犯了數學錯誤或邏輯錯誤,我很抱歉。

謝謝!

回答

3

你應該安全。如果你讓MongoDB本身生成id,它會生成一個12-byte value,其中4個字節是從epoch開始的秒數,3個字節是計數器。這對於每個服務器超過7.20×10^16(即2 ^(7×8))個文檔和/或每個服務器每秒超過1600萬(即2×(3×8))是足夠的。

+0

非常感謝您的幫助!在這種情況下,我懷疑我會耗盡獨特的ID。 ;) – 2010-07-10 20:22:17