Для чего нужен гуид

Евангелие от GUID

Разбираясь с новым Visual C# 2008 (он настолько бесплатный для начинающих разработчиков, что я не удержался), нашел новое для себя слово в науке и технике — GUID.

ПС: Если будет интересно, то выложу перевод второй части, где автор отвечает на комменты к первой статье.

Евангелие от GUID

В Евангелие от GUID есть только одна заповедь:

I. Всегда используй GUID для уникальной идентификации строки таблицы.

При приеме новых сотрудников в команду это — одно из первых правил, которым я их обучаю. Почти всегда поначалу они смотрят на меня с видом щенка с торчащими ушами и склоненной набок головой, как бы говоря «как это?»

1) Мне не нужно совершать дополнительных выборок, а это — увеличение производительности!

Существует множество причин для использования GUID в качестве первичного ключа. Главная для меня напрямую связана с тем, как я строю объектные модели. Я предпочитаю создавать «new» экземпляр объекта без совершения выборки. Так, создавая объект Order (заказ) я не буду обращаться к базе данных для получения OrderID (OrderGUID в моем мире), как я бы делал в случае с int OrderID. На этом уровне еще не слишком впечатляет, да? Подумайте вот о чем: я создаю объект Order с OrderGUID, потом объекты OrderLineItem (строки заказа) с OrderLineItemGUID без ЕДИНОГО разрыва обращения к БД. В случае с int я бы сделал 11 обращений.

Следующая причина всегда использовать GUID — объединение данных (merging), оказывавшееся необходимым бессчетное количество раз. До того как я увидел свет, я тоже использовал int или что-то еще, чтобы сделать строку уникальной, но когда мне приходилось сливать данные из раных источников, я делел специальные преобразования.

DB1 (Клиент 1):
Order (таблица заказов)
OrderID = 1
CustomerID = 1

DB2 (Клиент 2):
Order
OrderID = 1
CustomerID = 1

Если Клиент 1 приобретает Клиента 2 и мне нужно слить их данные в единую БД, мне придется поменять чьи-то OrderID и CustomerID на какие-нибудь int значения, которые не используюся, после чего сделать update большому количеству записей, а, возможно и поплясать с бубном и с опорными значениями (seed values). Умножьте это на десятки таблиц, учтите миллионы строк данных, и у бедитесь, что передо мной стоит ДЕЙСТВИТЕЛЬНО сложная задача, которая потребует дофига тестирования после написания SQL и/или кода.

Однако, если я следую Евангелию от GUID:

В этом случае, все, что нужно сделать сводится к обычной вставке всех строк из одной БД в другую. Никаких преобразований, никаких замороченных тестов, просто, удобно и действенно. Недавно мне пришлось проделать эту операцию с БД двух моих клиентов AT&T и Cingular. Все «преобразование» заняло 45 минут.

Другой простой пример: представьте, что ваши клиенты часто работают удаленно в оффлайне, и вам приходится закачивать их данные в общую БД при подключении. Теперь это проще, чем у ребенка конфету отнять… © Если вы верите в GUID. Вы можете легко таскать данные между базами.

3) Типо-независимость

Например, чтобы получить все заметки по поставщику, достаточно создать простую связь (join) Note.ParentGUID к Vendor.VendorGUId. Не нужны никакие индикаторы типов, не нужно выдумывать, какие таблицы связывать, не нужно кучи ссылочных таблиц, чтобы понять с каким типом объекта связана строка.

Вы удивитесь, узнав насколько часто используется этот небольшой прием. Недавно мы добавили «аудит» к одному из наших приложений, в котором хотели выяснить кто что удалял, добавлял или изменял в БД. Мы просто добавили несколько строчек кода к методу DataContext SubmitChanges() (мы используем только LINQ в этом приложении) для создания соответствующей записи в таблице аудита. При создании нового объекта или типа в приложении запись в эту таблицу происходит автоматически, что позволяет нам не париться написанием специального «аудиторского» кода при добавлении новых типов данных в приложении.

Существует много менее очевидных причин для использования GUID, но есть одна, которую я не предвидел заранее и за которую я благодарю GUID, ибо он и только он спас миллионы долларов моему клиенту… да, я сказал МИЛЛИОНЫ!

Я разрабатывал систему управления автоматическими выплатами за размещение рекламы для крупного клиента. Они должны были иметь возможность по нажатию кнопки оплачивать счета общей суммой в миллионы долларов. В двух словах, по нажатию кнопки наша система генерирует файл с очередью и отправляет его их платежному серверу, который сгенерирует чеки… и денежки уйдут. Конечно, я использовал GUID, чтобы идентифицировать все и вся, поэтому когда платежный сервер генерировал файл сверки, я легко мог прогнать его по своей базе.

На нашем сайте была развернута рабочая БД клиента и тестовая БД, слегка устаревшая копия рабочей (на пару месяцев). В процессе тестирования кто-то на их стороне увидел один из наших тестовых файлов с очередью оплат и, не долго думая, скормил их платежному серверу. Ну, дальше вы поняли… Клиент заплатил куче действительных поставщиков контента дважды (один раз по реальному запросу, второй раз — по тестовому), а также еще и не совсем нормальным поставщикам (например тем, что уже не размещали рекламу, ведь тестовая БД устарела на пару месяцев). Вот так, без каких-либо косяков с моей стороны, я получил ужасную помойку в данных… ну по крайней мере так думал мой клиент. Однако, поскольку все мои записи о выплатах имели GUID, я мог легко выделить те записи, что пришли из тестовой базы, чтобы отменить платежи по ним. Представьте, если бы я использовал INT, у меня не было бы способа узнать из какой базы пришел запрос PaymentID = 1000, например.

Ну так как же это помогло спасти миллионы? Просто… умножьте тысячи запросов на штраф за отмену платежа ($20-30). И еще на три, поскольку такая ошибка повторилась три раза!

Ну а есть ли недостатки у GUID?

Если кратко, то да, есть. Однако они, настолько незначительны, что не могут изменить моего мнения. Наиболее очевидный из них — это написание SQL запросов вручную (кгда надо что-то найти).

SELECT * FROM ORDER WHERE ORDERID = 12

Еще один недостаток — небольшое снижение производительности у связей, построенных на базе gUID, по сравнению с INT. Но по моему опыту даже при использовании таблиц с многомиллионным количеством строк, это никогда не становилось проблемой. Несколько миллисикунд задержки — небольшая цена за все прелести GUIDа.

Опробуйте эту технику в каком-нибудь небольшом проекте, особенно если все еще настроены скептично. Думаю, она окажется более полезной чем вы могли мечтать.

Источник

Первичный ключ – GUID или автоинкремент?

Зачастую, когда разработчики сталкиваются с созданием модели данных, тип первичного ключа выбирается «по привычке», и чаще всего это автоинкрементное целочисленное поле. Но в реальности это не всегда является оптимальным решением, так как для некоторых ситуаций более предпочтительным может оказаться GUID. На практике возможны и другие, более редкие, типы ключа, но в данной статье мы их рассматривать не будем.

Ниже приведены преимущества каждого из вариантов.

GUID можно генерировать как на клиенте, так и самой базой данных — уже два варианта. К тому же, в MS SQL есть две функции для получения уникального идентификатора — NEWID и NEWSEQUENTIALID. Давайте разберемся, в чем их отличие и может ли оно быть существенным на практике.

Если использовать Entity Framework Code First, и объявить первичный ключ вот таким образом

в базе данных будет создана таблица с первичным кластерным ключом, который имеет значение по умолчанию NEWSEQUENTIALID(). Сделано это из соображений производительности. Опять же, в теории, вставлять новое значение в середину списка более накладно, чем добавление в конец. База данных, конечно же, не массив в памяти, и вставка новой записи в середину списка строк не приведет к физическому сдвигу всех последующих. Тем не менее, дополнительные накладные расходы будут — разделение страниц (page split). По итогу также будет сильная фрагментация индексов, которая может отразиться на производительности выборки данных. Неплохое объяснение того, как происходит вставка данных в кластеризованую таблицу, можно найти в ответах форума по этой ссылке.

Обратите внимание на то, что без специальной перестановки байт, GUID нельзя отдавать. Идентификаторы получатся корректные, но с точки зрения SQL сервера — непоследовательные, поэтому никакого выигрыша по сравнению с «обычным» GUID даже теоретически не получится. К сожалению, ошибочный код приведен во многих источниках.

К списку остается добавить пятый вариант — автоинкрементный первичный ключ. Других вариантов у него нет, так как на клиенте его генерировать нормально не получится.

С вариантами определились, но есть еще один параметр, который следует учесть при написании теста — физический размер строк таблицы. Размер страницы данных в MS SQL — 8 килобайт. Записи близкого или даже большего размера могут показать более сильный разброс производительности для каждого из вариантов ключа, чем на порядок меньшие записи. Чтобы обеспечить возможность варьировать размер записи, достаточно добавить в каждую из тестовых таблиц NVARCHAR поле, которое затем заполнять нужным количеством символов (один символ в NVARCHAR поле занимает 2 байта).

Тестирование

По этой ссылке находится проект с программой, которая была разработана с учетом указанных выше соображений.

Источник

Что такое GUID и зачем он нужен

Как‐то в один прекрасный день корпорация Open Software Foundation придумала концепцию UUID — Universally Unique Identifier, вселенски уникального идентификатора. Она взяла 128‐битное число и написала для его вычисления специальный алгоритм, более‐менее равномерно выдающий значения из такого огромного диапазона. Вероятность выдачи алгоритмом двух одинаковых чисел невелика, на практике можно говорить, что любое новое число UUID будет уникально.

Корпорация Microsoft взяла на вооружение эту мысль и число UUID без изменения, назвала его немного по‐другому: GUID, то есть Globally Unique Identifier, глобально уникальный идентификатор.

Применение

Корпорация Microsoft применяет GUID в следующих случаях:

Ты тоже можешь использовать GUID в своих целях, например, так:

Определение GUID

GUID — это беззнаковое целое 128‐битное число. Ничего таинственного и сверхъестественного.

Тип данных «128‐битное число» в языке программирования не предусмотрен, но программисты из Microsoft элегантно выкрутились из ограничения, представив такое число в виде стуктуры.

Структура GUID

В заголовочном файле win\guiddef.bi (входит в windows.bi ) тип данных GUID объявлен в виде структуры:

По порядку следования байт числа:

IID и CLSID

IID (идентификатор интерфейса) и CLSID (идентификатор класса) — это псевдонимы GUID:

REFGUID, REFIID и REFCLSID

Объявление GUID

В тексте

Ты уже наверняка где‐нибудь встречал похожие строки GUID:

Первая группа кодирует 32‐битное беззнаковое целое, вторая и третья группы — два 16‐битных беззнаковых целых, четвёртая и пятая — восемь 8‐битных беззнаковых целых.

В коде

Но этот вариант недостаточно гибкий, так как работает на уровне одного файла (одной единицы трансляции).

Через макросы

В случае, когда одно и то же значение GUID необходимо использовать в нескольких файлах, то его объявляют в одном из общих заголовочных файлов как внешнюю константную переменную:

Затем создают заголовочный файл Guids.bas с макросами:

И уже файле реализации Guids.bas прописывают непосредственно значения GUID через макросы:

Функции для работы с GUID

CoCreateGUID

Параметры

Возвращаемое значение

Макросы IsEqualGUID, IsEqualIID, IsEqualCLSID и InlineIsEqualGUID

Предназначены для сравнения двух GUID, IID или CLSID.

Макросы IsEqualGUID, IsEqualIID и IsEqualCLSID сравнивают два GUID через функцию memcmp(), а InlineIsEqualGUID делает это в коде, побайтово.

StringFromGUID2

Заполняет буфер строкой из GUID в формате реестра.

Параметры

Возвращаемое значение

В случае успеха функция возвратит количество записанных символов, включая нулевой.

В случае ошибки, когда буфер под строку слишком мал, вернёт 0.

StringFromIID и StringFromCLSID

Возвращают строку из IID или CLSID в формате реестра.

Параметры

Возвращаемое значение

IIDFromString и CLSIDFromString

Заполняют структуры IID или CLSID из строки GUID в формате реестра.

Параметры

Возвращаемое значение

Примеры

Генератор GUID

В этом простом примере посмотрим как создать GUID и вывести его на консоль.

«Пакетные файлы» создали этот сайт 11 марта 2016 года

Источник

Что такое GUID? Почему и где я должен его использовать?

Что такое GUID? Почему и где я должен его использовать?
Я видел ссылки на GUID во многих местах и ​​в википедии, но не очень понятно, где вы можете его использовать. Если бы кто-то мог ответить на это, было бы хорошо. Благодаря

ОТВЕТЫ

Ответ 1

GUID технически обозначает глобально уникальный идентификатор. На самом деле это 128-битная структура, которая вряд ли когда-либо повторит или создаст столкновение. Если вы выполняете математику, область значений находится в undecillions.

Используйте подсказки, если у вас несколько независимых систем или клиентов, генерирующих идентификатор, который должен быть уникальным.

Например, если у меня есть 5 клиентских приложений, которые создают и вставляют транзакционные данные в таблицу с уникальным ограничением на идентификатор, тогда используйте подсказки. Это предотвращает принуждение клиента сначала запрашивать выданный идентификатор с сервера.

Это также отлично подходит для объектов-заводов и систем, которые имеют множество типов объектов, хранящихся в разных таблицах, где вы не хотите, чтобы любые 2 объекта имели один и тот же идентификатор. Это значительно упрощает реализацию схем кэширования и очистки.

Ответ 2

Они также иногда называются UUID (универсальный уникальный идентификатор).

Ответ 3

В дополнение ко всем остальным ответам, вот генератор GUID онлайн:

GUID (или UUID) является акронимом для «Глобально уникальный идентификатор» (или «Универсальный уникальный идентификатор» ). Это это 128-битное целое число, используемое для определить ресурсы. Термин GUID обычно используемые разработчиками, работающими с технологиями Microsoft, в то время как UUID используется везде.

Насколько уникален GUID?

Как используются GUID?

GUID используются в разработке программного обеспечения как ключи базы данных, компонент идентификаторы, или где угодно иначе действительно уникальный идентификатор обязательный. GUID также используются для идентифицировать все интерфейсы и объекты в COM-программирование.

Ответ 4

Это в основном 128-битное число, которое генерируется в некотором роде (см. RFC 4112 http://www.ietf.org/rfc/rfc4122.txt), что делает почти невозможным дублирование быть сгенерированным. Таким образом, я могу генерировать GUID без какой-либо сторонней организации, которая должна предоставить их мне, чтобы они были уникальными.

Как правило, вы можете представить GUID как серийный номер, который может быть сгенерирован кем-либо в любое время, и они будут знать, что серийный номер будет уникальным.

Другие способы получения уникальных идентификаторов включают получение имени домена. Чтобы обеспечить уникальность доменных имен, вы должны получить их из какой-либо организации (в конечном счете управляемой ICANN).

Поскольку GUID могут быть громоздкими (с человеческой удобочитаемой точки зрения это строка шестнадцатеричных чисел, обычно сгруппированных так: aaaaaaaa-bbbb-cccc-dddd-ffffffffffff), некоторые пространства имен, которым нужны уникальные имена в разных организациях другая схема (часто основанная на именах доменов Интернета).

Таким образом, пространство имен для пакетов Java по соглашениям начинается с имени домена orgnaization (обратного), за которым следуют имена, которые определяются определенным организационным способом. Например, пакет Java можно назвать:

Это означает, что ответственность за столкновение имен становится ответственностью каждой организации.

Ответ 5

Что касается того, когда вам не нужен GUID, это когда счетчик, который вы контролируете (так или иначе, как SERIAL SQL-тип или последовательность), увеличивается. Индексирование «текстового» значения (GUID в текстовой форме) или 128-битного двоичного значения (которое является идентификатором GUID) намного дороже, чем целое число.

Ответ 6

Кто-то сказал, что они концептуально 128-битные случайные значения, и это по существу верно, но немного почитал на UUID (обычно GUID относится к внедрению Microsoft UUID), я вижу, что существует несколько различных версий UUID, и большинство из них на самом деле не случайны. Таким образом, можно создать UUID для машины (или что-то еще) и быть в состоянии надежно повторить этот процесс, чтобы получить тот же UUID по дороге, что важно для некоторых приложений.

Ответ 7

Мне легче думать о них как о просто «128-битных случайных значениях». Это, по сути, то, что они есть. Есть несколько алгоритмов для включения части информации в несколько цифр вашего GUID (поэтому случайная часть становится немного меньше), но все же они довольно большие почти случайные значения.

Поскольку они настолько велики, это чрезвычайно маловероятно, что два GUID будут когда-либо созданы одинаковыми. Для всех практических целей каждый GUID, когда-либо созданный, уникален в мире.

Я оставлю это вам, чтобы выяснить, где их использовать, но в других ответах уже есть несколько примеров. Пусть ваше воображение разразится.:)

Ответ 8

Ответ 9

128-бит глобально уникальный идентификатор. Вы можете генерировать GUID с этого момента до заката, и вы никогда не будете генерировать один и тот же идентификатор GUID дважды, и ни один другой не будет. Они много используются с COM.

Как, например, для чего-то, для чего вы их использовали, мы используем их в одном из наших продуктов. Наши пользователи могут создавать категории и карты на разных устройствах. Мы хотим убедиться, что мы не путаем категорию, созданную на одном устройстве, с категорией, созданной на другой, поэтому важно, чтобы идентификаторы были уникальными независимо от того, кто их генерирует, где они их генерируют и когда они их генерируют. Таким образом, мы используем GUID (фактически мы используем нашу собственную схему с использованием 64-битных чисел, но они похожи на GUID).

Ответ 10

GUID = глобальный уникальный идентификатор.

Используйте его, когда вы хотите однозначно идентифицировать что-то в глобальном контексте.

Ответ 11

GUID означает «глобально уникальный идентификатор», и вы используете его, если хотите, erm, глобально уникальный идентификатор.

В RSS-каналах, например, у вас должен быть GUID для каждого элемента в фиде. Таким образом, программа чтения каналов может отслеживать, прочитал ли вы этот элемент или нет. Без GUID было бы невозможно сказать.

Ответ 12

Если вам нужно создать идентификатор, который должен быть уникальным в течение всего срока службы вашего приложения, вы используете GUID.

Представьте, что у вас есть сервер с сеансами, если вы даете каждому сеансу GUID, вы уверены, что он будет уникальным для каждого сеанса, когда-либо созданного вашим сервером. Это полезно для отслеживания ошибок.

Ответ 13

Одним из особенно полезных приложений GUID, которые я нашел, является их использование для отслеживания уникальных посетителей в webapps, где посетители анонимны (т.е. не вошли в систему или не зарегистрированы).

Ответ 14

Несколько лет назад я работал над системой call-центра ACD, где мы хотели собрать записи подробностей вызовов из нескольких процессоров вызовов в одну базу данных. Я устанавливаю столбец в MS SQL, чтобы генерировать GUID для ключа базы данных, а не использовать системный последовательный идентификатор (столбец идентификации). Тогда потребовалось установить значение по умолчанию для NewID (или генерировать его в коде, но функция NewID() была более безопасной). Конечно, наличие большого значения для ключа может вызвать несколько бровей, но я бы предпочел отказаться от пространства, чем риск столкновения.

Я не видел, чтобы кто-либо обращался с использованием GUID в качестве ключа базы данных, поэтому я думал, что это может помочь узнать, что вы тоже можете это сделать.

Ответ 15

Источник

Что именно является идентификатор GUID? Почему и где я должен его использовать?

Что такое GUID? Почему и где я должен его использовать?
Я видел ссылки на GUID во многих местах, и в Википедии, но не очень ясно, где его использовать. Если бы кто-нибудь мог ответить на этот вопрос, было бы здорово. Спасибо

15 ответов

GUID технически означает глобальный уникальный идентификатор. На самом деле это 128-битная структура, которая является вряд ли чтобы когда-либо повторить или создать столкновение. Если вы делаете математику, домен значений в undecillions.

используйте GUID, когда у вас есть несколько независимых систем или клиентов, генерирующих ID, которые должны быть уникальными.

например, если у меня есть 5 клиентских приложений, создающих и вставляющих транзакционные данные в таблицу это имеет уникальное ограничение на ID, а затем использует GUID. Это предотвращает необходимость принудительного запроса клиентом выданного идентификатора с сервера.

Это также отлично подходит для фабрик объектов и систем, которые имеют множество типов объектов, хранящихся в разных таблицах, где вы не хотите, чтобы любые 2 объекта имели одинаковый идентификатор. Это упрощает реализацию схем кэширования и очистки.

GUID-это комбинация времени (в очень малых долях секунды) (поэтому она гарантированно отличается от любой GUID, определенный до или позже), и номер, определяющий ваше местоположение (иногда берется из MAC-адреса вашей сетевой карты) (так что он наверняка будет отличаться от любого другого GUID, определенного прямо сейчас кем-то другим).

Они также иногда известны как UUID (универсальный уникальный идентификатор).

в дополнение ко всем другим ответам, вот онлайн генератор GUID:

GUID (или UUID) является аббревиатурой «Глобальный уникальный идентификатор» (или «Универсальный Уникальный Идентификатор»). Он это 128-разрядное целое число, используемое для определите ресурсы. Термин GUID-это обычно используется разработчиками с технологиями Microsoft, в то время как UUID используется везде.

насколько уникален GUID?

128-бит достаточно большой и алгоритм генерации достаточно уникален что если 1,0000,000,000 GUIDs в во-вторых были произведены для 1 года вероятность дублировать будет только 50%. Или если каждый человек на Земле создается 600,000,000 там идентификаторы будет только 50% вероятности дубликат.

Как используются GUID?

GUID используются при разработке программного обеспечения как ключи базы данных, компонент идентификаторы, или где угодно else поистине уникальный идентификатор требуемый. GUID также используются для определить все интерфейсы и объекты в Программирование COM.

это в основном 128-битное число, которое генерируется таким образом (см. RFC 4112 http://www.ietf.org/rfc/rfc4122.txt), что делает практически невозможным создание дубликатов. Таким образом, я могу генерировать GUID без какой-либо сторонней организации, которая должна дать их мне, чтобы гарантировать, что они уникальны.

одно широко распространенное использование GUID в качестве идентификаторов для COM-сущностей в Windows (классы, typelibs, интерфейсы и т. д.). Используя GUID, разработчики могут создавать свои com-компоненты, не обращаясь в Microsoft за уникальным идентификатором. Несмотря на то, что идентификация com-сущностей является основным использованием GUID, они используются для многих вещей, которые нуждаются в уникальных идентификаторах. Некоторые разработчики генерируют GUID для записей базы данных, чтобы предоставить им ID, который можно использовать, даже если они должны быть уникальными во многих различных базах данных.

Как правило, вы можете думать о GUID как серийный номер, который может быть создан кем угодно в любое время, и они будут знать, что серийный номер будет уникальным.

другие способы получения уникальных идентификаторов включают в себя получение доменного имени. Чтобы обеспечить уникальность доменных имен, вы должны получить его от какой-либо организации (в конечном счете, управляемой ICANN).

потому что GUID могут быть громоздкими (с читаемой человеком точки зрения они представляют собой строку шестнадцатеричных чисел, обычно сгруппированных следующим образом: aaaaaaaa-bbbb-cccc-dddd-ffffffffffff), некоторые пространства имен, которым нужны уникальные имена в разных организациях, используют другую схему (часто основанную на доменных именах Интернета).

таким образом, пространство имен для пакетов Java по соглашению начинается с доменного имени orgnaization (reversed), за которым следуют имена, определенные в некоторой организации specfic. Например, пакет Java может быть назван:

это означает, что работа с коллизиями имен становится ответственность каждой организации.

пространства имен XML также уникальны аналогичным образом-по соглашению, кто-то, создающий пространство имен XML, должен сделать его » под » зарегистрированным доменным именем под их контролем. Например:

GUID или UUID (глобально против универсально) уникальный идентификатор, ну, уникальный идентификатор:) когда вам нужно что-то действительно уникальное сгенерированное машиной, есть библиотеки, чтобы получить его.

посмотреть GUID в Википедии для сведения.

Что касается того, когда вам не нужен GUID, это когда счетчик, который вы контролируете (так или иначе, как последовательный тип SQL или последовательность), увеличивается. Индексирование» текстового » значения (GUID в текстовой форме) или 128-битного двоичного значения (который GUID) намного дороже, чем целое число.

кто-то сказал, что они концептуально 128-битные случайные значения, и это по существу верно, но сделав небольшое чтение на UUID (GUID обычно относится к реализации Microsoft UUID), я вижу, что существует несколько разных версий UUID, и большинство из них на самом деле не являются случайными. Таким образом, можно создать UUID для машины (или что-то еще) и иметь возможность надежно повторить этот процесс, чтобы получить тот же UUID по дороге, что важно для некоторых приложения.

для меня легче думать о них как просто «128-битные случайные значения». По сути, так оно и есть. Есть некоторые алгоритмы для включения немного информации в несколько цифр вашего GUID (таким образом, случайная часть становится немного меньше), но все же они довольно большие почти случайные значения.

Я оставлю это вам, чтобы выяснить, где их использовать, но в других ответах уже есть некоторые примеры. Пусть ваше воображение одичал. 🙂

128-битный уникальный идентификатор. Вы можете генерировать GUID отныне до заката, и вы никогда не будете генерировать один и тот же GUID дважды, и никто другой. Они используются много с COM.

как например чего-то вы использовали бы их для, мы используем их в одном из наших продуктов. Наши пользователи могут создавать категории и карты на различных устройствах. Мы хотим убедиться, что мы не путаем категорию, сделанную на одном устройстве, с категорией, созданной на другом, поэтому важно эти идентификаторы уникальны независимо от того, кто их генерирует, где и когда они генерируют. Поэтому мы используем GUID (на самом деле мы используем нашу собственную схему, используя 64-битные числа, но они похожи на GUID).

несколько лет назад я работал над системой ACD call center, где мы хотели собрать подробные записи вызовов из нескольких процессоров вызовов в одну базу данных. Я настраиваю столбец в MS SQL для создания GUID для ключа базы данных, а не с помощью системного последовательного идентификатора (столбец идентификаторов). Тогда это требовало установки значения по умолчанию в NewID (или генерации его в коде, но функция NewID () была более безопасной). Конечно, наличие большого значения для ключа может поднять несколько бровей, но я предпочел бы отказаться от пространства, чем рисковать столкновением.

Я не видел ни одного адреса, использующего GUID в качестве ключа базы данных, поэтому я подумал, что это может помочь узнать, что Вы тоже можете это сделать.

идентификатор GUID-глобальный уникальный идентификатор.

используйте его, когда вы хотите однозначно идентифицировать что-то в глобальном контексте.

GUID означает «глобальный уникальный идентификатор», и вы используете его, когда хотите иметь глобальный уникальный идентификатор.

в RSS-каналах, например, вы должны иметь GUID для каждого элемента в ленте. Таким образом, программа чтения ленты может отслеживать, прочитали ли вы этот элемент или нет. Без GUID было бы невозможно сказать.

вы также увидите термин UUID, который означает » универсальный уникальный идентификатор.- В сущности, между ними нет никакой разницы. UUID-более подходящий термин. GUID-это термин, используемый Microsoft.

Если вам нужно создать идентификатор, который должен быть уникальным в течение всего срока службы вашего приложения, вы используете GUID.

представьте, что у вас есть сервер с сеансами, если вы даете каждому сеансу идентификатор GUID, вы уверены, что он будет уникальным для каждого сеанса, когда-либо созданного вашим сервером. Это полезно для отслеживания ошибок.

одно особенно полезное приложение GUID, которое я нашел, использует их для отслеживания уникальных посетителей в webapps, где посетители анонимны (т. е. не вошли в систему или зарегистрированы).

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *