通过API或网页公开数据库自动递增ID

时间:2017-06-06 18:07:02

标签: database rest api database-design

我认为不暴露自动递增的数据库ID(帐户,产品等)是更好的方法。我们可以使用UUIDs&通过API或网页公开。

但我检查过许多大公司似乎并不关心:

  • 谷歌,亚马逊,Facebook,Twitter(似乎都有数字 自动递增帐户ID)
  • Macys&易趣显示自动递增的产品ID(或网络ID) IDS

亚马逊似乎关心的一个案例:

  • 亚马逊确实在其产品目录中使用了ASIN编号(其中 据说内部链接到他们的数字自动递增DB 产品ID。)

那么,在使用UUID时,我们是否试图解决不存在的问题?只是不值得花时间和努力?

1 个答案:

答案 0 :(得分:2)

关于在帐户表中使用自动递增ID,以下是一个不好主意的原因:

  1. 如果在一段时间内采样,序列号会向公众公开表格中的记录数量和表格的增长率。
  2. 如果api的安全性较差,可以通过简单地增加id并进行api调用来清除数据库中的所有记录,直到检索完所有数据。
  3. 使用自动递增ID并插入多个相关实体时,需要对数据库进行多次调用才能将实体插入数据库中。如果使用UUID,则可以构建整个对象集,而无需与数据库交互。例如,对于订单表头和订单行项目,您需要插入订单表头,获取主要ID,然后插入带有订单表头ID的订单行项目。

  4. 将数据从开发人员迁移到登台或登台生存时,如果使用自动递增ID和外键等,插入新数据可能具有挑战性。