MongoDB 自动递增 ID

标签 mongodb

MongodDB 中自动生成的 ID 大小为 12 字节,大整数的大小为 8 字节。我在 4 台运行 Ubuntu Server 的机器上有一个 mongodb 集群,但我现在只是在测试。插入只能通过一台服务器(nodejs 服务器)完成,但更新和删除可以使用世界各地运行 native c 应用程序的各种机器和 nodejs 服务器完成。

既然我可以完全控制插入,那么使用自动递增 ID 不是更好吗?

  • 在 1MB 的内存中,你可以保存 87381 个 12 字节的 ID 和 131027 个 8 字节 ID。
  • 自动递增 ID 值得吗?有什么好处吗? 除了节省内存?
  • 就性能而言,比较 8 字节 ID 不会比 12 字节快 字节 id,如果我进行索引,它不会减少大小吗?

我是怎么做到的:

我有这个文件

{id:0 latestId:174845423}

我很少将它递增 1,我的大部分插入都是批量插入,因此 nodejs 服务器修改要在循环中插入的文档,给每个文档一个递增的 id,在插入操作结束时我添加我更新具有最后一个 ID 值的最新 ID。

最佳答案

“自动增量”在使用分布式系统时始终是一个问题,因为它会造成瓶颈:每个新的增量都需要读取以前的数据……就像其他一些并行请求一样。

一般来说,“自增”会限制并行性,特别是在分布式系统上。

关于MongoDB 自动递增 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21218651/

相关文章:

mongodb - "SCRAM-SHA-1"认证机制需要使用 --enable-ssl 构建的 libmongoc

MongoDB 基于每个元素对来自多个文档的数组求和

MongoDB 额外集合

javascript - 如何使用 json 响应创建另一个 URL。 Node

mongodb - 存储变化很大的字符串,从很长到很短::Fragmentation

linux - 在 linux/OS X 上启动 mongod 服务的正确方法是什么?

node.js - Mongo Aggregate - 获取多个值在查询结果中出现的次数

Go (golang) 中的 MongoDB 与 mgo : how to use logical operators to query?

javascript - 无法在 Nodejs 中访问数据库结果,它总是返回 null

mongodb - 我在 ubuntu 上安装 mongodb compass 时遇到问题?