Mongodb 的索引架构
来源:互联网 发布:东方有线网络 编辑:程序博客网 时间:2024/05/18 03:00
索引在任何的数据库里面都起着至关重要的作用, 在mongoDB里面, 基本的增删改查操作都需要访问索引, 通过一个集合的名字, 如何找到相关的索引, 并且对其进行操作哪?
如下, 是Mongodb Index的整体架构:
collection类
对于任何一个存在的集合的明仔, 我们通过catalog 找到一个它对应的Collection对象, 该对象会保存这
个集合的所有的索引的信息IndexCatalog类型对象 _indexCatalog;
IndexCatalog类
IndexCatalog类包含了查找index, 遍历(IndexIterator), 创建删除, 更新(refreshEntry)index的基本的操作;或者说, 这个函数是Index的接口, 所有的对index的操作都要经过这个类, 再由这个类通过复合的方式调用其他的类去完成;
每一个Collection可能有多个index,每一个代表一个IndexCatalogEntry对象, 他们由类IndexCatalogEntryContainer 负责管理。 IndexCatalogEntryContainer 类实际上是一个vector 对象的IndexCatalogEntry, 提供了集合的封装。
IndexCatalogEntry类
该类主要包含IndexDescription ,IndexAccessMethod以及SetHeadChange, 可以记录每一个index的基本属性, 增删改查的方法以及索引的变化。这个class本身相当于一个代理类有上述的3个sub-class来完成相应的功能。
IndexDescriptor 类
该类主要保存index的基本属性, 他是一个computed属性保存的类, 把某个index的一些属性保存在该类的对象里面, 比较类似于index 的specific data 或者元数据。
IndexAccessMethod 类
是关于index的增删改查等操作的基类, 针对不同的场景, 有相关的子类来实现特定的功能, 具体可以参考上面的架构图。
另外, IndexAccessMethod类, 也是一个代理类, 具体的增删改查的操作, 由存储引擎的索引的基类SortedDataInterface来完成。
SortedDataInterface 类
Mongodb可以支持多种类型的存储引擎, 比如MMapV1, WiredTiger等, 不同的存储引擎对于索引有不同的实现方式。 所以SortedDataInterface 存储引擎的基类, 具体的实现, 有具体的存储引擎的子类负责, 例如, WiredTiger类型的存储引擎的索引为WiredTigerIndex。
- Mongodb 的索引架构
- MongoDB:mongodb的索引操作
- MongoDB:mongodb的索引操作
- mongodb的地理位置索引
- mongodb的地理位置索引
- mongoDB的索引
- Mongodb的索引
- mongodb的地理位置索引
- mongoDB的全文索引
- mongoDB的地理位置索引
- mongoDb的索引
- 6、Mongodb的索引
- MongoDB索引的类型
- mongodb的索引
- mongodb 的索引
- MongoDB的索引
- 有效的MongoDB索引
- mongodb的索引相关
- Trie树模板及练习
- 1203: 做幻方
- 简单认识Java内存模型
- 2018走美杯与往年考点知识会有什么变化吗?
- 深度学习入门者的Python快速教程
- Mongodb 的索引架构
- iOS开发笔记之view的渲染优化
- 关于TP5视图分离到根目录的解决方法 原有: 为了方便前端开发,我想把视图(view)部分分离出来专门给前端进行修改 过程:在进行视图设置分离的过程遇到了问题 参考了官方文档http://www
- 栈的增删改查基本操作
- iOS中如何获取当前网络及其本地IP(Swift)
- IOS 键盘右上角完成按钮自定义
- spring 中事务配置方式以及事务的传播性、隔离级别
- 内存空间和用户空间
- 侧滑菜单+横向滑动列表