Mathuuid
uuid. Универсальный уникальный идентификатор [3.0.8]
| |
^math:uuid[]
Выдает случайную строку вида…
22C0983C-E26E-4169-BD07-77ECE9405BA5
Примечание: на некоторых операционных системах выдает псевдослучайную строку.
Удобно использовать, когда трудно обеспечить или вообще нецелесообразно использовать сквозную нумерацию объектов.
Например, при распределенных вычислениях.
UUID также известен как GUID.
Пример
В разных филиалах компании собираются заказы, которые периодически отправляются в центральный офис. Чтобы обеспечить уникальность идентификатора заказа используем 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. |
xxxxxxxx-xxxx-4xxx-{8,9,A,B}xxx-xxxxxxxxxxxx
Подробная информация о UUID доступна здесь: http://www.opengroup.org/onlinepubs/9629399/apdxa.htm