MongoDB的默认主键即_id必须在同一个集合中唯一。传统的关系型数据库通常会使用自增主键,但是在分布式环境下自增是有代价的。所以MongoDB采用了另外一种主键生成策略。每一个主键由4部分构成:
1.unix时间戳,精确到秒级别;
2.机器id;
3.进程id;
4.计数器;
前三个部分可以保证在每一秒每一个mongo进程产生的文档id是不同的。然后每一个mongo进程会自己维护一个计数器,那么同一进程每一秒内的文档也会不同,但是会有一个上限值,跟计数器的位数有关。
MongoDB的默认主键即_id必须在同一个集合中唯一。传统的关系型数据库通常会使用自增主键,但是在分布式环境下自增是有代价的。所以MongoDB采用了另外一种主键生成策略。每一个主键由4部分构成:
1.unix时间戳,精确到秒级别;
2.机器id;
3.进程id;
4.计数器;
前三个部分可以保证在每一秒每一个mongo进程产生的文档id是不同的。然后每一个mongo进程会自己维护一个计数器,那么同一进程每一秒内的文档也会不同,但是会有一个上限值,跟计数器的位数有关。