MongDB有什么用
这篇文章给大家分享的是有关MongDB有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
1. 什么是NoSQl
NoSQL:Not Only SQL,本质也是一种数据库的技术,相对于传统数据库技术NoSQL不会遵循一些SQL的约束,比如:
1.1SQL标准:select * from table_name update table_name set delete from table_name 这些传统关系型数据库(Oracle、Mysql,DB2)等关系型数据都遵循的sql标准。
1.2事务的ACID特性:A(Atomicity原子性) C(Consistency一致性)I(Isolation 隔离性)D(Durability持久性)
1.3表结构等(NoSQL没有所谓的表结构)
2. NoSQL优点:
2.1满足对数据库的高并发读写(一个应用中最先出现性能瓶颈的就是DB层,一般Mysql能支持的并发在机器硬盘上为300左右,固态硬盘上为700左右。因此高并发场景下很容易突破数据库的性能瓶颈,关系型数据库在高并发读写性能上用户体验较差或者当并发大到一定量是直接导致数据库崩溃)
2.2对海量数据的搞笑存储和访问(传统关系型数据库当单表数据超过700万的时候用户体验就会极差,当数据量大到一定程度的时候需要考虑分库分表分区分片,读写分离,集群等手段保证数据库的性能。传统关系型数据库的横向扩展或纵向扩展维护成本较高,以及分布式事务的处理难度较大)
2.3对数据库的高扩展性和高可用性(相对于传统关系型数据库更容易实现水平扩展和集群搭建)
2.4灵活的数据结构,满足数据结构不固定的场景(传统关系型数据库有固定的表结构当需求频繁变化而且数据结构不定的时候,新的需求往往会因为涉及表结构的修改导致需求变更开发工作量大或牵一发而动全身的表结构修改不能实现新的需求)
3. NoSQL缺点:
3.1一般不支持事务,即使现在一些NoSQL已经支持了事务如Redis,MongoDB但是它们的事务都是弱一致性的事务,从事务支持的完整性和严格性上大不如关系型数据库
3.2实现复杂的SQL查询难度较大(比如要实现传统关系型数据库多表关联各种聚合函数的报表查询使用NoSQL实现难度较大)
3.3运维人员数据维护门槛较高(目前的运维人员对关系型数据库的维护比较拿手,但是要维护NoSQL数据库还需学习)
3.4目前不是主流的数据库技术(目前主流的数据库技术依然是关系型数据库)
4. NoSql数据库分类
5. Mongodb的基础概念
目前在NoSql数据库中Mongodb排名第一,因此学习Mongodb非常有必要
Mongdb:是一个数据库,高性能、无模式、文档型NoSQL数据库,是目前NoSQL中最热门的数据库,开源产品,是NoSQL中功能最丰富且最像关系型数据库的NoSQL数据库
特性:
5.1面向集合文档的存储:适合存储Bson(json的扩展)形式的数据
5.2格式自由,数据格式不固定,生产环境下修改结构都不影响程序的运行
5.3强大的查询API,面向对象的查询语言,基本覆盖sql语言的所有功能
5.4完整的索引支持,支持查询计划
5.5支持复制(主从)和自动故障转移(高可用单点故障)
5.6支持二进制数据及大型对象(文件)的搞笑存储
5.7使用分片集群提升系统扩展性
5.8使用内存映射存储引擎,把对硬盘的物理IO操作转换为内存操作提高读写性能但比较吃内存
6. Mongodb基本概念图解
7. MongoDB概念与RDMS概念对比
8. 如何决定一个业务场景是否需要使用MongoDB
并没有某一业务场景必须使用Mongodb才能解决,能用Mongodb解决的用关系型数据库都能解决,但是当选择使用Mongodb可以让问题或业务场景解决的成本更低的时候就可以考虑使用Mongodb,问题的解决成本包括(学习成本,开发成本,运维成本等)
以上如果第一个yes被否定就不建议使用mongodb,如果上述第一个必须yes的满足需求其余的选项中满足任意一个或多个都可以使用mongodb,满足的项越多越能体现mongodb的优势。
9. MongoDB使用场景
Mongodb的应用已经***到各个计算机软件领域,如游戏、物流、电商、内容管理、社交网络、物联网、视频直播等
9.1游戏场景:使用Mongodb存储游戏用户信息,用户的装备,积分等直接以内嵌文档的形式存储,方便查询更新
9.2物流场景:使用Mongodb存储商品评论、订单信息,订单状态状态在运送过程中会不断更新,以Mongodb内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来
9.3社交场景:使用Mongodb存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现查找附近的人,服务场所等功能
9.4物联网场景:使用Mongodb存储所有接入的只能设备的信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析
9.5视频直播:使用Mongodb存储用户信息,礼物信息等
10. 那些业务场景下不能使用MongoDB
10.1要求高度的事务性的系统:例如银行系统、财务系统、支付系统等,因为Mongodb对事务的支持完整性和严格性较弱
10.2传统的商业智能应用:特定问题的数据分析,多数据实体关联(多表join操作)涉及到复杂的关联查询的报表系统,高度优化查询的系统
10.3使用sql方便,数据结构相对固定以上情况不建议使用Mongodb
感谢各位的阅读!关于“MongDB有什么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341