Skip to main content

Command Palette

Search for a command to run...

#mongodb

Articles tagged with #mongodb

  1. 对mongo分片集群创建索引

    1. 场景 现在我们需要给大规模的mongodb集群添加索引,当集群规模巨大的时候,创建索引是一个非常可怕的操作,因为一个索引的创建的过程非常长,因为即使是稀疏索引也是需要遍历现存的所有数据的才能完成的,而且创建索引时间比较漫长的,可能在中间出现创建索引的节点宕机什么的问题;而且创建索引本身是不一个不可逆的过程,创建完之后马上删除索引是会出现很严重的问题;为此对于这个场景我们需要思考更加多一些; 2. 方案 mongo的集群模式包含有mongos + mongod replication,创建索...

    Apr 11, 20231 min read9
  2. mongodb 一次索引调研

    1. 需求 本来是有业务需求,所以开始调研mongodb的索引方案;需求主要是:为元数据添加tags信息,这样通过tags信息可以来过滤对应的信息;这次做方案的时候,自己有点一开始就被限制住,因为当时给我这个需求调研的时候,就已经给了一个粗略的方案;所以我就开始往索引的方向走,总是在思考怎么样的索引方案才是最好的,最优秀的,性能上最好的; 但是最终搞了很久才发现,不管索引如何设计,在业务场景上性能也是不可能好的,这是一个不可能的任务的,而且在分析竞品的产品的时候,发现对方在这个场景上根本就不需要...

    Apr 9, 20236 min read4
  3. mongo-rocks data format

    mongo-rocks 存储数据的底层格式 1. mongo-rocks mongo-rocks是基于mongo对存储引擎的规定的接口,用rocksdb实现的一个存储插件的;类似于mysql本身底层的存储引擎可以是插件化的,mongo本身也支持的;mongo-rocks就是基于rocksdb为mongodb提供存储的功能的;当然目前版本的mongo的默认的存储引擎是wt引擎,官方支持的;mongo-rocks这个库目前也在不断的更新用来支持新版本的mongo版本的;当然由于官方版本的版本迭代速度...

    Mar 20, 20236 min read11
  4. mongodb rollback原理分析

    1. mongodb 为何会存在Rollback呢? 开始维护mongo的时候,总是很好奇为什么会存在rollback机制;理论上类raft协议的共识算法,在没有达到majority同意的情况下是不可能将日志应用到状态机中的,即节点的真实的底层数据是不会被修改的;按照这个逻辑,即使出现primary当宕机什么的,最多不过是共识算法同步的log的回滚,也没必要进行数据层面的回滚。 这个问题其实伴随了我不少时间,我一直都没有很明白的搞定这个问题,甚至于我有一段时间认为可能是因为我们线上是非major...

    Jul 17, 20222 min read21
  5. [译文]Fault-Tolerant Replication with Pull-Based Consensus in MongoDB

    这篇文章主要介绍了 mongo 在副本集中的实现的共识算法,与大部分的 raft 不一样,它是基于 pull-base 的模式的;我在第一次解决 mongo 的副本集问题的时候一开始就进入了 push-base 的 raft 的分析,后来发现整个代码逻辑有点奇怪;mongo 对 raft 类似的实现还是进行了很多不一样的修改,从而达到它想要的目的;这文章可能很好的理解到很多 mongo 的知识,所以我决定来翻译这个文章;大家别对我的英文水平抱有任何幻想,我只是想让自己能更加明白一点,而且也不会全...

    Feb 8, 20215 min read81