前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大数据开发-什么是MongoDB?优缺点是哪些?

大数据开发-什么是MongoDB?优缺点是哪些?

作者头像
成都加米谷大数据
修改2021-05-11 18:07:47
1.4K0
修改2021-05-11 18:07:47
举报
文章被收录于专栏:大数据开发大数据开发

大家在大数据开发的学习中,肯定会遇到各种各样的数据库,比如MySQL,但是它是全能的吗?当然不是。所以才会出现各种各样的数据库,以适用于不同的场景,今天介绍的MongoDB就是如此。

一、什么是mongodb

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

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

它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

这里提一嘴,为什么普遍都采用数据库存储数据?

1.数据库是有结构的,数据与数据之间可以建立各种关系,类似网状拓扑图

2.数据库能够提供各种接口,让数据的处理(增删改查操作)变得快捷简单

3.给各种语言(PHP、jsp、.net…)提供了完善的接口

二、特点

它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:

1.面向集合存储,易存储对象类型的数据。

2.模式自由。

3.支持动态查询。

4.支持完全索引,包含内部对象。

5.支持查询。

6.支持复制和故障恢复。

7.使用高效的二进制数据存储,包括大型对象(如视频等)。

8.自动处理碎片,以支持云计算层次的扩展性。

9.支持RUBY,PYTHON,JAVA,C ,PHP,C#等多种语言。

10.文件存储格式为BSON(一种JSON的扩展)。

11.可通过网络访问。

三、优点

mongodb的优势就是文档存储:

1. 业务经常变动,需要不时的添加字段,那么mongodb比较适合,关系型数据库添加字段的复杂度也还好

2. 嵌套文档,业务数据比较复杂,适合嵌套文档式存储,那么mongodb非常合适,这个关系型数据库比较难搞,虽然MySQL和pg也有文档存储,但MySQL的不成熟,pg毕竟现在生产中使用还是偏少

3. upsert支持,查询速度也不慢

4. 高可用的副本集支持

5. 查询语法非常丰富,嵌套文档查询功能非常强大,不是重度用户可能不能理解

下面说说一个具体的使用事例:

如果项目的一条数据在10kb左右,使用关系型数据库那么需要将这条数据拆分成大概几百条左右,建造多个表,设计较复杂。这种数据大概在一百万条左右,想想拆分后在十几亿的数据量就可怕。打平后的数据什么DB也都可以拿下,只是一百万变十几亿比较恐怖而已。

如果采用MySQL存储,每次查询需要使用外键查询多个表,从这些表中拉取数据,性能肯定要下降很多,比不上只在一个表查询,而且只拉取少两个数量级的数据。查询也还好,业务允许可以对结果做缓存,放到redis里去。

但是重点来了,需求要增量更新部分数据,这时候需要更新多个表,根本没法做到原子性(注意事务不是原子操作),当然也可以使用cas等技术补偿,达到最终一致性。但使用mongodb存储只需要update一条数据,对相应的嵌套文档中内容更新,可以做到原子性,是不是很方便?

具体说说该项目的难点,查询无法使用缓存,可能会很吃惊,但是业务决定了确实做不了,而且增量更新的量达到上万的QPS,如果不能保证原子性想想多么可怕!

所以mongodb在这里帮了大忙,关系型数据库解决不了这个难题。

四、缺点

缺点也比较明显

1. 查询优化器和MySQL没法比

2. 不支持reload,只能冷重启,初始化配置的时候比较麻烦

3. 没有事务,不敢存储第一手数据,多用来做备份数据的存储

以上就是本期的所有内容了,大数据开发中会用到各种各样的数据库,但是数据库在特定的场景下适用性不同,所以我们要根据具体情况选择合适的数据库适用。

希望大家点个关注,及时收取最新文章推送,想了解更多敬请咨询加米谷大数据。

有问题的欢迎在评论区留言,如有侵权请告知。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档