我正在评估PostgreSQL的新项目,否则我们将使用MySql。我在MySql中生成了这些类型的ID,这是一个翻转的V1 GUID:
create function get_uuid() returns binary(16)
begin
return (
select unhex(concat(
substr(uuid(), 15, 4),
substr(uuid(), 10, 4),
substr(uuid(), 1, 8),
substr(uuid(), 20, 4),
substr(uuid(), 25))) as new_id
);
end;
然后,我将使用mysql hex()和unhex()函数将它们转换为binary(16),或将其转换为binary(16),以便将该字段所需的存储量减半。
如果您好奇,所有这些都记录在这里:
https://www.percona.com/blog/2014/12/19/store-uuid-optimized-way/
但是...我要寻找的是Postgres的等效功能。截止到今天,我是100%的新手。
Postgres不需要此hack。它具有本机数据类型uuid
,仅需要16个字节即可存储UUID值。