全新版本MongoDB数据存储席卷物联网(转载)

Posted 伟拓自控

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全新版本MongoDB数据存储席卷物联网(转载)相关的知识,希望对你有一定的参考价值。

随着物联网的发展,数据的远程访问、异地存储以及之后的扩展均成为了各类项目需要妥善规划的问题,MangoDB便是DGLux5/DSA平台支持的数据存储访问方案之一。目前,各大云服务商也均提供了MangoDB的云端部署解决方案。下面便为大家带来一篇比较系统的MangoDB介绍。

 

MongoDB是文档型数据库,其核心的三大优势是灵活文档模型 、高可靠复制集、 高可扩展分片集群。在最新的DB Engine Rank 的排名中,MongoDB 排在第4,是非关系型数据库领域的领头羊。

1.     物联网抽象模型

物联网离我们越来越近,这主要得益于云计算和移动互联网技术的发展。物联网技术已经应用于智能家居、车联网等领域,我们用模型抽象出物联网应用的共性,很多设备(Assets)通过智能的传感器采集很多数据并发到云端,这些设备不断的产生日志、数据、事件并发到云端,数据在云端进行存储计算后,会产生很多结果以接口的形式提供出去,方便我们开发更多的手机AppWeb应用。



2.物联网存储需求

全新版本MongoDB数据存储席卷物联网(转载)


MongoDB 解决方案

全新版本MongoDB数据存储席卷物联网(转载)

 

3.1 文档模型

JSON 格式

全新版本MongoDB数据存储席卷物联网(转载)

JSON格式的好处:

  1. 最接近真实对象模型,对开发人员友好。

  2. Schemafree,增加和删除字段非常灵活,直面灵活多变的需求,快速迭代。

  3. 数组、内嵌文档支持,数据聚集,读写性能提升。

  4. 应用场景比如设备增加新特性;事件日志,数组+内嵌文档。


Schema free

全新版本MongoDB数据存储席卷物联网(转载)

随时动态增加字段如图,增加字段无需变更表结构。

MongoDB3.2版本推出了文档校验,使其兼备灵活和严禁的特性。

 

内嵌

全新版本MongoDB数据存储席卷物联网(转载)


使用MongoDB可以把所有的记录作为这个设备的元素以数组的形式存储起来,还可以划分,把每分钟汇报按小时为单位聚合存储,这样可以达到更少的文档、更快的查询。


GridFS

全新版本MongoDB数据存储席卷物联网(转载)

MongoDB 单个文档不能超过16MB,更大的文档可以使用 GridFS 来存储,例如物联网里 OTA 升级文件、图片视频等的存储。

GridFS原理:

文件内容分成多个文档存储在fs.chunks集合。

文件元信息存储在fs.files集合。

 

3.2 功能支持

数据压缩

全新版本MongoDB数据存储席卷物联网(转载)

MongoDB3.0之后推出了新的存储引擎WiredtigerWiredtiger存储引擎对数据的压缩支持非常好,用户原来自建的MongoDB使用 mmapv1,迁到云上后换成Wiredtiger,磁盘的容量通常能下降到原来的10%-30%


 

索引

MongoDB对索引的支持非常丰富,如物联网场景里经常被使用到的位置索引和TTL索引。位置索引可用于构建各种基于地理位置的应用,而 TTL 索引可以实现设备历史数据自动过期的功能。

全新版本MongoDB数据存储席卷物联网(转载)



1.        位置索引

MongoDB的位置索引可以针对一个字段,MongoDB支持两种类型的位置索引字段,点和更灵活的位置,只要字段是这种数据结构,就可以建立位置索引。建立位置索引后,就可以使用MongoDBneargeoWithin查询操作服务。

2.        TTL 索引

因为后端的存储数据有限,只能存储最近的数据,我们可以让MongoDB支持让指定数据在某段时间后过期。

TTL索引有两种应用模式:指定某段时间后过期和指定时间戳过期。MongoDBTTL索引的支持是有限制的,针对Date类型字段建索引。MongoDB在执行TTL索引时,后台过期逻辑每分钟执行一次。

全新版本MongoDB数据存储席卷物联网(转载)

 

3.3 高可用复制集特性

全新版本MongoDB数据存储席卷物联网(转载)



高可用复制集特性如下:

  1. 自动故障检测,自动failover

  2. 数据多副本存储,保证数据安全

  3. 多节点可同时提供读服务

以三节点复制集为例,会有一个Primary和两个Secondary,复制集里的所有成员通过选举协议选出Primary,默认情况下,所有数据都是写到Primary且只能通过Primary写,读也是通过Primary来读。三节点数据存储三份,可以容忍两个副本失效,保证了数据的高可靠。当Primary挂掉后,另外两个Secondary会发起新选举,保证服务正常进行。

 

3.4 连接访问

 

WriteConcern

全新版本MongoDB数据存储席卷物联网(转载)

MongoDB通过WriteConcern保证数据高可靠,默认情况下,MongoDB 使用{w: 1} WriteConcern 级别,当数据写到 primary 就像客户端返回。对于非常重要的数据,可在写入时设置WriteConcern: { w: “majority”},就会写到后端复制集成员的大多数,再向客户端返回,保证数据在有节点宕机时也能不丢失。

 

ReadPreference

全新版本MongoDB数据存储席卷物联网(转载)


MongoDB通过ReadPreference实现读写分离,可以指定读写对象。

 

3.5 可扩展分片集群

全新版本MongoDB数据存储席卷物联网(转载)


可扩展分片集群可以实现海量数据存储、高并发写入,例如物联网里大量设备汇报的日志数据。

MongoDB为了实现分片集群,引入了两个新的组件mongosConfigServersConfig Servers存储分片集群的元数据。首先配置好某个集合,按照某个key进行分片,接下来一条写请求就会到mongos上,mongosConfig Servers上查询路由表,把请求路由到后端的分片上,就实现了分片集群的功能。


shardKey

全新版本MongoDB数据存储席卷物联网(转载)

MongoDB支持范围分片,每一个范围在MongoDB的分片集群里成为一个Chunk,每一个Chunk就会分到后面的Shard上,优点是能很好的支持范围查询需求。

MongoDB支持Hash分片,针对Key先计算一次Hash值,再根据Hash值进行范围分片,优点是能均匀的将写请求分散到不同的分片。

选择集合的 shardKey 时并没有一个很完美的方案,需要用户根据数据分布特性、请求特性来选择最优的 shardKey,使用时应该尽量避免以下三个问题:

  1. key基数太小造成 jumbo chunk

  2. 写入分布不均,造成热点

  3. scatter/gather查询影响效率 

 

负载均衡

全新版本MongoDB数据存储席卷物联网(转载)


3.6 数据分析

内建支持

Aggregation Pipeline支持很多的运算符,传统关系型数据库单表能做的Aggregation Pipeline都可以做;MongoDB支持MapReduce,可以在MongoDB的集合上写MapReduce的任务,数据分析后,又写回MongoDB

 

外部框架


以上是关于全新版本MongoDB数据存储席卷物联网(转载)的主要内容,如果未能解决你的问题,请参考以下文章

物联网转载

物联网将终结公共云

把控元宇宙产业的发展脉络

全新蓝牙AOA室内定位技术亮相国际物联展

边缘计算和云计算是实现物联网的关键吗?

linux安装mongodb 并且远程连接