mongodb是什么类型的数据库?mongodb和mysql的区别是什么?

mongodb是什么类型的数据库?mongodb和mysql的区别是什么?,第1张

mongodb是什么类型的数据库?mongodb和mysql的区别是什么?

MongoDB是什么类型的数据库?MongoDB 是一个基于分布式文件存储的数据库。


由 C++ 语言编写。


旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。


MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。


Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。


1.MongoDB是什么?用一句话总结

MongoDB是一款为web应用程序和互联网基础设施设计的数据库管理系统。


没错MongoDB就是数据库,是NoSQL类型的数据库

2.为什么要使用MongoDB?

(1)MongoDB提出的是文档、集合的概念,使用BSON(类JSON)作为其数据模型结构,其结构是面向对象的而不是二维表,存储一个用户在MongoDB中是这样子的。


{

username:’123′,

password:’123′

使用这样的数据模型,使得MongoDB能在生产环境中提供高读写的能力,吞吐量较于mysql等SQL数据库大大增强。


(2)易伸缩,自动故障转移。


易伸缩指的是提供了分片能力,能对数据集进行分片,数据的存储压力分摊给多台服务器。


自动故障转移是副本集的概念,MongoDB能检测主节点是否存活,当失活时能自动提升从节点为主节点,达到故障转移。


(3)数据模型因为是面向对象的,所以可以表示丰富的、有层级的数据结构,比如博客系统中能把“评论”直接怼到“文章“的文档中,而不必像myqsl一样创建三张表来描述这样的关系。


3.主要特性

(1)文档数据类型

SQL类型的数据库是正规化的,可以通过主键或者外键的约束保证数据的完整性与唯一性,所以SQL类型的数据库常用于对数据完整性较高的系统。


MongoDB在这一方面是不如SQL类型的数据库,且MongoDB没有固定的Schema,正因为MongoDB少了一些这样的约束条件,可以让数据的存储数据结构更灵活,存储速度更加快。


(2)即时查询能力

MongoDB保留了关系型数据库即时查询的能力,保留了索引(底层是基于B tree)的能力。


这一点汲取了关系型数据库的优点,相比于同类型的NoSQL redis 并没有上述的能力。


(3)复制能力

MongoDB自身提供了副本集能将数据分布在多台机器上实现冗余,目的是可以提供自动故障转移、扩展读能力。


(4)速度与持久性

MongoDB的驱动实现一个写入语义 fire and forget ,即通过驱动调用写入时,可以立即得到返回得到成功的结果(即使是报错),这样让写入的速度更加快,当然会有一定的不安全性,完全依赖网络。


MongoDB提供了Journaling日志的概念,实际上像mysql的bin-log日志,当需要插入的时候会先往日志里面写入记录,再完成实际的数据 *** 作,这样如果出现停电,进程突然中断的情况,可以保障数据不会错误,可以通过修复功能读取Journaling日志进行修复。


(5)数据扩展

MongoDB使用分片技术对数据进行扩展,MongoDB能自动分片、自动转移分片里面的数据块,让每一个服务器里面存储的数据都是一样大小。


4.C/S服务模型

MongoDB核心服务器主要是通过mongod程序启动的,而且在启动时不需对MongoDB使用的内存进行配置,因为其设计哲学是内存管理最好是交给 *** 作系统,缺少内存配置是MongoDB的设计亮点,另外,还可通过mongos路由服务器使用分片功能。


MongoDB的主要客户端是可以交互的js shell 通过mongo启动,使用js shell能使用js直接与MongoDB进行交流,像使用sql语句查询mysql数据一样使用js语法查询MongoDB的数据,另外还提供了各种语言的驱动包,方便各种语言的接入。


5.完善的命令行工具

mongodump和mongorestore,备份和恢复数据库的标准工具。


输出BSON格式,迁移数据库。


mongoexport和mongoimport,用来导入导出JSON、CSV和TSV数据,数据需要支持多格式时有用。


mongoimport还能用与大数据集的初始导入,但是在导入前顺便还要注意一下,为了能充分利用好mongoDB通常需要对数据模型做一些调整。


mongosniff,网络嗅探工具,用来观察发送到数据库的 *** 作。


基本就是把网络上传输的BSON转换为易于人们阅读的shell语句。


因此,可以总结得到,MongoDB结合键值存储和关系数据库的最好特性。


因为简单,所以数据极快,而且相对容易伸缩还提供复杂查询机制的数据库。


MongoDB需要跑在64位的服务器上面,且最好单独部署,因为是数据库,所以也需要对其进行热备、冷备处理。


MongoDB和mysql的区别是什么?

MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库。


它们各有各的优点,关键是看用在什么地方。


所以我们所熟知的那些SQL语句就不适用于MongoDB了,因为SQL语句是关系型数据库的标准语言。



一、关系型数据库-MySQL

1、在不同的引擎上有不同的存储方式。


2、查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高。


3、开源数据库的份额在不断增加,mysql的份额页在持续增长。


4、缺点就是在海量数据处理的时候效率会显著变慢。



二、非关系型数据库-MongoDB

非关系型数据库(nosql ),属于文档型数据库。


先解释一下文档的数据库,即可以存放xml、json、bson类型系那个的数据。


这些数据具备自述性,呈现分层的树状数据结构。


数据结构由键值(key=>value)对组成。


1、存储方式:虚拟内存+持久化。


2、查询语句:是独特的MongoDB的查询方式。


3、适合场景:事件的记录,内容管理或者博客平台等等。


4、架构特点:可以通过副本集,以及分片来实现高可用。


5、数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。


6、成熟度与广泛度:新兴数据库,成熟度较低,Nosql数据库中最为接近关系型数据库,比较完善的DB之一,适用人群不断在增长。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/575301.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-10
下一篇 2022-04-10

发表评论

登录后才能评论

评论列表(0条)

保存