我希望使用客户端框架Spine.js,它会为模型生成UUID作为ID,然后可以持久化到服务器。如果我直接使用客户端生成的UUID作为模型的主键,并将其保存在服务器上,这将是最简单的方法。 在Rails中使用客户端生成的UUID作为主键有什么缺点?
我总体上不喜欢将UUID用作“主键”,但是在分布式模型中,如果UUID生成得当,它们就非常适合。根据其他问题的情况,它仍然可能不是“主”键,而是另一个“候选”键(考虑由唯一索引支持的“备用PK”)。我知道的两个问题是:1. UUIDs 像 IPv6 一样。它们很长,因此不是最人性化的值。另一方面,它们的格式非常一致,很容易识别。请准备好你的复制和粘贴技能。2. 完全随机的UUIDs倾向于使索引碎片化;如果将其用作PK,则通常会聚集(与可能只是指向记录的索引相反),这可能会导致可怕的碎片化。然而;- 良好的数据库维护计划应该可以解决这个问题:定期重新索引碎片化的索引。 - 特殊的UUID生成方案,例如SQL Server中的NEWSEQUENTIALID,虽然“更可预测”,但也可以生成单调递增的值,从而缓解索引/聚集的碎片化。祝编码愉快。
rails_admin
无法处理非整数主键。看起来许多插件都假定有一个整数类型的id
字段,因此它们可能会出现故障 :/ - Chetan