为什么 DigitalOcean 使用 uuid 作为用户 id 而使用整数作为 Droplet id?

Why does DigitalOcean use uuid for user id and integers for Droplet id?

我正在构建一个 REST-API,同时我正在研究 id 类型某些对象 我看到了 DigitalOcean API Documentation.

对象:volume, volume snapshot, certificate, domain, firewall and load balancer 都有一个字符串 uuid。

对象:action, domain record, droplet, droplet snapshot, droplet kernel, droplet backup, droplet neighbor, image and SSH key 有一个整数 ID。 但是 Droplets 有一个唯一的整数 id。

每个对象的情况下使用整数id或字符串id的用意是什么?

我唯一想不到的是,DigitalOcean早年使用的是字符串id,不能把所有的字符串id都换成整型id。

出于性能原因,所有寿命短或被大量创建的对象通常都有一个整数 ID,而具有字符串 ID 的对象则相反,寿命长且创建频率较低。

我制作了两个表格以更好地查看哪些对象具有 string/integer id。

在 DigitalOcean,我们已经对使用字符串 uuid 进行了标准化。主要动机之一是主键绑定与特定的数据存储实现相关联,并且会使架构重构更加困难。因此,使用整数 ID 的资源这样做是为了向后兼容,并且存在时间更长(即我们的 Droplets 是我们的第一个产品,而 Load Balancers 和 Firewalls 之类的东西是最近添加的)。

完全披露:除其他事项外,我维护 DigitalOcean 的 API 文档。