Post

MongoDB Base

Mongo DB 介绍

  • 数据模型:MongoDB 使用 BSON(二进制 JSON)格式来存储数据。BSON 是一种二进制表示形式,类似于 JSON,但支持更多的数据类型,例如日期、二进制数据和特定的地理空间类型。每个文档都有一个唯一的”_id”字段作为主键。
  • 集群和复制:MongoDB 支持分布式部署,可以将数据分布在多个服务器上的集群中。集群提供了高可用性和容错能力,如果某个节点发生故障,系统可以自动切换到其他节点。复制是通过将数据复制到多个服务器来实现的,其中一个服务器是主服务器,负责写入操作,其他服务器是备份服务器,用于读取操作和故障恢复。
  • 索引和查询:MongoDB 支持多种类型的索引,包括单字段索引、组合索引、文本索引和地理空间索引等。索引可以大大提高查询性能。MongoDB 的查询语言丰富而强大,支持比较、范围、正则表达式、逻辑操作符等复杂的查询操作。
  • 事务支持:MongoDB 从版本 4.0 开始引入了对多文档事务的支持。事务允许开发人员在多个操作上维护数据的一致性和完整性。通过事务,可以确保多个写操作要么全部成功执行,要么全部回滚,从而保持数据的一致性。
  • 安全性:MongoDB 提供了多种安全性功能来保护数据的机密性和完整性。它支持访问控制、身份验证和角色管理,可以限制用户对数据库的访问权限。此外,MongoDB 还提供了加密通信、字段级加密和审计功能等,以增强数据的安全性。
  • 可视化管理工具:MongoDB 提供了名为 MongoDB Compass 的官方可视化管理工具,用于浏览和操作数据库。它提供了一个直观的界面,可以执行数据查询、创建索引、监视性能和管理集群等任务。
  • 社区支持和生态系统:MongoDB 有一个庞大的活跃社区,提供了广泛的文档、教程和示例代码。此外,还有许多第三方工具和库与 MongoDB 集成,例如 ORM(对象关系映射)工具、数据迁移工具和可视化报表工具等,为开发人员提供了更多的选择和灵活性

优劣

  • 优势

    • 灵活的数据模型:MongoDB 使用类似 JSON 的 BSON 格式存储数据,文档模型非常灵活,可以存储不同结构的数据。
    • 高性能:MongoDB 支持水平扩展,能够处理大量的并发请求,具有很高的读写性能。
    • 强大的查询功能:支持丰富的查询操作,包括字段查询、范围查询、正则表达式、全文搜索等。
    • 高可用性:MongoDB 支持主从复制和分片,可以保证数据的高可用性和可靠性。
    • 自动分片:MongoDB 可以根据数据量自动分片,简化了水平扩展的管理
  • 劣势

    • 不支持事务:MongoDB 不支持跨文档的 ACID 事务,对于某些需要强一致性的场景可能不太适用。
    • 内存占用较高:MongoDB 在处理大量数据时需要较大的内存来维护索引和数据结构,会占用较多的系统资源。
    • 学习成本:对于习惯了关系型数据库的开发人员来说,需要一定的学习成本来适应 MongoDB 的文档模型和查询语言

数据库,集合,文档,限制,限制

CN 官方文档

  • 数据库(Database)
    • MongoDB 可以同时管理多个数据库。每个数据库都有独立的命名空间,用于存储集合和文档。
    • 每个数据库在物理上由一个或多个文件组成,这些文件存储实际的数据和索引。
  • 集合(Collection)
    • 集合是 MongoDB 中的一个逻辑概念,用于组织和存储一组相关的文档。
    • 集合不要求预定义的结构,即不同的文档可以有不同的字段和结构。
    • 集合可以通过数据库对象进行访问,例如 db.collectionName。
  • 文档(Document)
    • 文档是 MongoDB 中存储数据的基本单位,类似于关系数据库中的行。
    • 文档使用 BSON(二进制 JSON)格式表示,是一个有序的键值对集合。
    • 文档可以包含多种类型的数据,如字符串、整数、浮点数、布尔值、数组、嵌套文档等。
  • 限制(Limitations)
    • 单个文档的最大大小为 16MB。如果需要存储更大的数据,可以使用 GridFS 来处理大型文件。
    • 单个集合中的文档数目没有明确的限制,但是在实际使用中,应根据系统资源和查询性能进行适度的控制。
    • MongoDB 支持的最大数据库数量、集合数量和索引数量都有一定的限制,具体取决于 MongoDB 的版本和配置。
    • 在写操作中,MongoDB 的文档级别的原子性是保证的,但是在 MongoDB 4.0 之前,跨多个文档的事务支持是有限的。MongoDB 4.0 及之后的版本引入了全面的多文档事务支持。

配置文件

MongoDB 的配置文件是一个文本文件,通常命名为 mongodb.conf,它包含了 MongoDB 服务器的各种配置选项。这些选项可以控制 MongoDB 的行为、性能、安全性等方面。下面是一些常见的 MongoDB 配置选项及其解释:

  1. bindIp

    • 解释:指定 MongoDB 服务器绑定的 IP 地址,用于指定服务器监听的网络接口。默认值为 127.0.0.1,即只监听本地连接。如果要允许来自其他主机的连接,可以将其设置为 0.0.0.0
    • 示例:bindIp: 0.0.0.0
  2. port

    • 解释:指定 MongoDB 服务器监听的端口号。默认端口号为 27017
    • 示例:port: 27017
  3. dbpath

    • 解释:指定 MongoDB 存储数据文件的路径。在该路径下存放着 MongoDB 数据库文件。
    • 示例:dbpath: /data/db
  4. logpath

    • 解释:指定 MongoDB 日志文件的路径。MongoDB 会将运行时的日志信息输出到该文件中。
    • 示例:logpath: /var/log/mongodb/mongod.log
  5. logappend

    • 解释:指定是否在日志文件末尾追加日志信息。如果设置为 true,则新的日志信息将被追加到已有日志文件的末尾;如果设置为 false,则每次启动时都会清空日志文件。
    • 示例:logappend: true
  6. fork

    • 解释:指定是否以守护进程模式运行 MongoDB。如果设置为 true,则 MongoDB 在启动时会在后台运行;如果设置为 false,则 MongoDB 在启动时会在前台运行。
    • 示例:fork: true
  7. auth

    • 解释:指定是否启用身份验证功能。如果设置为 true,则 MongoDB 会要求连接时提供用户名和密码。
    • 示例:auth: true
  8. replication

    • 解释:指定 MongoDB 是否为复制集成员。复制集是一组 MongoDB 服务器的集合,用于提供数据的冗余备份和高可用性。
    • 示例:replication: { replSetName: "myReplicaSet" }
  9. security.authorization

    • 解释:指定 MongoDB 的授权模式。可以选择 “enabled”(启用)或 “disabled”(禁用)。启用授权后,需要通过用户名和密码进行身份验证。
    • 示例:security.authorization: enabled
  10. storage.journal.enabled

    • 解释:指定是否启用日志记录。启用日志记录可以提高 MongoDB 的数据持久性,但会对性能产生一定影响。
    • 示例:storage.journal.enabled: true
This post is licensed under CC BY 4.0 by the author.