APP下载

一种混合型异构数据存储方案

2021-08-09张文正孙知信宫婧

科技资讯 2021年11期
关键词:数据存储物联网

张文正 孙知信 宫婧

摘  要:为了解决物联网异构数据的存储问题,该文提出了一种混合技术存储方案。针对结构化数据存储,该文基于MySQL分布式数据库和Redis缓存,设计了结构化数据的存储方案;对于图片等非结构化数据,通过FastDFS分布式文件系统进行管理,使用Redis缓存保存文件的索引映射关系并实现快读热点数据的功能。最后对系统进行测试,测试结果表明该方案实现了性能目标。

关键词:物联网  数据存储  结构化数据  非结构化数据

中图分类号:TP3                             文献标识码:A文章编号:1672-3791(2021)04(b)-0001-04

A Hybrid Heterogeneous Data Storage Scheme

ZHANG Wenzheng  SUN Zhixin*  GONG Jing

(Nanjing University of Posts and Telecommunications, Nanjing, Jiangsu Province, 210023  China)

Abstract: In order to solve the storage problem of heterogeneous data in the Internet of Things, this paper proposes a hybrid technology storage scheme. For structured data storage, this paper designs a structured data storage scheme based on MySQL distributed database and Redis cache; for unstructured data such as pictures, it is managed through the FastDFS distributed file system, and the Redis cache is used to store the index mapping of the file relationship and realize the function of fast reading hot data. Finally, the system is tested, and the test results show that the solution in this paper has achieved the performance goal.

Key Words: Internet of things; Data storage; Structured data; Unstructured data

近年來,国内外在物联网方面的技术应用水平不断提升。伴随着传感器设备种类和数量的不断增加,物联网应用系统中的数据量也日益庞大且逐渐趋于多样化[1]。如何高性能地对各式各样的物联网数据进行存储,成为当前物联网领域的一个热点问题。为了解决物联网数据的高性能存储问题,该文研究了物联网数据的特点,提出了面向异构数据的混合型存储方案。

1  物联网数据存储需求分析

物联网数据的来源是不同的传感器设备[2],通常情况下物联网数据存储系统应满足以下几点要求。

1.1 可靠性

要有较好的数据备份与恢复方案,用以保证数据丢失状况下系统的可靠性。

1.2 开放性

提供相应数据接口,来解决不同场景的数据处理或分析。

1.3 实时性

针对实时监测的需求,可以实时地接收数据,且可以实时地计算处理。

2  物联网数据的分类

考虑到传感器型号、属性差异,物联网数据的往往没有一种统一的格式。一般可以分为两大类:一是结构化数据,可以很方便地用关系记录来表示,可存储在关系型数据库。二是非结构化数据,难以用常规的关系记录来表示,这类数据常使用非关系型数据库或是文件系统来进行管理,由于通常没有固定的格式,组织起来往往具有一定的难度[3]。

此外,这两类数据的性能指标是不一样的。对于结构化数据,由于单条数据记录占用空间非常少,一般没有千字节大小,所以这些数据很适合用传统的关系型数据库进行管理。至于非结构化数据,例如图片、文档,单个文件占用空间较少,通常状况下,占用空间在64 kB~1 MB,在这种情况下读写速度较快。

面对日益增长的各类数据,利用传统的存储方式和管理性能来管理物联网数据无法满足现在人们的需求。目前,分布式存储架构已是常见的数据管理方案,其原因有3点:一是使得管理的数据可以具有较好的可扩展性;二是能够显著提高系统性能;三是能够降低企业成本。

该文依据物联网数据的上述分类来制订混合型存储方案。结构化数据通过MySQL分布式数据库来进行管理,非结构化数据通过分布式文件系统FastDFS结合Redis缓存来进行管理。

3  数据存储模型

综合考虑系统的可靠性、事务处理、缓存策略等关键的影响因素,如图1所示,该文将存储模型整体分为应用层、服务层及存储层[4]。

3.1 结构化数据存储

3.1.1 MySQL分布式存储

分布式关系数据库即搭建分布式集群,把单一数据库里的多条数据按照一定策略划分,重新放到集群中的不同节点上,再依靠各节点的协同工作来实现数据的存储与管理。

对于大型的数据系统来说,若单表中保存的記录数量超过百万或者更高时,对于读取和写入就都会出现很大的困难。此外,集群中每个节点若是都管理同样的数据,那么理论上这就还是与单库容量相比并无不同,还是难以真正实现海量数据的高性能管理。

3.1.2 存储架构设计

随着数据采集节点和数据访问客户端的日益增加,如果只有一台应用服务器就难以容纳广大的数据流量,且常常会出现单点故障。此时就需要增加服务器的数量,并通过Nginx在数据流量的入口做负载均衡,这样能够使数据流量可以被放到不同的服务器来进行处理,就可以很好地解决上述问题。不过也要考虑到海量数据日益扩张,倘若数据还是在单库上进行读取和写入的话,很容易出现性能瓶颈。为了解决出现的性能瓶颈,对数据库的读取和写入操作进行了分离,通过主数据库进行写操作,通过从数据库进行读操作。数据库之间则是通过binlog实现相互的同步。读写性能问题可以在很大程度上得以解决。而对于部分读取非常多,而写入却非常少的数据,该文使用了Redis缓存[5],且通过缓存失效机制,可以避免偶尔会出现的Redis和MySQL之间存在不一致的数据的现象[6]。出于更进一步提高性能的目的,结合Mycat分布式数据库中间件,此中间件可以很好地提升关系数据库在数据量较大情况下的存储性能,使得存储架构灵活、易扩展。

数据写入的策略是,使用Nginx来反向代理不同客户端的访问请求,接着通过加权轮询计算出当前压力较小的Tomcat的地址。再通过计算出的地址,将数据放到写队列中预备后续的写入,最后再把数据写入到Redis里,并通过系统的数据访问接口也写入到MySQL中。

读取数据的过程为,客户端先在Redis缓存中查找数据,若查找到缓存数据,则对失效时间重置,并且把查到的数据提交至客户端。若Redis中没有,再到MySQL中查找。若在MySQL中查询到,则把查询到的数据提交至客户端,同时把数据同步到Redis;如果在MySQL中也没有查找到所需的数据,就表明该数据并不存在,将此结果反馈给客户端,读取流程结束。

3.2 非结构化数据存储

这里的非结构化数据是文本和图片等占用空间不大的文件。对于视频流等特殊格式暂未涉及。物联网终端设备数据通常单个体量小,文件大小为几千字节至几千字节。结合前文非结构化数据特点,对于单个体量较小的非结构化数据,该文选择了FastDFS。

3.2.1  FastDFS分布式文件系统

FastDFS作为很常用的轻量级分布式文件系统,可以结合Nginx反向代理服务器,并在此基础上可以在线访问文件,也就是能够借助HTTP协议实现对文件系统中的各项数据进行访问。FastDFS还支持负载均衡、冗余备份,很适合中小文件[7]。

FastDFS通过文件索引策略,可以显著地缩小元数据需要的存储空间。它的管理方式是在数据服务器中保存文件,文件保存至数据服务器之后,再返回依据一定的规则而生成的针对于此文件的索引映射信息,并把此映射信息保存至MySQL[3]。

3.2.2 存储架构设计

考虑到FastDFS存文件的时候都会生成并返回文件的索引信息,当访问数据时,就得利用此索引信息重新定位文件在FastDFS中的存储位置,所以这里文件及其在FastDFS中的索引信息所形成的映射,就得通过另外的工具来管理。为了提高性能,使用Redis缓存对原文件及其索引信息的映射进行管理。非结构化数据的存储架构见图2。

数据的写入过程是先把一份数据的副本保存在Redis里,再把数据保存在FastDFS里,等到设置的Redis自动失效时间,Redis中的副本将会被自动地抹去。而在返回文件保存在FastDFS中的索引信息的时候,将该信息在Redis中保存。再进行读取就可以重新定位文件的位置。

读FastDFS中管理的数据的方法不唯一。可以使用HTTP请求,并通过Nginx的反向代理,查找到所需的文件。这种方案较为简单但失去了Redis缓存对于热点数据的读取优势,且难以避免特殊状况中偶然发生的缓存穿透问题。因此,可以先在Redis中查找数据,如查找到,此时就提交并重新配置缓存失效时间。若在缓存中并没有查找到数据,则利用Redis中的映射关系,去FastDFS中读取,并把FastDFS里查找到的相关数据备份至Redis里,并设置数据失效时间。

4  系统测试

为了测试该文存储方案与传统的分布式存储相比是否更有效降低数据写入时延,该文基于数据存储模型,进行了仿真实验,结果见图3。

从图3中可以看出,当数据量较小时,该文方案与传统分布式存储方案的时延性能相差不大,随着任务量的不断增加,传统分布式存储时延增加非常明显,而该文方案依然具有较好的时延性能。

为进一步验证该方案的可靠性,将该方案与原生的FastDFS相比较,记录文件上传后能够成功读取的次数,将读取的成功率作为该次测试的指标[8]。仿真测试中,依次上传1 000个、2 000个、3 000个等体积为10 MB的文件,记录文件成功读取的次数,并计算成功率。实验的结果见图4。

通过图4可以看出,该方案读取成功率接近100%,明显高于常规FastDFS的成功率。

5  结语

该文研究了物联网异构数据的基本特征,设计物联网数据的存储模型,其中结构化数据通过分布式数据库进行管理,文本、图片等小体量非结构化数据通过FastDFS分布式文件系统进行管理。在此基础上又分别结合了Nginx负载均衡和Redis缓存更加深入地改善了系统性能。最后通过对系统进行性能方面的测试,证明了该方案的可行性。

参考文献

[1] 李道亮,杨昊.农业物联网技术研究进展与发展趋势分析[J].农业机械学报,2018,49(1):1-20.

[2] Phillip A Laplante,Nancy Laplante. The Internet of Things in Healthcare: Potential Applications and Challenges[J].IT Professional Magazine,2016,18(3):2-4.

[3] 甄凯成.面向物联网应用的数据接入和存储系统的设计与实现[D].中国科学技术大学,2019.

[4] 许鑫,时雷,何龙,等.基于NoSQL数据库的农田物联网云存储系统设计与实现[J].农业工程学报,2019,35(1):172-179.

[5] Alba Pedro-Zapater,Clemente Rodríguez,Juan Segarra,et al.Ideal and Predictable Hit Ratio for Matrix Transposition in Data Caches[J]. Mathematics,2020,8(2):184-206.

[6] 邱书洋.Redis缓存技术研究及应用[D].郑州大学,2016.

[7] 石珊.云平台下基于FastDFS的文件管理系统的研究与实现[D].电子科技大学,2019.

[8] 丛犁,李锐,王华,等.面向工业物联网的分布式数据存储分配方案[J].电力信息与通信技术,2020,18(7):52-57.

猜你喜欢

数据存储物联网
大数据时代档案信息建设的认识和实践
开源数据库数据存储的实现路径分析
基于Android开发的APP数据存储研究
哈希算法在物联网数据存储中的应用
基于高职院校物联网技术应用人才培养的思考分析
基于LABVIEW的温室管理系统的研究与设计
论智能油田的发展趋势及必要性
中国或成“物联网”领军者
大型在线式UPS及监控系统在中控机房的应用