Postgres uuid:用作主键,或作为 SERIAL 的补充 - 对于断开连接的应用程序 -

mam*_*mcx 5 postgresql sqlite

对于带有 postgres 9 的新 SASS 应用程序,它将支持断开连接的客户端。

客户端不会使用常规 ID,而只会使用 UUID。客户端将在 iOS、html5/python 上运行,稍后可能还会在其他平台上运行。客户端数据库将是sqlite。

每个客户都将使用自己的模式,因此希望不会存在太大的表,但仍然因为这是用于发票和财务内容的,所以会生成大量数据,并且因为云托管成本与 CPU/RAM 超额费用相关从一开始就拥有最佳性能是有意义的(加上更快的响应时间对最终用户来说是有好处的)。

因此,我需要在客户端中使用 UUID 支持创建新记录。现在,我正在争论是否仅将 UUID 用于同步部分,并使用常规 ID 用于 JOINS 和主键。

但是,我也觉得这是重复,如果我要存储 uuid 为什么不在服务器中根本不删除 int 键,但担心这是否会在以后给我带来性能问题以及我需要使用哪种索引类型(btree 将是够好了?)

Erw*_*ter 3

当然,整数列更小并且操作速度更快。数据类型uuid的大小为16字节,integer有4字节。更小的索引、更快的JOIN操作等等。但差异并不显着。

如果您仅通过 UUID 进行查询,则额外的整数 ID 不会给您带来任何帮助。另外,如果您的表很小,则差异可以忽略不计,并且无需额外的整数 ID 也可以实现同样的效果。

如果您必须在 ID 上连接多个表,如果您有引用该 ID 的外键,或者您的表(以及索引)变得很大,那么请在内部使用整数 ID 进行操作。