Перейти к содержимому

Как сгенерировать uuid в postgresql

  • автор:

Как сгенерировать 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

Как сгенерировать 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

Тип данных uuid сохраняет универсальные уникальные идентификаторы (Universally Unique Identifiers, UUID), определённые в RFC 4122, ISO/IEC 9834-8:2005 и связанных стандартах. (В некоторых системах это называется GUID, глобальным уникальным идентификатором.) Этот идентификатор представляет собой 128-битное значение, генерируемое специальным алгоритмом, практически гарантирующим, что этим же алгоритмом оно не будет получено больше нигде в мире. Таким образом, эти идентификаторы будут уникальными и в распределённых системах, а не только в единственной базе данных, как значения генераторов последовательностей.

UUID записывается в виде последовательности шестнадцатеричных цифр в нижнем регистре, разделённых знаками минуса на несколько групп, в таком порядке: группа из 8 цифр, за ней три группы из 4 цифр и, наконец, группа из 12 цифр, что в сумме составляет 32 цифры и представляет 128 бит. Пример UUID в этом стандартном виде:

a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11

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

A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11 a0eebc999c0b4ef8bb6d6bb9bd380a11 a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11

Выводится значение этого типа всегда в стандартном виде.

В PostgreSQL встроены функции хранения и сравнения идентификаторов UUID, но нет внутренней функции генерирования UUID, потому что не существует какого-то единственного алгоритма, подходящего для всех приложений. Сгенерировать UUID можно с помощью дополнительного модуля uuid-ossp, в котором реализованы несколько стандартных алгоритмов, а можно воспользоваться модулем pgcrypto, где тоже есть функция генерирования случайных UUID. Кроме того, можно сделать это в клиентском приложении или в другой библиотеке, подключённой на стороне сервера.

Пред. Наверх След.
8.11. Типы, предназначенные для текстового поиска Начало 8.13. Тип XML

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

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

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