5

2011-05-27 19:26:00 +08:00

@iiduce 你已提過了...

ObjectID = 32bit timestamp + md5(hostname) + process-id + sequence-no. (Full definition is quoted at bottom of this post)

在不同電腦內, process-id 跟 sequence-no 跟 timestamp 是有機會一樣的

跟據 wikipedia (http://is.gd/yZBK2B) md5 hash 不是 collision resistance.

即是說, 是有機會出現 md5(hostname_A) == md5(hostname_B).

所以, ObjectId 一定不是全宇宙唯一.

----

BSON ObjectID Specification (http://is.gd/XcorBb)

A BSON ObjectID is a 12-byte value consisting of a 4-byte timestamp (seconds since epoch), a 3-byte machine id, a 2-byte process id, and a 3-byte counter. Note that the timestamp and counter fields must be stored big endian unlike the rest of BSON. This is because they are compared byte-by-byte and we want to ensure a mostly increasing order. Here's the schema:

0123456 7891011

timemachine pidinc

Here is a breakdown of the sections:

TimeStamp

This is a unix style timestamp. It is a signed int representing the number of seconds before or after January 1st 1970 (UTC).

Machine

This is the first three bytes of the (md5) hash of the machine host name, or of the mac/network address, or the virtual machine id.

Pid

This is 2 bytes of the process id (or thread id) of the process generating the object id.

Increment

This is an ever incrementing value, or a random number if a counter can't be used in the language/runtime.

mongodb的id的唯一性_mongodb中的objectid是collection中唯一,还是全db唯一,还是全宇宙唯一?...相关推荐

  1. mongodb的id的唯一性_探讨MongoDB的_id字段含义,及对MongoDB数据库的重要性

    在MongoDB数据库中打开任何文档,您会注意到_id字段: 实际上,ObjectId / _id是每个MongoDB文档中唯一的字段.在今天的文章中,我们将探讨它的含义以及它对MongoDB数据库的 ...

  2. java中的集合框架_JAVA中的集合框架(上)List

    第一节 JAVA中的集合框架概述 集合的概念,现实生活中:很多事物凑在一起就是一个集合:数学中的集合:具有相同属性事物的总体:JAVA中的集合:是一种工具类,就像是容器,储存任意数量的具有共同属性的对 ...

  3. 分布式ID(唯一性)的生成方法汇总

    欢迎关注方志朋的博客,回复"666"获面试宝典 在软件研发工程中,经常会遇到系统主键的唯一性问题,尤其是在现如今比较火热的微服务架构中.分布式ID 具备唯一性.高可用性.有序增长等 ...

  4. 快速解决mongodb出现id重复问题

    近期在使用mongodb的过程中遇到一次表中有_id字段重复的记录(相同_id的有两条),着实吓了一大跳,这篇文章主要给大家介绍了关于mongodb出现id重复问题的简单解决办法,需要的朋友可以参考下 ...

  5. mongodb和mysql的语法_Mongodb和mysql的区别

    1. Mongodb简介及优缺点分析 Mongodb是非关系型数据库(nosql ),属于文档型数据库.文档是mongoDB中数据的基本单元,类似关系数据库的行,多个键值对有序地放置在一起便是文档,语 ...

  6. mongodb和mysql创建表_MongoDB 数据库创建删除、表(集合)

    一. 数据库使用 开启 mongodb 服务:要管理数据库,必须先开启服务,开启服务使用 mongod --dbpath c:\mongodb 管理 mongodb 数据库:mongo (一定要在新的 ...

  7. mongodb java 多条件查询_MongoDB查询之高级操作详解(多条件查询、正则匹配查询等)...

    MongoDB查询之高级操作 语法介绍 MongoDB查询文档使用find()方法,同时find()方法以非结构化的方式来显示所有查询到的文档. -- 1.基本语法 db.collection.fin ...

  8. mongodb不等于某个值_MongoDB的安装以及基本增删改查命令

    MongoDB 介绍 mongodb 和大多数NoSQL 数据库(redis,memcached 等)一样,都是以 kv数据库(key/value) 存储数据 不同的是mongodb 文档数据库,存储 ...

  9. mysql更新id最大_我们可以在单个MySQL查询中更新具有最高ID的行吗?

    是的,我们可以做到.让我们首先创建一个表-mysql> create table DemoTable ( ID int, GameScore int ); 使用插入命令在表中插入一些记录-mys ...

最新文章

  1. OKR简单通俗易懂的介绍,1分钟了解什么是OKR工作法
  2. vue中如何加入横线_在word文档中如何快速添加页眉横线和删除页眉横线?
  3. setsockopt 设置socket 详细用法
  4. TortoiseSVN图标设置在注册表中的位置
  5. Spring boot自动注册DispatcherServlet
  6. 再见,2014;您好,2015!
  7. 流利说CFO辞职 公司上市一年多股价跌去一半
  8. 也许现在的前端,应该了解更多的算法
  9. nginx反向代理解决跨域
  10. MongoDB实战系列之三:MongoDB的主从部署
  11. 安卓运行linux命令mux,都能看懂的嵌入式linux/android alsa_aplay alsa_amixer命令行用法...
  12. SIM900A模块与PC如何连接?
  13. 如何使用视频转换器将kux格式转换成mp4格式
  14. addr2line的使用
  15. ubuntu linux拼音输入法,Ubuntu 中文拼音输入法小结
  16. 搭建自己的框架WedeNet(一)
  17. unbuntu20.0.4 显卡驱动安装,nividia-smi无效
  18. Document.readyState 如何使用和侦听
  19. hive创建hbase外部表
  20. 移动用户远程接入L2TP配置详解

热门文章

  1. 嵩天-Python语言程序设计程序题--第九周:Python计算生态纵览
  2. 在布局空间标注的尺寸量不对_CAD图纸中标注值和实际测量值不一样怎么回事?...
  3. python正则查找_python正则查找
  4. 分析遇到非正态数据该怎么办?
  5. SAP UI5 应用开发教程之六十七 - 基于 OData V4 的 SAP UI5 List-Detail(列表-明细)布局的实现方式试读版
  6. 什么是SAP CRM里的Sales Bundle?
  7. build.gradle里dependencies标签页的实现原理
  8. OPA 1 - testsuite.opa.html
  9. how can a model method trigger binding value refreshed
  10. SAP Fiori attachment rename debug