笔记
Posted YuYunTan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了笔记相关的知识,希望对你有一定的参考价值。
1、MongoDB把超大数据使用更小的片进行分区存储,这样就无需在单个机器上存储所有数据或承担全部压力。
2、对分片集群的查询与可复制或者单个mongod服务器实例的查询完全一样。
3、分片把大型数据集进行分区成更小的可管理的片的过程,能帮助应用程序进行扩展,然而增加了管理和性能的开销。
4、存储分布式。MongoDB默认数据存储在最初dbpath参数指定的路径。运行db.stats()和db.collection.stats()会分别输出当前数据库和集合的存储使用信息。
5、分片集群由分片、mongos路由器和配置服务器组成。
- 分片:存储应用程序的数据。在分片集群中,只有mongos路由器或者系统管理员可以直接连接分片服务器节点。与部分片的部署一样,每个分片可以单独作为开发和测试的节点,但生产环境下应该是可复制集。
- mongos路由器:缓存集群的元数据并使用它来路由操作到正确的分片服务器。
- 配置服务器:一直存储集群的元数据,包括哪些分片包含哪些数据集
6、分片是分片集群中应用程序数据存储的唯一位置。每个分片包含的只是总数据的一部分,需要mongos来路由操作到适当的片上,mongos是可以直接转发所有读、写命令到正确的分片上的路由器。而mongos进程是轻量级非持久化的,需要配置服务器存储集群的元数据,通常部署在应用程序服务器上以确保只有一个网络跃点来转发请求。应用程序连接本地的mongos,而mongos管理与每个分片服务器的连接。
7、配置服务器保存的元数据是集群正常工作和更新维护的关键。
MongoDB数据结构
8、MongoDB中不同数据单位
- 文档:最小数据单元,表示系统不能再分了的单个对象。
- 块:根据每个字段的值集群的一组文档,是集群组里存在的概念,根据一组字段的值进行逻辑分组,这些字段被称为分片键。
- 集合:数据库一组命名的文档。允许用户把数据库分组为有意义的逻辑组,MongoDB提供了集合概念。集合必须被应用显示指定才能进行查询。
- 数据库:包含文档的集合,是系统最顶级的命名组。因为数据库包含文档的集合,所以集合也必须指定在文档上执行的操作。组合数据库名字和集合的名字提供了系统中的唯一性也叫命名空间。通常是集合名字和数据库名字连接在一起,用圆点分割。比如cloud-docs.spreadsheets.
9、数据可以分布到集群中的四个分组中的2个上:
- 在整个数据库级别。每个数据库的所有集合都存在自己的分片上。
- 分区或集合分块级别。集合里的文档都被分散多个片上,根据某个或者多个字段字(分片键)进行分片
10、设置分片集群的完整过程的三个步骤:
- 启动mongod和mongos服务器。启动组成分片集群的单个进程mongod和mongos。
- 配置集群。更新配置信息,这样可复制集就可以初始化并且添加分片到集群里,在此之后,节点就可以互相通信。
- 分片集群。分片一个集合,这样就可以分散到多个片上。这个步骤单独分开的原因,MongoDB在同一个集群里存在分片和不分片的集合,必须明确告诉集群要分片的集合。
11、目标查询。如果查询中包含分片键,mongos就可以快速咨询数据块数据来确定属于哪个分片。
12、全局或分散/集中查询。如果查询的分片键不属于查询,查询集合就必须访问所有的分片服务器以填充查询。
13、分片集群索引的要点
- 每个分片维护自己的索引。当在分片集合上声明索引时,每个分片都会为自己的集合部分定义单独的索引。
- 遵循分片集合在每个分片上应该拥有相同的索引原则。如果不是,就无法保证查询性能的一致性。
- 分片集合只允许在_id字段和分片键上建立唯一索引。禁止其他地方建立唯一索引,因为强制唯一性需要在分片之间进行通信【由MongoDB分片集群底层工作机制决定】。
14、explain()根据是首选的解决问题和优化查询的根据。可以显示查询执行的精确路径,包括指明是否目标性查询和是否使用索引。
以上是关于笔记的主要内容,如果未能解决你的问题,请参考以下文章
如何将文件递归复制到具有特定名称的所有文件夹中(首选批处理文件)