serial 或 sequence 是否保证了 Yugabyte 中数据的唯一性?
Does serial or sequence ensure the uniqueness of data in Yugabyte?
我们想从 mysql 数据库迁移到 Yugabyte(PostgreSQL) 数据库。我们在 YugabyteDB 中为 mysql AUTO_INCREMENT ()
找到了 2 个备选方案
- 连续剧
- 序列
出于某种原因,我们不喜欢使用 UUID。那么serial或者sequence能保证数据的唯一性吗? (我们有 6 个节点)
实际上 serial/bigserial
在下面创建一个序列并使用它来生成唯一 ID。
即使在分布式系统中,序列也会生成唯一值。
您还需要使用缓存以获得更好的性能,从而减少生成新值的 rpc 次数:https://docs.yugabyte.com/latest/api/ysql/commands/ddl_create_sequence/#cache
唯一性是通过主键、唯一索引、约束在数据库端强制执行的。在这种情况下,最好将 id 列作为主键。
因此,使用具有大缓存的序列的 BIGINT
列,并使 id
成为主键。
我们想从 mysql 数据库迁移到 Yugabyte(PostgreSQL) 数据库。我们在 YugabyteDB 中为 mysql AUTO_INCREMENT ()
找到了 2 个备选方案- 连续剧
- 序列
出于某种原因,我们不喜欢使用 UUID。那么serial或者sequence能保证数据的唯一性吗? (我们有 6 个节点)
实际上 serial/bigserial
在下面创建一个序列并使用它来生成唯一 ID。
即使在分布式系统中,序列也会生成唯一值。
您还需要使用缓存以获得更好的性能,从而减少生成新值的 rpc 次数:https://docs.yugabyte.com/latest/api/ysql/commands/ddl_create_sequence/#cache
唯一性是通过主键、唯一索引、约束在数据库端强制执行的。在这种情况下,最好将 id 列作为主键。
因此,使用具有大缓存的序列的 BIGINT
列,并使 id
成为主键。