为什么DigitalOcean使用uuid作为Droplet id的用户ID和整数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么DigitalOcean使用uuid作为Droplet id的用户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的对象则相反,长寿并且创建频率较低。

我已经制作了两个表来查看哪些对象具有字符串/整数id。

答案

在DigitalOcean,我们已经标准化了未来使用字符串uuids。其中一个主要动机是主键绑定与特定数据存储区实现相关联,并且可能使架构重构更加困难。因此,使用整数ID的资源正在这样做以实现向后兼容性,并且只是更长时间(即我们的Droplet是我们的第一个产品,而Load Balancers和Firewalls这样的东西是最近添加的)。

完全披露:除其他外,我保留了DigitalOcean的API文档。

以上是关于为什么DigitalOcean使用uuid作为Droplet id的用户ID和整数?的主要内容,如果未能解决你的问题,请参考以下文章

mysql为什么不推荐使用uuid或者雪花id作为主键

使用雪花id或uuid作为Mysql主键,被老板怼了一顿!

UUID 作为主键(慢插入)

使用雪花id或uuid作为Mysql主键,被老板怼了一顿!

为什么MySQL不推荐使用uuid作为主键?感悟分享

使用 C 类型 uuid_t 作为 std::map 中的键的最佳方法是啥?