考虑这个用于存储对象元数据的表
CREATE TABLE meta (
"obj_uuid" uuid,
"type" int,
"value" text
);
使用uuid
作为主键标识对象,元数据行引用uuid
。现在我担心这会以指数方式夸大数据库大小。
Postgres是否会对此进行优化,或者创建一个将uuid
映射到serial
并在元数据表中引用此序列的中间表会更好吗?
答案 0 :(得分:3)
现在我担心这会以指数方式炸掉数据库大小
与64位bigint
或32位integer
相比,uuid仅为128位。因此,最坏情况下的开销是密钥空间的4倍。
如果您的键/值配对非常小并且有很多这些配对可能会引起关注。在这种情况下,我会使用基于integer
的{{1}}或biginteger
密钥,然后只使用sequence
作为未在参考中出现的唯一辅助密钥诚信检查。