uuid. Универсальный уникальный идентификатор [3.0.8]

^math:uuid[]
^math:uuid[опции[3.4.6]

Выдает случайную строку вида…
    22C0983C-E26E-4169-BD07-77ECE9405BA5

Примечание: на некоторых операционных системах
выдает псевдослучайную строку.

Удобно использовать, когда трудно обеспечить или вообще нецелесообразно использовать сквозную нумерацию объектов.
Например, при распределенных вычислениях.

UUID также известен как GUID.

Можно задать хеш опций:
·$.lower(false/true) - выдавать результат в нижнем регистре, по умолчанию в верхнем.  
·$.solid(false/true) - исключать из результата символы '-', по умолчанию не исключать.  


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

# в разных филиалах происходит наполнение таблицы orders и order_details

# создаем уникальный идентификатор
$order_uuid[^math:uuid[]]


# добавляем запись о заказе
^void:
sql{
   insert into orders
       (order_uuid, date_ordered, total)
   values
       ('
$order_uuid
', '$date_ordered', $total)
}

#цикл по заказанным продуктам вокруг добавления записи о продукте
^void:
sql{
   insert into order_details
       (order_uuid, item_id, price)
   values
       ('$order_uuid
', $item_id$price)
}



# с какой-то периодичностью выбирается часть таблицы orders (и order_details)
# отправляется (^mail:
send[…]) в центральный офис, 
# где части таблиц попадают в общие таблицы orders и order_details
# БЕЗ проблем с повторяющимся order_id


Примечание: Parser создает UUID основываясь на случайных числах, а не времени. Параметры:
·variant = DCE;  
·version = DCE Security version, with embedded POSIX UIDs.  
В UUID не все биты случайны, и это так и должно быть:
xxxxxxxx-xxxx-4xxx-{8,9,A,B}xxx-xxxxxxxxxxxx

Подробная информация о UUID доступна здесь:
http://www.opengroup.org/onlinepubs/9629399/apdxa.htm



In order to add comments you must register.
Copyright © 1997–2021 Art. Lebedev Studio | http://www.artlebedev.ru Дата обновления: 27.01.2021