Postgres中的uuid ossp是什么

Nic*_*nto 5 postgresql uuid ruby-on-rails

我在迁移中已经看到了

enable_extension 'uuid-ossp'
Run Code Online (Sandbox Code Playgroud)

据我所知,uuid是基于某些RFC的长而唯一的字符串,这使db(在本例中为pg)具有作为uuid的列类型

我的问题是-为什么需要这种类型的列,而不仅仅是字符串列?是替换常规的整数id列,而是使用uuid作为id?

使用uuid作为id而不是让字符串类型的列包含uuid有什么好处?

Hel*_*rra 5

我希望看到更多的人在这里插话,但我认为 uuid 的想法是将 id 列替换为更唯一的 id,这非常有用,尤其是当您拥有分布式数据库或正在处理复制时。

优点:

  • 更容易合并数据
  • 当/如果您必须迁移到分布式系统时更好的扩展
  • 避免合并或复制数据时经常出现的 Postgres 序列问题
  • 您可以从其他平台生成它们(如果需要,不仅仅是数据库)
  • 如果您想混淆您的记录(例如,而不是访问users/1(id),这可能会促使好奇的用户尝试查看users/2他是否可以访问其他人的信息,因为参数的顺序性质很明显)。显然还有其他方法可以处理这个特定问题

缺点:

  • 需要比典型 ID 更大的密钥长度
  • 通常是非顺序的(如果您订购它,这可能会导致奇怪的行为,无论如何您通常不应该这样做)
  • 故障排除时更难参考(通过长 UUID 而不是简单的整数 id 查找)

以下是我认为有价值的更多资源: