serial 或 sequence 是否保证了 Yugabyte 中数据的唯一性?

Does serial or sequence ensure the uniqueness of data in Yugabyte?

我们想从 mysql 数据库迁移到 Yugabyte(PostgreSQL) 数据库。我们在 YugabyteDB 中为 mysql AUTO_INCREMENT ()

找到了 2 个备选方案
  1. 连续剧
  2. 序列

出于某种原因,我们不喜欢使用 UUID。那么serial或者sequence能保证数据的唯一性吗? (我们有 6 个节点)

实际上 serial/bigserial 在下面创建一个序列并使用它来生成唯一 ID。 即使在分布式系统中,序列也会生成唯一值。

您还需要使用缓存以获得更好的性能,从而减少生成新值的 rpc 次数:https://docs.yugabyte.com/latest/api/ysql/commands/ddl_create_sequence/#cache

唯一性是通过主键、唯一索引、约束在数据库端强制执行的。在这种情况下,最好将 id 列作为主键。

因此,使用具有大缓存的序列的 BIGINT 列,并使 id 成为主键。