Che*_*tan 4 uuid guid model ruby-on-rails spine.js
我想使用Spine.js客户端框架,它生成UUID作为模型的ID,然后可以持久化到服务器.如果我只是将客户端生成的UUID用于模型,并将它们保存在服务器上,那将是最简单的.
在Rails中使用客户端生成的UUID作为主键有什么缺点?
小智 11
我不喜欢的"主键"的UUID一般,但是,分布式模型是一个在他们适合的比较好,假设UUID适当产生;-)取决于其他问题,它仍然可能不是的主键,而是另一个候选键(想象一个由唯一索引支持的"备用PK").
我所知道的两个"问题"是:
UUID就像IPv6.它们很长,因此不是最人性化的价值观.另一方面,它们在格式上非常一致并且易于发现.有你的copy'n'paste技能.
完全随机的 UUID往往会破坏索引; 如果用作PK,通常是聚集的(相对于可能只是指向记录的指针),这可能导致可怕的碎片.然而;
一个好的数据库维护计划应该解决这个问题:按计划重新索引碎片索引.
特殊的UUID生成方案,例如NEWSEQUENTIALID在SQL Server中,虽然"更可预测",但也可以生成单调递增的值,从而减轻索引/集群碎片.
快乐的编码.