2010-06-29 21 views
13

Tôi đang làm việc trên một dự án mà tôi cần tạo ra khoảng 1 tỷ GUID.Cơ hội nhận được cùng GUID trong 1 tỷ lần lặp là gì?

Tôi biết GUID không được đảm bảo là duy nhất nhưng độc đáo gần như toàn bộ thời gian.

Nếu tôi tạo ra một tỷ GUID, xác suất sẽ có đối sánh là bao nhiêu?

+0

có thể trùng lặp của [Xung đột GUID có thể?] (Http: // stackoverflow.com/questions/184869/are-guid-collisions-possible) – tanascius

+0

Trong bao lâu một khoảng thời gian bạn sẽ được tạo ra các GUIDs? – overslacked

+0

tất cả sẽ được thực hiện trong một đợt, do đó, tuy nhiên phải mất nhiều thời gian để thực hiện điều đó – Diskdrive

Trả lời

14

http://blogs.msdn.com/b/oldnewthing/archive/2008/06/27/8659071.aspx

.NET GUID gồm

  • 60 bit dấu thời gian,
  • 48 bit nhận dạng máy tính,
  • 14 bit của uniquifier, và
  • sáu bit là cố định

Vì vậy, xác suất UUID được trích dẫn bởi Oscar không hoạt động ở đây. Nhưng nếu bạn tạo tất cả 1 tỷ GUID từ một máy tính, không có cơ hội nhận được bản sao (ngoại trừ bạn đang chơi với đồng hồ ;-)

2

http://en.wikipedia.org/wiki/Uuid#Random_UUID_probability_of_duplicates

n khả

68.719.476.736 = 2^36 = 0,0000000000000004 = 4 × 10^-16)

2.199.023.255.552 = 2^41 = 0,0000000000004 = (4 × 10^-13)

70.368.744.177.664 = 2^46 = 0,0000000004 = (4 × 10^-10)

+0

Anh ấy đang nói về .NET GUIDs, chúng không hoàn toàn ngẫu nhiên, như được giả định trong bài báo. Có những phần gây ra bởi thời gian và xử lý id (?) ... vẫn còn cơ hội nhận được một bản sao trong 1 tỷ GUIDs là rất khó xảy ra trên cùng một máy nó thậm chí có thể là không thể. – Hinek

5

Nếu bạn đang tạo GUIDs từ cùng một máy và sử dụng cùng một thuật toán thì bạn sẽ không bị va chạm.

Các vấn đề liên quan