跳转到内容

MongoDB

来自代码酷
MongoDB
Developer(s)MongoDB Inc.
Initial releaseFebruary 11, 2009; 16 years ago (2009-02-11)
模板:Infobox software/simple
Repository
  • {{URL|example.com|optional display text}}
Written inC++, JavaScript, Python
Engine
    Operating system跨平台
    TypeNoSQL数据库
    LicenseServer Side Public License
    Websitehttps://www.mongodb.com

    MongoDB是一个开源的NoSQL文档数据库,采用JSON风格的文档存储数据。它由MongoDB Inc.开发并维护,具有高性能、高可用性和易扩展性等特点,广泛应用于现代Web应用和大数据处理场景。

    历史[编辑 | 编辑源代码]

    MongoDB最初由10gen公司(后更名为MongoDB Inc.)在2007年开始开发,并于2009年2月首次公开发布。其名称源自英文单词"humongous"(巨大的),反映了其处理大规模数据的能力。

    主要特性[编辑 | 编辑源代码]

    文档数据模型[编辑 | 编辑源代码]

    MongoDB使用灵活的文档数据模型,数据以BSON(Binary JSON)格式存储,每个文档可以有不同的结构。

    {
      _id: ObjectId("5f8d8b8b8b8b8b8b8b8b8b8b"),
      name: "张三",
      age: 30,
      address: {
        city: "北京",
        street: "中关村大街"
      },
      hobbies: ["编程", "阅读", "旅行"]
    }
    

    查询语言[编辑 | 编辑源代码]

    MongoDB提供丰富的查询操作符:

    // 查询年龄大于30的用户
    db.users.find({ age: { $gt: 30 } })
    
    // 聚合查询:按城市统计用户数量
    db.users.aggregate([
      { $group: { _id: "$address.city", count: { $sum: 1 } } }
    ])
    

    索引支持[编辑 | 编辑源代码]

    MongoDB支持多种索引类型,包括单字段索引、复合索引、多键索引、全文索引和地理空间索引等。

    // 创建索引
    db.users.createIndex({ name: 1 })
    
    // 创建复合索引
    db.users.createIndex({ name: 1, age: -1 })
    

    复制与分片[编辑 | 编辑源代码]

    • 复制集:提供自动故障转移和数据冗余
    • 分片集群:支持水平扩展,处理大规模数据集

    架构[编辑 | 编辑源代码]

    MongoDB的主要组件包括:

    graph TD A[客户端] --> B[Mongos] B --> C[配置服务器] B --> D[分片1] B --> E[分片2] D --> F[复制集] E --> G[复制集]

    与其他系统的集成[编辑 | 编辑源代码]

    MongoDB可以与多种大数据技术集成,如Apache DrillApache Spark等。例如在Apache Drill中可以直接查询MongoDB数据:

    -- 在Drill中查询MongoDB
    SELECT * FROM mongo.test.users WHERE age > 30;
    

    使用案例[编辑 | 编辑源代码]

    MongoDB被广泛应用于以下场景:

    • 内容管理系统
    • 用户数据管理
    • 实时分析
    • 物联网数据处理
    • 移动应用后端

    版本历史[编辑 | 编辑源代码]

    版本 发布日期 主要特性
    1.0 2009-02-11 初始版本
    2.0 2011-09-12 引入分片集群
    3.0 2015-03-03 WiredTiger存储引擎
    4.0 2018-06-26 多文档ACID事务
    5.0 2021-07-13 时序集合
    6.0 2022-07-12 查询加密
    7.0 2023-08-15 可查询加密

    与其他数据库的比较[编辑 | 编辑源代码]

    特性 MongoDB MySQL Cassandra PostgreSQL
    数据模型 文档 关系 宽列 关系/文档
    扩展方式 水平 垂直 水平 垂直
    事务支持
    地理空间查询

    社区与支持[编辑 | 编辑源代码]

    MongoDB拥有活跃的开源社区,提供:

    • 官方文档和教程
    • MongoDB University免费课程
    • 社区论坛
    • 专业的企业版支持

    参见[编辑 | 编辑源代码]

    参考资料[编辑 | 编辑源代码]