MongoDB 项目应用场景及入门基础概念介绍

应用场景介绍

前段时间接手了一个项目,数据库用的是MongoDB,项目经过一段时间的接触与实践后,发现mongodb挺适合存储那种字段经常变且有一定数据量的数据,例如设备的采集数据。我接手的这个项目就是用mongodb来存储设备采集数据的,数据量大概在千万级别,有些地方设备多的,数据量会达到几亿级别,而且随着设备的升级,采集数据的字段也会经常变化,所以mongodb挺适合项目需求。

但mongodb也有它的缺点,就是性能上限不高,10亿级别的数据量,3台高配服务器搭建的mongodb集群也快顶不住压力,查询及插入性能已经很慢了,还不稳定,所以mongodb的性能瓶颈大概在10亿级别,当然你可以增加机器,但提升的性能空间不大;其次,mongodb不适合复杂的统计,因为写它的统计语句非常困难,有些统计还不一定能够实现,如果你用它来做统计,估计你会崩溃;还有数据库语法比较逆天,不好上手。

总的来说,如果你的项目数据量在千万级别至上亿级别,并且字段不固定且经常变的,类似文档结构的数据,那么mongodb比较适合你的项目需求;如果数据量达几十亿至百亿级别,那么它将不适合你,但我知道一种数据库能满足这么大的数据量,那就是ClickHouse数据库,我们有空再在clickhouse专栏里面专门介绍它。

入门基础概念

一、数据库

Mongodb的数据库跟mysql的数据库概念差不多,在MongoDB中,多个文档组成集合,而多个集合可以组成数据库。一个MongoDB实例可以承载多个数据库。
在这里插入图片描述

二、集合

集合就是一组文档,如果将MongoDB中的一个文档比喻为关系型数据库中的一行,那么一个集合就相当于一张表。

三、文档

文档是MongoDB的核心概念,文档就是键值对的一个有序集,可以类比成mysql的一行数据,但文档是用键值对表示的,例如:{“greeting”:“Hello, world!”, “foo”:3}
在这里插入图片描述

四、数据类型

· null
null用于表示空值或者不存在的字段:
{“x”:null}
· 布尔型
布尔类型有两个值true和false:
{“x”:true}
· 数值
shell默认使用64位浮点型数值。因此,以下数值在shell中是很“正常”的:
{“x”:3.14} 或 {“x”:3}
对于整型值,可使用NumberInt类(表示4字节带符号整数)或NumberLong类(表示8字符带符号整数),分别举例如下:
{“x”:NumberInt(“3”)}
{“x”:NumberLong(“3”)}
· 字符串
UTF-8字符串都可表示为字符串类型的数据:
{“x”:“foobar”}
· 日期
日期被存储为自新纪元以来经过的毫秒数,不存储时区:
{“x”:new Date()}
· 正则表达式
查询时,使用正则表达式作为限定条件,语法也与JavaScript的正则表达式语法相同:
{“x”:/foobar/i}
· 数组
数据列表或数据集可以表示为数组:
{“x”:[“a”, “b”, “c”]}
· 内嵌文档
文档可嵌套其他文档,被嵌套的文档作为父文档的值:
{“x”:{“foo”:“bar”}}
· 对象id
对象id是一个12字节的ID,是文档的唯一标识。
{“x”:ObjectId()}

这里推荐一个MongoDB的连接工具:Robo 3T,下面是MongoDB Linux安装包下载链接,有需要可以免费下载:mongodb-linux-x86_64-rhel70-4.2.0.tar.gz

如果你项目中也用到MongoDB,欢迎订阅我的Mongodb专栏

另外,在我的资源里上传了很多常用开发软件,有需要可以免费下载,都是免费的、免费的、免费的,重要的事情说三遍。

如果你有什么意见或建议,请在评论区发表评论!如果能帮助到你学习新知识,欢迎点赞、收藏+关注,技术创作不易,你们的支持,是我创作最大的动力!谢谢~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

新之助Java

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

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

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

打赏作者

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

抵扣说明:

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

余额充值