NoSql数据库之MongoDB学习笔记(一)

什么是NoSql:

Not Only SQL,本质也是数据库,相对于传统的数据库,不会遵循一些约束:sql标准,ACID属性,表结构等。

CAP理论:

C:Consistency(强一致性)数据库的一致性

A:Availability(可用性)服务没挂。

P:Partition tolerance(分区容错性)

分布式系统不能很好的同时满足CAP三个特性,最多只能同时满足两个

由于网络硬件的原因,一定会出现延迟丢包的等问题。所以分区容错性,是必须要实现的。

因此,根据CAP原理,将数据库分为若干阵营:

  • CA - 单点集群,满足一致性,可用性的系统,通常在可拓展性上不是很强。
  • CP - 满足一致性,分区容忍的系统,通常性能不是特别高。
  • AP - 满足可用性,分区容忍性的系统,同城对一致性要求低一些。

例如:

传统关系型数据库:CA,保证了一致性,一致性要求最高!性能瓶颈

MongoDB、Redis、HBase:CP

大多数网站:AP

NoSql优点:

  • 高并发读写:2000-3000+QPS
  • 海量数据高效存储访问:TB、PB+
  • 数据库高拓展、高可用:数据库水平拓展
  • 数据结构灵活:满足不固定场景,需求一直在变,数据模型无法确定,快速迭代开发。

NoSql缺点:

  • 一般不支持事务
  • 实现复杂SQL查询,比较复杂
  • 运维人员数据维护门槛高

NoSql分类:

序号类型典型产品应用场景
1

Key-Value

Redis、memcached缓存,处理高并发访问
2列式数据库Cassandra、Hbase分布式文件系统,列阵式,同一列数据存在一起
3文档型数据库MongoDBWeb应用、并发能力较强,表结构可变。类似K-V,Value为结构化数据
4图结构数据库infoGrid、Neo4j

社交网络、推荐系统


 

MongoDB和传统关系型数据库的区别

MongoDBRDBMS

数据模型

文档模型

关系模型
数据库类型OLTPOLTPOLTP(业务)覆盖了OLAP(日志)
CURD操作MQL/SQLSQLMQL不好写,如果mongoDB使用SQL,需要一套SQL解析引擎,用的不多
高可用复制集集群分布
横向扩展能力通过原生分片完善支持数据分区或者应用侵入式(分区、分表)

分表需要调整项目,数据库连接层需要做特殊配置

索引支持B+树,全文,地理位置,多键,TTL(带缓存过期日期)B树
开发难度容易,API少困难
数据容量

理论没上线,PB之上

千万、亿
扩展方式垂直拓展+水平拓展垂直拓展

拓展与数据库存储能力,当数据库大到一定程度后,解决方案:

  • 数据结转,例如,单表数据量1-2kw,短期内业务数据不会很大的时候。或者数据可以通过时间区分开,历史数据的查询量不会很大,归档,结转历史数据。活跃数据不超过2kw。

MongoDB

C++开发。高性能、无模式、文档性。功能最丰富,最像关系型数据库。Bson。

两大特性:

  • 开发效率显著提升,
  • 卓越的横向拓展能力。

实例:系统上运行库的进程及节点集,一个实例下可以又多个库。

:多个集合组成的数据库,每个数据库都是完全独立的,有自己的用户,权限信息,独立的存储文件集。

集合:一组文档,文档相当于的话,集合相当于。集合内的文档格式可以不同。

文档:MongoDB数据库中的最小数据集单位。基本概念为,多个K-V有序组合在一起的数据单元。

SQL术语 / 概念MongoDB术语 / 概念备注说明
databasedatabase数据库
tablecollection表 / 集合
rowdocument让 / 文档
columnfield字段 / 域
indexindex索引
table joins表连接 / MongoDB不支持
嵌入文档通过嵌入文档的方式替代多表连接
primary keyprimary key主键,MonogoDB自动将_id作为主键


MongoDB版本变迁

  • 0.x   2008 - 起步
  • 1.x   2010 - 支持复制集和分片集
  • 2.x   2012 - 更丰富的数据库功能
  • 3.x   2014 - WiredTiger和周边生态环境,从此有了自己的存储引擎,重要结点
  • 4.x   2018 - 分布式事务支持

MongoDB使用场景

不需要【事务】和复杂的【Join支持】

  • 游戏场景:用户信息、装备、积分等。内嵌文档的形式存储,方便查询,更新。
  • 物流场景:存储订单信息,订单随着运送状态不断更新。MongoDB内嵌数组的形式存储。
  • 社交场景:存储用户信息、用户朋友圈、地图索引实现的附近的人等。
  • 物联网场景:接入智能设备的信息,以及设备的日志信息,并对信息进行多维度分析。
  • 视频直播:用户信息,礼物信息。

不能使用的场景:

  • 银行财务信息:对事务要求非常高。
  • 商业智能应用:对特定的问题进行数据分析,建立多个数据实体的关联,涉及到高度复杂的高度优化的查询。
  • SQL方便,数据结构相对固定。 

MongoDB的结构灵活:

多形性:同一个集合中可以包含不同字段(类型的文档对象)--文档嵌套

动态性:线上修改数据模式,修改时应用与数据均无需下线

数据治理:支持使用JSON Schema规范数据模式。在保证模式灵活前提下,提供数据治理能力。

MongoDB安装

官网链接:https://www.mongodb.com/    下载地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值