در این آموزش، با نوع داده PostgreSQL UUID و نحوه تولید مقادیر UUID با استفاده از یک ماژول ارائه شده آشنا خواهید شد.
UUID مخفف Universal Unique Identifier است که توسط RFC 4122 و سایر استانداردهای مرتبط تعریف شده است.
مقدار UUID یک کمیت ۱۲۸ بیتی است که توسط یک الگوریتم تولید میشود و در سراسر جهان با استفاده از همان الگوریتم، یکتایی را تضمین میکند.
۴۰e6215d-b5c6-4896-987c-f30f3678f608
۶ecd8c99-4036-403d-bf84-cf8400f67836
۳f333df6-90a4-4fda-8dd3-9485d27cee36
یک UUID یک توالی از ۳۲ رقم هگزادسیمال است که در گروههایی با خط فاصله از هم جدا شدهاند.
به دلیل ویژگی یکتایی خود، UUID اغلب در سیستمهای توزیع شده یافت میشود زیرا تضمین بهتری نسبت به نوع داده SERIAL برای یکتایی در یک پایگاه داده واحد دارد.
برای ذخیره مقادیر UUID در پایگاه داده Postgre، از نوع داده UUID استفاده میکنید.
Postgre یک تابع برای تولید UUID فراهم میکند:
gen_random_uuid()
تابع gen_random_uuid() یک UUID نسخه ۴ (تصادفی) برمیگرداند. به عنوان مثال:
SELECT gen_random_uuid();
خروجی:
gen_random_uuid
————————————–
d6eb621f-6dd0-4cdc-93f5-07f51b249b51
(۱ row)
ما یک جدول ایجاد میکنیم که کلید اصلی آن از نوع داده UUID است. علاوه بر این، مقادیر ستون کلید اصلی به طور خودکار با استفاده از تابع gen_random_uuid() تولید میشوند.
ابتدا، جدول contacts را ایجاد کنید:
CREATE TABLE contacts (
contact_id uuid DEFAULT gen_random_uuid(),
first_name VARCHAR NOT NULL,
last_name VARCHAR NOT NULL,
email VARCHAR NOT NULL,
phone VARCHAR,
PRIMARY KEY (contact_id)
);
در این دستور، نوع داده ستون contact_id UUID است.
ستون contact_id دارای یک مقدار پیشفرض است که توسط تابع gen_random_uuid() فراهم میشود. بنابراین، هر زمان که یک سطر جدید وارد کنید بدون مشخص کردن مقدار برای ستون contact_id، Postgreتابع gen_random_uuid() ا برای تولید مقدار آن فراخوانی میکند.
سپس، برخی دادهها را به جدول contacts وارد کنید:
INSERT INTO contacts ( first_name, last_name, email, phone)
VALUES
(‘John’, ‘Smith’, ‘john.smith@example.com’, ‘۴۰۸-۲۳۷-۲۳۴۵’),
(‘Jane’, ‘Smith’, ‘jane.smith@example.com’, ‘408-237-2344’),
(‘Alex’, ‘Smith’, ‘alex.smith@example.com’, ‘408-237-2343’)
RETURNING *;
خروجی:
contact_id | first_name | last_name | email | phone
————————————–+————+———–+————————+————–
ca61da8c-938a-48a6-8eb6-55aa08cd1b08 | John | Smith | john.smith@example.com | 408-237-2345
fe2af584-8576-4d0e-b10d-6ec970732f8e | Jane | Smith | jane.smith@example.com | 408-237-2344
۱۴۱aefe8-f553-43b9-bfbf-91361e83b15e | Alex | Smith | alex.smith@example.com | 408-237-2343
(۳ rows)
خروجی نشان میدهد که ستون contact_id توسط مقادیر UUID تولید شده توسط تابع gen_random_uuid() پر شده است.
استفاده از ماژول uuid-ossp در نسخههای قدیمی Postgre
اگر از نسخه قدیمی Postgre استفاده میکنید، نیاز به استفاده از یک ماژول شخص ثالث به نام uuid-ossp دارید که الگوریتمهای خاصی برای تولید UUID فراهم میکند.
برای نصب ماژول uuid-ossp، از دستور CREATE EXTENSION به شرح زیر استفاده کنید:
CREATE EXTENSION IF NOT EXISTS “uuid-ossp”;
عبارت IF NOT EXISTS به شما اجازه میدهد از نصب مجدد ماژول جلوگیری کنید.
اگر میخواهید یک مقدار UUID تولید کنید، میتوانید از تابع uuid_generate_v4() استفاده کنید. به عنوان مثال:
SELECT uuid_generate_v4();
خروجی:
uuid_generate_v4
————————————–
۳۵۱c1afe-21b2-486c-951b-66bc9e852530
(۱ row)
برای اطلاعات بیشتر در مورد توابع تولید UUID، به مستندات ماژول uuid-ossp مراجعه کنید.
UUID مخفف Universal Unique Identifier است.
از تابع gen_random_uuid() برای تولید یک UUID نسخه ۴ (تصادفی) استفاده کنید.