MongoDB 概念介绍

1、MongoDB 应用场景

传统的关系型数据库,在数据操作的"三高"需求以及应对Web2.0的网站需求面前,显得力不从心。

  • High performance -对数据库高并发读写的需求。
  • Huge Storage -对海量数据的高效率存储和访问的需求。
  • High Scalability && High Availability-对数据库的高可扩展性和高可用性的需求。

而 MongoDB 可应对“三高"需求,具体的应用场景如:

① 社交场景:使用MongoDB存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。

② 游戏场景:使用MongoDB存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、高效率存储和访问。

③ 物流场景:使用MongoDB存储订单信息,订单状态在运送过程中会不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。

④ 物联网场景:使用MongoDB存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析。

⑤ 视频直播:使用MongoDB存储用户信息、点赞互动信息等。

这些应用场景中,数据操作方面的共同特点是:

  • 数据量大
  • 写入操作频繁(读写都很频繁)
  • 价值较低的数据,对事务性要求不高

在架构选型上,除了上述的三个特点外,如果你还犹豫是否要选择它?可以考虑以下的一些问题:

  • 应用不需要事务及复杂join支持
  • 新应用,需求会变,数据模型无法确定,想快速迭代开发应用需要2000-3000以上的读写QPS(更高也可以)
  • 应用需要TB甚至PB级别数据存储
  • 应用发展迅速,需要能快速水平扩展应用要求存储的数据不丢失
  • 应用需要99.999%高可用
  • 应用需要大量的地理位置查询、文本查询
2、MongoDB 体系结构

MongoDB是一个开源、高性能、无模式的文档型数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品中的一种。是最像关系型数据库(MySQL)的非关系型数据库。

它支持的数据结构非常松散,是一种类似于JSON的格式叫BSON,所以它既可以存储比较复杂的数据类型,又相当的灵活。

MongoDB中的记录是一个文档,它是一个由字段和值对(field:value)组成的数据结构。MongoDB文档类似于JSON对象,即一个文档认为就是一个对象。字段的数据类型是字符型,它的值除了使用基本的一些类型外,还可以包括其他文档、普通数组和文档数组。

3、MongoDB 数据模型

4、MongoDB 特点

高性能:MongoDB 提供高性能的数据持久化

  • 嵌入式数据模型的支持减少了数据库系统上的 I/O 活动
  • 索引支持更快的查询, 并且可以包含来自嵌入式文档和数组的键 (文本索引解决搜索的需求, TTL 索引解决历史数据自动过期的需求, 地理位置索引可以用于构件各种 O2O 应用)
  • mmapv1, wiredtiger, mongorocks (rocksdb) in-memory 等多引擎支持满足各种场景需求
  • Gridfs 解决文件存储需求

高可用:MongoDB 的复制工具称作副本集 (replica set) 可以提供自动故障转移和数据冗余

高扩展

  • 水平扩展是其核心功能一部分
  • 分片将数据分布在一组集群的机器上 (海量数据存储, 服务能力水平扩展)
  • MongoDB 支持基于片键创建数据区域, 在一个平衡的集群当中, MongoDB 将一个区域所覆盖的读写只定向到该区域的那些片

丰富的查询:MongoDB支持丰富的查询语言, 支持读和写操作(CRUD), 比如数据聚合, 文本搜索和地理空间查询等. 无模式(动态模式), 灵活的文档模型

相关推荐

  1. mongodb介绍

    2023-12-30 11:04:03       45 阅读
  2. MongoDB CRUD 概述

    2023-12-30 11:04:03       56 阅读
  3. MongoDB 分布式 概述

    2023-12-30 11:04:03       27 阅读
  4. MongoDb数据库介绍安装使用

    2023-12-30 11:04:03       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-30 11:04:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-30 11:04:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-30 11:04:03       82 阅读
  4. Python语言-面向对象

    2023-12-30 11:04:03       91 阅读

热门阅读

  1. 神经网络分类与回归任务

    2023-12-30 11:04:03       51 阅读
  2. 1.2 金融数据处理

    2023-12-30 11:04:03       50 阅读
  3. wpf-动态设置组件【按钮为例】样式

    2023-12-30 11:04:03       55 阅读
  4. SQL面试题挑战13:分组topN

    2023-12-30 11:04:03       65 阅读
  5. CentOS 安装WebLogic

    2023-12-30 11:04:03       62 阅读
  6. centos搭建kubernetes集群步骤

    2023-12-30 11:04:03       46 阅读
  7. docker -v 和docker --device 有什么区别

    2023-12-30 11:04:03       57 阅读
  8. 自动化测试:selenium总结

    2023-12-30 11:04:03       62 阅读
  9. 如何准备 Azure 信息保护云退出计划

    2023-12-30 11:04:03       55 阅读