Ben*_*Ben 1 indexing sharding unique mongodb
我想通过其“外键”(用户ID)而不是其ID字段来分片集合。我只需要userID和id的组合是唯一的。但是我不确定mongodb是否可以。
警告在不通过_id字段进行分片的任何分片集合中,必须确保_id字段的唯一性。确保_id始终唯一的最佳方法是使用ObjectId或另一个通用唯一标识符(UUID)。
摘自:http : //docs.mongodb.org/manual/tutorial/enforce-unique-keys-for-sharded-collections/#enforce-unique-keys-for-sharded-collections
我是否必须确保_id是唯一的?还是我总是同时使用userID和_id进行查询就足够了吗?
除非您手动替换它们,否则自动生成的_id是UUID,根据文档,它由“一个4字节的时间戳(自纪元以来的秒数),一个3字节的机器ID,一个2字节的进程ID和一个3字节计数器”。
如您所见,唯一的机器ID是UUID的一部分。这样可以确保分片中没有两台机器独立创建相同的UUID(除非它们具有相同的机器ID-相似的可能性是1:16777215,并且在发生这种情况时可以很容易地对其进行验证)。理论上唯一可以复制UUID的情况是,单个进程在一秒钟内创建了超过2 ^ 24(超过1600万个)UUID。
tl; dr:您不必担心重复的UUID-正如文档所述,它们被“设计为在分配时具有相当高的唯一性”。
| 归档时间: |
|
| 查看次数: |
501 次 |
| 最近记录: |