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), 比如数据聚合, 文本搜索和地理空间查询等. 无模式(动态模式), 灵活的文档模型

相关推荐
喵叔哟20 分钟前
重构代码之移动字段
java·数据库·重构
念白44324 分钟前
智能病历xml提取
数据库·sql·oracle
qingy_204628 分钟前
【JavaWeb】JavaWeb入门之XML详解
数据库·oracle
大数据面试宝典32 分钟前
用AI来写SQL:让ChatGPT成为你的数据库助手
数据库·人工智能·chatgpt
努力的小雨37 分钟前
快速上手 KSQL:轻松与数据库交互的利器
数据库·经验分享
Gentle58639 分钟前
labview中连接sql server数据库查询语句
数据库·labview
Gentle58640 分钟前
labview用sql server数据库存取数据到一个单元格
数据库·labview
2401_8576363943 分钟前
共享汽车管理新纪元:SpringBoot框架应用
数据库·spring boot·汽车
菲兹园长43 分钟前
表的设计(MYSQL)
数据库·mysql
Java Fans1 小时前
MySQL数据库常用命令大全(完整版——表格形式)
数据库·mysql