Tagged: mongo

支持分库分表的分布式ID生成规则

在分布式环境中的系统,全局唯一ID生成的设计尤为重要。每个公司都会根据自身实际情况,设计出针对自身环境的唯一ID的系统。 一、MongoDB的ObjectID: 开源软件也不例外,MongoDB是一款支持分布式环境(Shard)的非关系型数据库,在分布式全局唯一ID生成的设计上有哪些值得学习的地方呢? 首先,我们看一下官方对BSON ObjectID的解释(Learn more from ObjectId):

ObjectID是一个用16进制字符表示的,总长度为12Bytes的字符串。 分别由4字节时间戳+5字节进程唯一ID+3字节的计数器,这样便保证了在分布式环境中且多个进程生成的ID是唯一的。 但是如果要以这样一个12Bytes的字符串来进行分库分表的操作,该怎样计算呢?我们完全可以按照ObjectID的设计思路,来设计...

MongoDB 的查询优化

在Mysql中,对于查询优化的工作,除了对其平时的使用经验和对其源码的分析之外,有两个工具我们会经常用到,The Slow Query Log和Optimizing Queries with EXPLAIN。 同样,在MongoDB中也会有类似的工具可供我们使用。官方文档对其有详细的描述,它们分别是Locking Performance,Number of Connections,Database Profiler,Explain Results。其中,Database Profiler和Explain Results这两个工具与上述Mysql中的两个工具类似,并且也是最常用的,本文将主要对这两个工具的使用进行阐述。 Database Profiler 在MongoDB中,Database Profiler会收集数据库的读写操作、游标操作、和数据库命令。可以在数据库级别开启,也可以在实例级...