E.44. uuid-ossp
Модуль uuid-ossp предоставляет функции для генерирования универсальных уникальных идентификаторов (UUID) по одному из нескольких стандартных алгоритмов. В нём также есть функции, выдающие специальные UUID-константы.
E.44.1. Функции uuid-ossp
В Таблице E-30 показаны функции, предназначенные для генерации UUID. Четыре алгоритма для генерации UUID, обозначаемые номерами версий 1, 3, 4 и 5, описаны в стандартах ITU-T Rec. X.667, ISO/IEC 9834-8:2005 и RFC 4122. (Алгоритма версии 2 нет.) Каждый из этих алгоритмов предназначен для различных сфер применения.
Таблица E-30. Функции для генерирования UUID
Эта функция генерирует UUID версии 3 для заданного пространства имён UUID и указанного имени. Пространство имён должно задаваться одной из специальных констант, которые выдаются функциями uuid_ns_*() , перечисленными в Таблице E-31. (Хотя теоретически это может быть любой UUID.) Имя задаёт идентификатор в выбранном пространстве имён.
SELECT uuid_generate_v3(uuid_ns_url(), 'http://www.postgresql.org');
Таблица E-31. Функции, возвращающие UUID-константы
E.44.2. Сборка uuid-ossp
В прошлом этот модуль зависел от библиотеки OSSP UUID, что отразилось в его имени. Хотя библиотеку OSSP UUID всё ещё можно найти по адресу http://www.ossp.org/pkg/lib/uuid/, она плохо поддерживается и её становится всё сложнее портировать на новые платформы. Поэтому модуль uuid-ossp теперь на некоторых платформах можно собирать без библиотеки OSSP. Во FreeBSD, NetBSD и некоторых других ОС на базе BSD подходящие функции формирования UUID включены в системную библиотеку libc. В Linux, OS X и некоторых других платформах подходящие функции предоставляются библиотекой libuuid, которая изначально пришла из проекта e2fsprogs (хотя в современных дистрибутивах Linux она является частью пакета util-linux-ng). Вызывая configure, передайте ключ --with-uuid=bsd, чтобы использовать функции BSD, либо --with-uuid=e2fs, чтобы использовать libuuid из e2fsprogs, либо ключ --with-uuid=ossp, чтобы использовать библиотеку OSSP UUID. В конкретной системе может быть установлено сразу несколько библиотек, поэтому configure не выбирает библиотеку автоматически.
Замечание: Если вам нужны только случайные UUID (версии 4), в качестве альтернативы вы можете использовать функцию gen_random_uuid() из модуля pgcrypto.
E.44.3. Автор
| Пред. | Начало | След. |
| unaccent | Уровень выше | xml2 |
Как сгенерировать uuid в postgresql
UUID (universally unique identifier) — универсальный уникальный идентификатор (подробное определение в Википедии) бывает нужен в случаях, когда обычные числовые идентификаторы не подходят.
В PostgreSQL имеется тип uuid , а для того, чтобы иметь возможность генерировать его автоматически в PostgreSQL 9.3 и выше нужно установить расширение uuid-ossp для базы данных, в которой предполагается его использовать.
Сделать это можно командой:
create extension if not exists "uuid-ossp";
После этого для генерации uuid версии 4 можно использовать функцию uuid_generate_v4() .
Подробности о расширении можно найти в официальной документации.
Как сгенерировать uuid в postgresql
Запись: and-semakin/mytetra_data/master/base/16108693370k09jetb8w/text.html на raw.githubusercontent.com
В PostgreSQL 13 и новее можно генерировать UUID v4 (самый популярный алгоритм) из коробки, без расширений:
Для других алгоритмов UUID придётся использовать расширение (описано ниже).
Чтобы сгенерировать новый UUID прямо в PostgreSQL до версии 13 потребуется активировать специальное расширение:
CREATE EXTENSION IF NOT EXISTS «uuid-ossp»;
Когда расширение создано, можно использовать следующую функцию:
Также можно использовать эту функцию в качестве значения для столбца по умолчанию:
CREATE TABLE tbl
pkey UUID NOT NULL DEFAULT uuid_generate_v1(),
CONSTRAINT pkey_tbl PRIMARY KEY (pkey)
- Вывод диаграмы БД в PostgreSQL
- Размер БД или таблицы в PostgreSQL
- Временно отключить триггеры в PostgreSQL
- Установить схему по умолчанию в PostgreSQL
- Конвертировать integer в boolean в PostgreSQL
- Создать материализованное представление в PostgreSQL
- Создать временную таблицу в PostgreSQL
- Обновить или создать (upsert) строку в PostgreSQL
- Просмотреть определение представления (view definition) в PostgreSQL
- Показать список БД и выбрать БД в psql
- Удалить БД в PostgreSQL
- Переименовать БД в PostgreSQL
- Показать выполняющиеся запросы PostgreSQL
- psql — сохранить пароль для подключения к серверу PostgreSQL
- Задержка/пауза (pg_sleep) в PostgreSQL
- Получить список индексов на таблице в PostgreSQL
- Показать количество строк во всех таблицах в БД в PostgreSQL
- Инвертировать булевое значение в PostgreSQL
- Сменить пейджер в pgcli
- Сайт для работы с планами запросов в PostgreSQL
- Убить зависший запрос в PostgreSQL
- Настроить ограничения для планировщика запросов в PostgreSQL
- Сгенерировать последовательность в PostgreSQL
- Получить количество клиентов, подключенных к БД, в PostgreSQL
- Показать список таблиц в БД в PostgreSQL
- Отключить всех клиентов от БД в PostgreSQL
- Вывод в файл в psql
- Обновить значение в jsonb в PostgreSQL
- Узнать расположение файла конфигурации в PostgreSQL
- Получить размер поля в PostgreSQL
- Отсортировать строки в случайном порядке в PostgreSQL
- Выгрузить результат запроса в файл в PostgreSQL
- Показать установленные и доступные расширения в PostgreSQL
- Запретить подключение к БД в PostgreSQL
- Статистика медленных запросов через pg_stat_statements в PostgreSQL
- Создать базу данных, если она ещё не создана, в PostgreSQL
- Вставить несколько записей одним запросов в PostgreSQL
- Удалить столбец из таблицы в PostgreSQL
- Узнать, какие запросы блокируют друг друга в PostgreSQL
- Оконная функция row_number для нумерации строк в выводе в PostgreSQL
- Оконные функции для ранжирования строк в выводе в PostgreSQL
- Подключиться к PostgreSQL серверу через DSN (строку подключения) через psql
- Убедиться, что при подключении к PostgreSQL было использовано шифрование (SSL/TLS)
- Создать UUID в PostgreSQL
- Вставить данные, полученные из SELECT-запроса в PostgreSQL
- Получить список незавершенных (зависших) транзакций в PostgreSQL
- Создать функцию, которая ничего не возвращает, в PostgreSQL
- Перенести данные из одной таблицы в другую в PostgreSQL
- Арифметические операции над датами в PostgreSQL
- Выбрать таблицу (несколько строк), заполненную константными значениями в PostgreSQL
# PostgreSQL: Generating UUID primary keys
A universally unique identifier (UUID) is a 128-bit number that is generated in a way that makes it very unlikely that the same identifier will be generated by anyone else in the known universe (globally unique).
In PostgreSQL, you can generate UUIDs using the uuid_generate_v4 function from the uuid-ossp extension.

# What is UUID?
UUID stands for Universally Unique Identifier. It is a 128-bit identifier used to uniquely identify information in computer systems and applications. UUIDs are often represented as a string of 36 characters, typically in a format such as «xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx», where each «x» represents a hexadecimal digit.
The purpose of UUIDs is to provide a way to generate identifiers that are highly unlikely to collide with other identifiers, even if they are created on different systems or at different times. This makes UUIDs particularly useful in scenarios where there is a need to uniquely identify objects, entities, or resources in distributed systems, databases, or other applications.
# When to use UUIDs?
You can use UUIDs when you need to generate a globally unique indentifier without using an id generation service, for example, OpenTelemetry
open in new window uses 16-bytes identifiers as a trace id.
Usually, UUIDs are generated by taking 16 random bytes and the uniqueness is based on the sheer quantity, not the generation algorithm. Such identifiers are proven to be unique, but are larger and slightly slower than 64-bit sequential numbers.
UUIDs are slightly slower than 64-bit sequential identifiers. Use them only when you don’t have an easy way to generate smaller sequential identifiers.
# UUID in PostgreSQL
PostgreSQL requires an extension to support UUID column type. The extenstion comes with postgresql-contrib-* package:
sudo apt install postgresql-contrib-14
Then you need to install the extension in each database where you are going to use it:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
# UUID in Go
For working with UUIDs in Go you need to install google/uuid
go get github.com/google/uuid
open in new window works too, but it does not look maintained any more.
# Generating UUIDs
SELECT uuid_generate_v4();
import "github.com/google/uuid" fmt.Println(uuid.New())
# Using UUIDs in models
You can use uuid.UUID type in Bun models like this:
import "github.com/google/uuid" type Story struct ID uuid.UUID `bun:"type:uuid,default:uuid_generate_v4()"` Title string AuthorID uuid.UUID `bun:"type:uuid"` >
UUID field name also works well:
type Story struct UUID uuid.UUID `bun:",pk,type:uuid,default:uuid_generate_v4()"` Title string AuthorUUID uuid.UUID `bun:"type:uuid"` >
# Monitoring performance
open in new window receiver that comes with OpenTelemetry Collector.
open in new window is a valuable component for monitoring applications and infrastructure in distributed environments. It enables efficient data collection, processing, and export to improve observability, troubleshooting, and performance of software systems.
open in new window for OpenTelemetry that supports distributed tracing, metrics, and logs. You can use it to monitor applications and troubleshoot issues.

Uptrace comes with an intuitive query builder, rich dashboards, alerting rules, notifications, and integrations for most languages and frameworks.
Uptrace can process billions of spans and metrics on a single server and allows you to monitor your applications at 10x lower cost.
In just a few minutes, you can try Uptrace by visiting the cloud demo
open in new window (no login required) or running it locally with Docker
open in new window . The source code is available on GitHub