MongoDB——入门篇(介绍)

基本介绍

MongoDB是一个文档数据库,它以JSON数据模型,由C++编写,旨在为WEB应用提供可扩展高性能数据存储方案

MongoDB支持的数据结构非常松散,其数据格式是BSON,即Binary JSON,BSON是类似于JSON的二进制形式的存储格式,同JSON一样可以支持内嵌式的文档对象和数组对象,也因此可以存储较为复杂的数据类型

MongoDB最大的特点是其支持的查询语言非常强大,其语法类似于面向对象的查询语言,几乎可以实现类似关系型数据库单表查询的绝大功能,且还支持对数据建立索引。原则上,Oracle 和 MySQL 能做的事情,MongoDB 都能做到(包括ACID事务)。

在数据库排行榜上,MongoDB仅次于Oracle、MySQL、SQL Server以及PostgreSQL,在NoSQL中排名首位

基本概念

MongoDB和关系型数据库的概念有许多相似之处:

RDBMSMongoDB
数据库(db)数据库(db)
表(table)集合(collection)
行(row)文档(doc)
列(column)字段(field)
主键(primary key)_id
索引(index)索引(index)
视图(view)视图(view)
表连接(join)聚合操作($lookup)

在非关系型数据库中,MongoDB的功能最为丰富,且最接近于关系型数据库,但仍存在不少差异:

  • MongoDB具有很明显的半结构化特点

    在一个集合中,文档所拥有的字段并不需要是相同的,而且也不需要对所用的字段进行声明。除了松散的表结构,文档还可以支持多级嵌套、数组等灵活的数据类型,因此非常契合面向对象的编程模型。

  • 弱关系

    MongoDB没有外键的约束,也没有非常强大的表连接能力,类似功能需要依靠聚合管道技术来弥补。

技术优势

  • 直观性:JSON 结构和对象模型接近,开发代码量低
  • 快速性:最简单快速的开发方式
    • 数据库引擎只需要在一个存储区进行读写
    • 反范式、无关联的组织极大的优化了查询速度
    • 程序API自然,开发快速
  • 灵活性:MongoDB基于灵活的JSON文档模型,非常适合敏捷式的快速开发
    • 多形性:一个集合可以包含不同字段(类型)的文档对象
    • 动态性:线上修改数据模式,且应用与数据库无需下线
    • 数据治理:支持JSON Schema来规范数据模式,在保证模式灵活动态的前提下,还提供了数据治理能力
  • 原生高可用
    • Replica Set (2~50)
    • 自恢复
    • 多中心容灾能力
    • 滚动服务-最小化服务终端
  • 横向扩展强大
    • 无缝扩展
    • 应用透明
    • 多种数据分布策略
    • 轻松支持TB~PB数据级

应用场景

应用场景

  • 社交场景:使用MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能;
  • 游戏场景,使用MongoDB存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新;
  • 物流场景,使用MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来;
  • 物联网场景,使用MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析;
  • 视频直播,使用MongoDB存储用户信息、礼物信息等;
  • 大数据应用,使用云数据库MongoDB作为大数据的云存储系统,随时进行数据提取分析,掌握行业动态;。

如何选择

没有哪个业务场景必须要使用MongoDB才能解决,但使用MongoDB通常能让你以更低的成本解决问题

  • 应用不需要复杂、长事务、join支持
  • 新应用、需求多变、数据模型无法确定、快速迭代
  • QPS在2000及以上
  • 数据存储在TB甚至PB级别
  • 应用发展迅猛,需要快速水平扩展
  • 要求数据不丢失
  • 需要99%的高可用
  • 需要大量的地理位置、文本查询
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SONNIE在路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值