Có, Tomas Vondra đã tạo ra một phần mở rộng uuid tuần tự cho PostgreSQL dựa trên MSSQL new resultentialid chỉ ít dự đoán được.
Khóa chính được sử dụng bởi các chỉ mục để tìm dữ liệu nhanh hơn vì chúng là tuần tự, do đó bằng cách sử dụng UUID hoàn toàn ngẫu nhiên, chúng bỏ lỡ lợi thế.
Việc sử dụng UUID tuần tự hoàn hảo trở nên có thể dự đoán được và hoạt động chống lại ý tưởng ban đầu về việc sử dụng UUID ở chỗ chúng là duy nhất trên toàn cầu.
Tiện ích mở rộng của Vondra đang sử dụng các bit của cả hai thế giới: "... Thay vì tạo tiền tố tuần tự hoàn hảo, giá trị này là tuần tự trong một thời gian, nhưng cũng bao bọc một lần trong một thời gian. Việc gói này loại bỏ khả năng dự đoán ..."
Cách cài đặt nó vào PostgreSQL của bạn: Điều kiện tiên quyết trên Ubuntu:
postgresql-server-dev-11
Tải về:
git clone https://github.com/tvondra/sequential-uuids.git
cd sequential-uuids/
make
sudo make install
bên trong PostgreSQL:
CREATE EXTENSION sequential-uuids;
Làm cho nó hoạt động bằng ví dụ:
DROP SEQUENCE IF EXISTS tablename_names_seq;
DROP TABLE IF EXISTS names;
CREATE SEQUENCE tablename_names_seq AS integer;
CREATE TABLE names(id uuid NOT NULL DEFAULT uuid_sequence_nextval('tablename_names_seq'::regclass),name varchar(40));
INSERT INTO names (name) VALUES ('William McKinley'),('Theodore Roosevelt'),('William Taft'),('Woodrow Wilson'),('Warren Harding'),('Calvin Coolidge'),('Herbert C. Hoover'),('Franklin Delano Roosevelt'),('Harry S Truman'),('Dwight David Eisenhower'),('John Fitzgerald Kennedy'),('Lyndon Baines Johnson'),('Richard Milhous Nixon'),('Gerald R. Ford'),('James (Jimmy) Earl Carter, Jr.'),('Ronald Wilson Reagan'),('George H. W. Bush'),('William (Bill) Jefferson Clinton'),('George W. Bush'),('Barack Obama'),('Donald Trump');
... sẽ tạo trong trường hợp của tôi:
db=# select * from names;
id | name
--------------------------------------+----------------------------------
00005b41-8b07-3daa-216e-30b3e8177705 | William McKinley
00004ce4-1183-7689-47a0-a56d7e8e987c | Theodore Roosevelt
...
000042a0-2e72-c92b-6d61-7a79a5bf3b7e | Barack Obama
00002d51-34c3-a682-12ab-0d6287394899 | Donald Trump
nguồn:
https://github.com/tvondra/fterential-uuids
https://www.2ndquadrant.com/en/blog/fterential-uuid-generators/