2012-12-28 15 views
8

thể trùng lặp:
Is a GUID unique 100% of the time?Guid độc đáo Trên máy tính khác nhau

Sau khi đọc tất cả các bài viết trên Guid, vẫn Tôi không rõ ràng về một điều đơn giản:

Guids tạo ra bởi khác nhau máy cũng duy trì tính độc đáo của chúng hay không.

Tôi đã đọc về guid độc đáo trên máy tính duy nhất, nhưng tôi vẫn không biết về tính độc đáo với các máy khác nhau

+0

Làm thế nào để hai hệ thống quản lý rằng nó phải tạo ra một hướng dẫn khác nhau ... Máy phát điện guid hoạt động như thế nào? –

+0

Chúng là ngẫu nhiên. Có rất nhiều kết hợp ngẫu nhiên mà chúng tôi chỉ đơn giản là "tin tưởng" rằng nó sẽ là duy nhất. Bạn sẽ không sống đủ lâu để xem một bản dupe - trừ khi bạn đang sử dụng guids tuần tự :). –

+2

Lấy một số ngẫu nhiên từ 1 đến 100. Làm lại lần nữa. Các tỷ lệ cược của bạn nhận được cùng một số lần thứ hai là 1 trong 100. Bây giờ lấy một số ngẫu nhiên giữa 1 và 5,316,911,983,139,663,491,615,228,241,121,400,000. Con số đó không có tên. –

Trả lời

4

GUID "thực tế" phổ dụng duy nhất.

GUID là số nguyên 128 bit (16 byte) có thể được sử dụng trên tất cả máy tính và mạng ở bất kỳ nơi nào có mã nhận diện duy nhất. Số nhận dạng như vậy có xác suất rất thấp bị trùng lặp.

Từ MSDN

+0

"phổ" ngụ ý "các máy khác nhau", vì tất cả các máy là một phần của "vũ trụ" –

+0

BUt làm thế nào để hai hệ thống quản lý nó phải tạo ra một hướng dẫn khác nhau. mỗi lần?? –

+0

Đọc [Thuật toán thế hệ hướng dẫn] (http://en.wikipedia.org/wiki/Globally_unique_identifier#Algorithm) trên wikipedia. – Tilak

12

Nó thường được chấp nhận rằng một ngẫu nhiên GUID mới sẽ luôn luôn là duy nhất. Có lẽ điều này không đúng, nhưng khả năng tạo ra một trò lừa bịp quá nhỏ, chúng ta không cần phải quan tâm đến nó.

Các tỷ lệ cược của việc tạo ra hai guids giống hệt nhau là 1 trong 5.316.911.983.139.663.491.615.228.241.121.400.000

Vì vậy, nếu bạn tạo ra 1 triệu guids trên 1 triệu máy tính, tỷ lệ cược tạo ra một bản sao là: 1 trong 5.316.911.983.139.663.491.615.228

Đi 1 tỷ guids trên 1 tỷ máy tính, tỷ lệ tạo ra một khoản tiền là: 1 trong 5.316.911.983,139,663,491 (tức là 5,3 nghìn tỷ).

Các con số tự nói lên, bạn sẽ không tạo ra bản dupe.

Trong trường hợp bạn đang tự hỏi mình đang nhận những con số này ở đâu, phần giá trị của GUID là 122 bit. 2^122 là 5,3169119831396634916152282411214 x 10^36

Một số nhân vật điên hơn ...
Nếu bạn tạo 1 triệu guids mỗi giây, nó sẽ mất 168.486.464.147.580.370.470.736 năm để xác suất đảm bảo một trùng lặp.

@viggity đề cập đến một số guids có 48 bit được thực hiện bởi địa chỉ mac, các con số vẫn đáng kinh ngạc do đó khả năng chi trả mất các bit đó. Lấy ví dụ trên là 2 triệu guids mỗi giây (trên cùng một máy tính), nó vẫn sẽ mất 598.584.166 năm để đảm bảo một sự lừa gạt. Đó là 600 triệu năm. Đó là thời gian dài hơn cuộc sống đã tồn tại trên Trái đất. Hoặc nếu bạn là một nhà sáng tạo trẻ Trái đất, đó là ít nhất 60 nghìn lần tuổi thọ của Trái Đất.

+2

Chỉ cần thêm vào cuộc thảo luận, một trích dẫn từ mục Wikipedia về GUID: 'Một số triển khai tạo GUID thiếu sót dựa trên các trình tạo số giả ngẫu nhiên sử dụng các nguồn hạt giống số ngẫu nhiên có thể dự đoán được'. Vì vậy, toán học có 2^122 giá trị có thể (6 bit dành để chỉ ra một GUID ngẫu nhiên), nhưng đối với thực tế có nghĩa là nó có thể bị giới hạn bởi hàm RND. – OnoSendai

+1

+1 cho thổi tâm trí của tôi với khả năng – JOpuckman

+1

Hoàn toàn off-topic, một người sáng tạo có thể sẽ sử dụng 14 bit GUIDS, có thể thách thức một GUID 122 bit, tuyên bố nó đại diện cho một số lớn hơn tuổi của trái đất và do đó không phải là thực. –

2

Tôi nhớ đã nghe ở đâu đó rằng nếu bạn hình dung không gian địa chỉ IPv4 (32 bit) như là kích thước của tem bưu chính, IPV6 (128 bit) là kích thước của hệ thống năng lượng mặt trời của chúng ta. Tạo một dupe sẽ không xảy ra.

Ngoài ra, nếu bạn có nhiều khả năng nhận được một máy trùng lặp hơn hai máy khác nhau vì hầu hết các thuật toán tạo Guid sẽ nhúng địa chỉ MAC máy tính của bạn trong guid (48 bit). Mặc dù có các thuật toán không nhúng địa chỉ MAC và chỉ hoàn toàn là ngẫu nhiên. xem: http://guid.us/

Chỉnh sửa: ví dụ tỷ lệ thú vị khác thể tích trái đất xấp xỉ 10^27 cm khối. có nghĩa là mỗi centimét khối cho TOÀN CẦU TOÀN CẦU của trái đất có thể có 340.000.000.000 guids tất cả cho chính nó. con số này rất lớn.

Ngoài ra, mỗi NANO mét vuông của bề mặt trái đất có thể có khoảng 650.000 guids tất cả cho chính nó.

+0

> hầu hết các thuật toán tạo Guid sẽ nhúng địa chỉ MAC máy tính của bạn vào trong guid (48 bit) Wow, thật ngớ ngẩn. Trích xuất 48 bit cho điều đó? Có lý do gì để làm điều đó không? – vbullinger

+0

http://guid.us/Test/GUID cho thấy CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC là một hướng dẫn hợp lệ –

+3

@vbullinger Có, có một lý do, nó là để ngay cả khi phần còn lại của GUID là giống nhau (nó sử dụng dấu thời gian, do đó, ý tưởng là hai máy có thể cố tạo một GUID cùng một lúc) sẽ không va chạm. GUIDs như vậy đã rơi ra khỏi thực tế mặc dù; những ngày này nó phổ biến hơn nhiều để xem GUIDs hoàn toàn dựa trên một số ngẫu nhiên lớn. – Servy