- 博客(9)
- 资源 (6)
- 收藏
- 关注
原创 Intel workshop 所看所想
今天非常有幸参加了Intel的一个技术workshop, 感觉收获挺多的, 特别是一些比较新的技术, 根据个人的理解, 写出这边文章分享一下。非易失内存未来(可能就这一两年吧)的内存不会像现在的内存这样, 断电之后, 内存里面的东西全部丢掉, 而是会通过软件的方式保留一段时间。 传统内存的特点是:速度快, 容量小, 容易丢失。 我们在各种各样的编程环境下, 为了确保内存里面的东西, 不会因为以外的
2017-10-29 18:53:06 664
原创 ReplicationExecutor的实现原理
副本集在维护以及更新结构的过程中, 需要执行大量的任务, 这些任务的执行需要满足一定的条件, 例如, 先触发的时间先执行, 或者等待一段时间以后执行某个任务, 又或者有的任务需要全局锁, 有的只需要集合锁等等。 Mongodb 内部通过ReplicationExecutor来实现这些任务的执行。 从功能上面讲,ReplicationExecutor的作用和golang里面的channel是非常类似
2017-10-28 18:28:49 751
转载 网上搜集的有用资料备忘
很全的书单https://github.com/justjavac/free-programming-books-zh_CNC/C++开源项目http://blog.csdn.net/it_small_farmer/article/details/44938101VIM下C++的支持(ctags, cscope)http://blog.csdn.net/yhguo200...
2017-10-22 13:53:02 298
原创 副本集Oplog同步原理
副本集是mongodb的基础组件,是实现高可用、自动选主、读写分离以及数据一致性的基础。 比较概括的说, 副本集是将同一份数据保存在不同的节点上面, 这些节点通过一致性的协议(RAFT), 实现数据的同步, 并且选出一个主节点, 该节点对外提供读写服务, 当该主节点发生故障的时候, 自动从剩余的从节点内选出新的主节点。本文主要针对副本集的整体架构进行分析, 先来看一下架构图: 从这里
2017-10-21 14:03:00 2354
原创 Mongodb 的索引架构
索引在任何的数据库里面都起着至关重要的作用, 在mongoDB里面, 基本的增删改查操作都需要访问索引, 通过一个集合的名字, 如何找到相关的索引, 并且对其进行操作哪?如下, 是Mongodb Index的整体架构: collection类对于任何一个存在的集合的明仔, 我们通过catalog 找到一个它对应的Collection对象, 该对象会保存这 个集合的所有的索引的信息IndexC
2017-10-13 13:40:19 1397
原创 LINUX 常用系统命令
在LINUX下面有很多的非常有用的系统命令, 使用的好的话, 能够起到事半功倍的效果, 下面就列举几个常见命令的用法以及他们的应用场景。1. netstatnetstat是一个监控网络使用的工具, 用它可以查看当前机器上面的网络连接情况,可以使用不同的参数查看, 常用的,比如-anp,输出结果如下:$netstat -anp | grep mongo Proto Recv-Q Send-Q Lo
2017-10-12 20:57:12 278
原创 执行计划PlanExecutor
PlanExecutor的主要作用是选出最佳的QuerySolution, 并且执行该solution。 整个PlanExecutor 对象的结构如下图: 1. 生成PlanExecutor对象 这里采用了工厂模式, PlanExecutor::make产生指定的PlanExecutor对象;2. 选择最佳计划从上图可见,这里分成4中情况:SubplanStage, 主要是针对$or 的处理,
2017-10-10 18:18:49 989
原创 Mongodb查询计划的生成
查询计划的生成, 主要是通过QueryPlanner::plan 作为入口, 里面包含了基本的逻辑, 但是真正的QuerySolutionNode 是通过QueryPlannerAccess类来实现。具体的实现非常的复杂, 我们先看一下 下图的整个调用过程, 以及QueryPlanner的结构图, 然后再诸葛的分析一下相关的代码实现。 tailable 有设定的情况 通过make
2017-10-08 12:26:56 879
原创 Mongodb的逻辑优化过程
逻辑优化过程在关系型数据库里面, 是一个非常复杂的过程, 幸运的是, 在Mongodb里面, 到目前为止, 相对来说, 其实现还是比较简单的。该过程主要通过 CanonicalQuery 类来实现。 该过程主要包含三个方面的优化: 1、Normoralize tree; 2、sort tree; 3、 validate tree;我们分别来看看这3个方面的优化的实现。1. Normo
2017-10-07 16:53:42 831
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人