1 мая 2012 г.

GUID. Часть первая


Автор: Эрик Липперт.
Оригинал статьи: GUID Guide, part one.


Что такое GUID? Это сокращение расшифровывается как "globally unique identifier" (глобально уникальный идентификатор); GUID также называют UUID ("universally unique identifier" – повсеместно уникальный индентификатор). Непонятно, зачем нужны два практически одинаковых названия для одного и того же, тем не менее они есть. GUID – это 128-разрядное целое число. Удобная для человека форма представляет собой шестнадцатиричный шаблон вида {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}.



Назначение GUID – однозначно идентифицировать что-то, так чтобы мы могли ссылаться на что-то посредством идентификатора и быть уверены, что всем понятно, на что мы ссылаемся. Рассмотрим эту проблему на примере книг. Ссылаться на книгу посредством цитирования всего её содержимого при каждом упоминании книги обременительно. Вместо этого в качестве идентификатора мы даём каждой книге название. С таким индентификатором есть проблема: множество разных книг могут иметь одинаковое название. У меня на столе три разных книги с названием "Язык программирования C#"; чтобы сослаться на одну из них, мне надо указать номер издания. Однако любой издатель может опубликовать книгу "Язык программирования C#, четвёртое издание", отличную от других.
Издатели решили данную проблему созданием уникального идентификатора для каждой книги – международного стандартного книжного номера, или ISBN (International Standard Book Number). Это 13-значный десятичный код, имеющийся в виде штрих-кода почти на каждой книге*. Как издатели присваивают уникальный номер каждой из миллионов книг? Они разделяют и властвуют; каждая цифра ISBN имеет собственное значение. Каждой стране назначается определённый диапазон номеров ISBN; затем каждому издательству выделяется своё подмножество номеров. Издатели сами решают, как присваивать номера своим книгам. У моих книг по C# такие ISBN: 978-0-321-15491-6, 978-0-321-56299-9 и 978-0-321-74176-9. Вы заметите, что первые семь цифр совпадают; они обозначают, что это издательская отрасль (978), что книга издана в анлоязычном регионе (0) издательством «Addison-Wesley» (321). Следующие пять цифр выбраны по усмотрению издательства, последняя цифра – контрольная сумма. Если я захочу однозначно идентифицировать четвёртое издание спецификации C#, мне не нужно указывать полное название; я могу просто указать номер книги, 978-0-321-74176-9, и кто угодно может точно определить, о какой книге я говорю.
Важная и легко заметная особенность системы уникальности ISBN заключается в том, что она работает лишь, когда все используют её добросовестно. Если недобросовестный издатель решит сознательно издавать книги с номерами ISBN существующих книг, идентификатор станет бесполезным, потому что он больше не идентифицирует книгу однозначным образом. Номера ISBN и GUID – это не система безопасности; ISBN и GUID предотвращают случайные конфликты. Аналогично, светофор лишь предотвращает случайные столкновения, если все соблюдают правила дорожного движения; если кто-то решит ехать на красный свет, возможны аварии. Светофор не может остановить тех, кто сознательно пытается устроить столкновение.
Приятная особенность системы ISBN состоит в том, что можно "расшифровать" ISBN и кое-что узнать о книге прямо по её номеру. Но есть и серьёзный недостаток: слишком дорогое управление. Должно быть международное соглашение о форме идентификатора и о том, что обозначают коды отрасли и языка. В каждой стране должна быть организация (правительственный орган или частные компании, заключившие договор с правительством) для назначения номеров издателям. Получение уникального ISBN может стоить сотни долларов.
Для GUID проблема стоимости отсутствует; GUID бесплатен и не требует управления уникальностью. GUID – это число, которое можно сгенерировать самостоятельно, при этом будет уверенность, что никто в мире не сгенерирует точно такое же число. Похоже на волшебство. Как это работает? В следующий раз мы посмотрим, как достигается эта волшебная особенность.
* Внимательный читатель отметит, что в США на книгах два штрих-кода. Первый – это ISBN; второй – это цифра 5 и 4-значное число, которое представляет собой рекомендуемую издателем цену книги в центах.

Комментариев нет:

Отправить комментарий