### MongoDB基础知识概览 #### MongoDB简介 MongoDB是一款开源、高性能、无模式的文档型数据库管理系统,属于NoSQL数据库的一种。它使用JSON格式的数据结构来存储数据,支持多种数据类型,具备灵活的数据模型,适用于快速开发和大规模数据处理场景。 #### MongoDB特性 - **JSON格式与数据多样性**:MongoDB采用JSON格式存储数据,支持包括字符串、数字、数组等多种数据类型,使得数据存储更加直观和方便。 - **无模式设计**:MongoDB没有固定的数据表结构,可以自由添加新字段而无需修改表结构,极大地提高了数据的灵活性。 - **灵活的聚合查询**:提供了强大的聚合框架,能够支持复杂的查询需求,如分组、排序、条件筛选等。 - **丰富的Geo操作**:内置地理空间索引功能,支持基于地理位置的查询,如查找附近的地点等。 - **稳定的高可用性**:通过副本集和分片等机制实现数据冗余和故障恢复,确保系统的稳定运行。 - **便捷的横向扩展**:支持数据分片,可以轻松地通过增加硬件资源来提高系统性能和容量。 - **与大数据平台无缝对接**:可以直接与Hadoop等大数据处理平台集成,便于进行大数据分析。 #### 命名规则 - **数据库命名**:数据库名称必须全部小写,且不能包含特殊字符如`/\."$`等。长度不超过64个字符。 - **表命名**:表名称需以小写字母或下划线开头,不能包含`$`符号或其他空白字符,如`\0`。不能以`system.`开头。 - **字段命名**:字段名不能包含空字符`\0`,不能以`$`开头,不能包含`.`。键名区分大小写,并且不能重复。 #### 表结构设计原则 - **优先考虑内嵌**:对于关联性较强的数据,建议采用内嵌方式存储,以便提高查询效率。 - **数组结构的限制**:考虑到MongoDB文档大小限制(单个文档最大16MB),当数组元素数量较多时,不宜采用内嵌方式。 - **避免复杂操作**:对于需要频繁进行排序、排重等操作的数组,应谨慎考虑其设计方式。 - **清晰界定读写比例**:根据字段的读写频率来决定是否采用内嵌方式,对于只读不写的字段,内嵌是一个很好的选择。 #### MongoDB驱动使用 - **WriteConcern**:用于指定写入操作的确认级别,例如`{w:1}`表示写入主节点后确认,`{w:"majority"}`表示写入大多数节点后确认。 - **ReadPreference**:指定读取数据的偏好,如`primary`仅从主节点读取,`secondaryPreferred`优先从从节点读取,当从节点不可用时再从主节点读取。 #### MongoDB连接池管理 - MongoDB驱动内置了一个连接池,初始化时创建100个连接。每次操作都会获取一个连接并在完成后释放。合理设置连接池大小和超时时间对提高应用性能至关重要。 #### 系统参数调优 - **RAID配置**:推荐使用RAID5或RAID10,提高数据冗余性和读写速度。 - **文件系统**:使用ext4或xfs文件系统,并关闭atime,减少磁盘I/O负担。 - **NUMA与HugePage**:关闭NUMA和HugePage设置,优化内存使用。 - **OpenFile限制**:调整最大打开文件数限制,确保MongoDB有足够的文件句柄可用。 #### server参数调优 - **CacheSize控制**:通过设置`vm.overcommit_memory=2`来控制缓存大小。 - **最大连接数**:控制最大连接数,减少线程切换带来的性能损耗。 - **索引构建选项**:关闭索引构建重试选项`indexBuildRetry:false`,提高构建效率。 #### 配置示例 以下是一个简单的`mongod.cnf`配置文件示例: ```ini systemLog: destination: file path: "/var/log/mongodb/mongod.log" logAppend: true logRotate: "rename" timeStampFormat: "iso8601-local" verbosity: 0 storage: dbPath: "/var/lib/mongodb" directoryPerDB: true indexBuildRetry: false syncPeriodSecs: 60 journal: enabled: true commitIntervalMs: 100 engine: wiredTiger ``` 以上内容涵盖了MongoDB的基础学习知识点,包括其特性、命名规则、表结构设计原则、驱动使用及系统参数调优等方面,为初学者提供了一个全面的学习指南。
- 粉丝: 1
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助