Статический метод :uuid
Универсальный уникальный идентификатор версии 4.
^math:uuid[]
^math:uuid[опции]
Метод выдает случайную строку вида: 22C0983C-E26E-4169-BD07-77ECE9405BA5
UUID (также известен как GUID) удобно использовать, когда трудно обеспечить или вообще нецелесообразно использовать сквозную нумерацию объектов. Например, при распределенных вычислениях. При работе с базами данных эффективнее использовать UUID версии 7.
Можно задать хеш опций: [3.4.6]
$.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
Метод создает UUID версии 4, основыванный на случайных числах, а не на времени.
В UUID не все биты случайны, и это так и должно быть.
xxxxxxxx-xxxx-4xxx-{8,9,A,B}xxx-xxxxxxxxxxxx
Подробная информация о UUID версии 4 доступна по ссылке: www.rfc-editor.org/rfc/rfc9562.html