CN110389939A - 一种基于NoSQL和分布式文件***的物联网存储*** - Google Patents
一种基于NoSQL和分布式文件***的物联网存储*** Download PDFInfo
- Publication number
- CN110389939A CN110389939A CN201910119401.1A CN201910119401A CN110389939A CN 110389939 A CN110389939 A CN 110389939A CN 201910119401 A CN201910119401 A CN 201910119401A CN 110389939 A CN110389939 A CN 110389939A
- Authority
- CN
- China
- Prior art keywords
- data
- module
- nosql
- file system
- responsible
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于NoSQL和分布式文件***的物联网存储***,包括NoSQL交互模块,负责与NoSQL数据库交互;分布式文件***交互模块,负责与分布式文件***交互;时序索引模块,负责时序数据的存储和索引,使数据可以基于时间点,时间范围获取,并负责时序数据的合并归档;持久化模块,负责对单独的较大数据对象进行特殊处理以提高性能。本发明有效的利用了NoSQL数据库高写入性能的特点和分布式文件***廉价易扩展的特点,成功构建了一个高性能,廉价,易扩展,高可用的物联网数据存储***,相对于现有的SQL数据存储***和普通分布式文件***,其存储物联网海量小数据的性能显著提高。
Description
技术领域
本发明涉及物联网存储的技术领域,尤其是指一种基于NoSQL和分布式文件***的物联网存储***。
背景技术
物联网是一个将海量传感设备与互联网相结合而形成的巨大网络,随着物联网技术的发展其应用规模不断扩大。由于海量传感器不断地将数据采集并发送到数据中心,物联网数据呈现海量特性,并***式的增长,形成了物联网大数据。物联网数据不仅存储容量巨大,还有类型繁多,数据大小变化,流动快,易产生亿级甚至十亿级海量小文件等特点。由于在数据管理,访问性能,存储效率等方面面临着巨大挑战,其存储也成为工业难题。
衡量数据存储性能的关键指标主要为IOPS即每秒输入输出量或称读写次数和数据吞吐量。目前的存储***,主要包括传统SQL数据库和非关系型NoSQL数据库。SQL数据库由于需要建立复杂索引应用于查询,面对海量小文件时,其索引建立和遍历式的查询都带来过高的性能损耗,因此不能很好的适应物联网存储***。新兴NoSQL数据库中,Redis及Memcached等内存数据库存储成本高昂,Hbase依托于Hadoop家族的集群环境,在运维上较为复杂,相较而言,Google推出的leveldb作为可持久化的NoSQL,较为合适,但作为嵌入程序的数据库,若使其适应物联网程序,满足物联网程序多数据中心,大数据量,可扩展等需求,则需要深度的二次开发。
符合物联网应用场景的数据存储***应具有以下特点:其一,适应多写少读的使用场景;由于物联网存储***无时无刻不在收集来自传感器的数据,其写入极为频繁,相对而言,当需要数据展示,数据分析,数据获取时才需要人为的读取数据,其读取频率远小于写入频率。其二,存储***应能应对海量小数据的读写;物联网数据以传感器信息为主,单条数据往往不超过KB级。其三,要有一定的索引能力和分析能力;物联网海量小数据若仅仅为存储或历史记录而存在,则成本过高,这些数据需要在数据分析中体现出其价值,这就要求物联网数据存储***对数据提供一定程度的索引;其四,要有多数据中心工作的能力;由于当前网络条件的制约,物联网应用并不适合运行在云端,物联网终端往往需要网络条件良好的,能快速反应的数据中心对其进行回应,这就要求物联网数据存储***需要能够同时运行在多个数据中心,而这些数据中心又不能是孤立的,它们应是一个完整的存储***,能够从任何访问点获取到全部数据。
发明内容
本发明的目的在于克服现有数据库产品面对物联网数据时的不足,提出了一种基于NoSQL和分布式文件***的物联网存储***,该***性能高可用且实用性极强,可以满足物联网应用的数据存储,进而提高物联网应用的性能。
为实现上述目的,本发明所提供的技术方案为:一种基于NoSQL和分布式文件***的物联网存储***,包括:
NoSQL交互模块,负责控制NoSQL数据库连接池的配置和创建,并负责控制将临时数据和持久数据的索引数据存储到NoSQL数据库;
分布式文件***交互模块,负责控制对分布式文件***的连接,同时负责控制数据以文本形式存储进分布式文件***,并获取其索引信息;
时序索引模块,负责控制时序数据在存储***中的归档,已归档临时数据的删除,以及提供时序索引能力;
持久化模块,负责控制NoSQL中单个大数据对象持久化到分布式文件***中。
进一步,所述NoSQL交互模块包括第一配置文件读取模块、NoSQL数据库连接模块、键值存储模块和有序哈希表存储模块,其中:
所述第一配置文件读取模块负责从配置文件中读取NoSQL数据库的配置,包括主机名、端口号、连接超时判定时间、数据库连接池配置和数据库扫描数限制;
所述NoSQL数据库连接模块负责根据第一配置文件读取模块读取到的配置连接NoSQL数据库,维护数据库连接池;
所述键值存储模块负责根据唯一的键从NoSQL中存储数据,根据唯一的键从NoSQL中获取数据,根据部分键内容模糊匹配并获取数据,根据键范围匹配并获取数据;
所述有序哈希表存储模块负责根据哈希表名和哈希表中唯一的键向NoSQL中存储数据,根据哈希表名和哈希表中唯一的键从NoSQL中获取数据,根据部分哈希表名内容模糊匹配哈希表名,根据哈希表名和部分键内容模糊匹配并获取数据,根据哈希表名和键范围匹配并获取数据。
进一步,所述分布式文件***交互模块包括第二配置文件读取模块、分布式文件***连接模块和文件操作模块,其中:
所述第二配置文件读取模块负责从配置文件中读取分布式文件***的配置,包括分布式文件***调度服务器主机名、分布式文件***调度服务器端口号、连接超时判定时间、数据读取超时判定时间和最大连接线程数;
所述分布式文件***连接模块负责根据第二配置文件读取模块读取到的配置连接分布式文件***调度服务器,维护连接线程池;
所述文件操作模块负责上传数据到分布式文件***并返回能从分布式文件***中获取该数据的唯一键,根据唯一键从分布式文件***中下载对应的数据,根据唯一键从分布式文件***中删除对应的数据。
进一步,所述时序索引模块包括第三配置文件读取模块、时序数据存储模块、时序数据归档模块、时序数据删除模块和时序数据查找模块,其中:
所述第三配置文件读取模块负责从配置文件中读取用户设置的需归档键、归档时间间隔、临时数据清理时间间隔和触发临时数据清理需要的最小数据数;
所述时序数据存储模块负责通过键值对将临时时序数据存储进NoSQL,同时存储时间信息;
所述时序数据归档模块负责根据第三配置文件读取模块获取的归档时间间隔,将第三配置文件读取模块获取的用户设置的需归档键在NoSQL中的临时时序数据取出,合并为统一的文件上传到分布式文件***,并将返回的分布式文件***文件Id存储到NoSQL中;
所述时序数据删除模块负责根据第三配置文件读取模块获取的临时数据清理时间间隔,将第三配置文件读取模块获取的用户设置的需归档键在NoSQL中的临时时序数据数与第三配置文件读取模块获取的临时数据清理需要的最小数据数做比较,若大于,则将这些临时文件清除;
所述时序数据查找模块负责根据键和时间信息,判断数据所在的位置并获取数据以及根据键和时间范围,从NoSQL和分布式文件***中获取符合的全部数据,并合并为一个表返回给用户。
进一步,所述持久化模块包括第四配置文件读取模块、持久化数据存储模块和持久化数据获取模块,其中:
所述第四配置文件读取模块负责从用户配置读取持久化任务工作时间间隔和持久化键;
所述持久化数据存储模块有以下两种工作方式:a、当用户未指定数据直接存储到分布式文件***时,负责先将数据存储到NoSQL中,再根据第四配置文件读取模块获取的持久化任务工作时间间隔将第四配置文件读取模块获取的持久化键对应的数据存储到分布式文件***中,并更新NoSQL中该持久化键的值为从分布式文件***返回的对应的文件Id;b、当用户指定数据存储到分布式文件***时,负责将数据上传到分布式文件***中,并将键和从分布式文件***返回的对应文件的文件Id存储到NoSQL中;
所述持久化数据获取模块负责根据用户提供的键对应的NoSQL中的值的数据格式,判断该值为文件Id或是数据,若为文件Id,则从分布式文件***下载该数据返回给用户;若为数据,则直接返回给用户。
本发明与现有技术相比,具有如下优点与有益效果:
1、由于采用了NoSQL作为直接的存储,充分利用了NoSQL作为内存数据库/包含内存缓存的可大量写入特点,解决了物联网***中写入瓶颈的问题。
2、针对物联网小数据,本发明存储***使用NoSQL进行直接的数据交互,并异步的将小文件合并存入分布式文件***,减少了了IO开销和元数据索引导致的空间占用。
3、由于本发明针对了物联网传感器数据具有时序性的特点,根据传感器标识和时间进行索引,能够完成大多数物联网数据的快速查找和批量分析任务。
4、针对物联网***中常见的多数据中心问题,本方案中,只要选择具有数据同步能力的NoSQL,并在多个数据中心部署分布式文件***的调度节点和存储节点,即可完成多数据中心的数据同步。
5、由于现有的硬盘存储为维护其索引树如B树、LSM树需要占用大量的空间,并带来大量重复写入,会造成较大的写放大和硬盘空间占用。本***通过将数据值存储到分布式文件***,仅将索引保留在NoSQL中进行维护,极大的降低了硬盘空间占用和写放大。
6、由于现有的NoSQL硬盘存储通常采用LSM树维护索引,其数据以层级为基础进行存储,对数据查找时,可能需要查找较深层级,从而降低了读取效率。本***通过将数据值存储到分布式文件***,仅保留索引在NoSQL中,可以降低NoSQL中单条数据的大小,从而大幅度增大每层可存储数据条数,减少层级深度,进而提高了读取效率。
附图说明
图1是本发明模块关系示意图。
图2是本发明时序索引模块较佳实施例归档流程图。
图3是本发明时序索引模块较佳实施例获取单条数据流程图。
图4是本发明时序索引模块较佳实施例根据时间范围获取数据流程图。
图5是本发明持久化模块较佳实施例获取数据流程图。
具体实施方式
下面结合具体实施例对本发明作进一步说明。
本实施例所提供的基于NoSQL和分布式文件***的物联网存储***,包含NoSQL交互模块、分布式文件***交互模块、时序索引模块和持久化模块,基于这些模块可以高效廉价的存储海量物联网小数据并提供高频率的交互服务。模块间关系如图1所示。
NoSQL交互模块,负责控制NoSQL数据库连接池的配置和创建,并负责控制将临时数据和持久数据的索引数据存储到NoSQL数据库;
分布式文件***交互模块,负责控制对分布式文件***的连接,同时负责控制数据以文本形式存储进分布式文件***,并获取其索引信息;
时序索引模块,负责控制时序数据在存储***中的归档,已归档临时数据的删除,以及提供时序索引能力;
持久化模块,负责控制NoSQL中单个较大数据对象持久化到分布式文件***中。
所述NoSQL交互模块包括第一配置文件读取模块、NoSQL数据库连接模块、键值存储模块和有序哈希表存储模块,其中:
所述第一配置文件读取模块负责从配置文件中读取NoSQL数据库的配置,包括主机名、端口号、连接超时判定时间、数据库连接池配置和数据库扫描数限制;
所述NoSQL数据库连接模块负责根据第一配置文件读取模块读取到的配置连接NoSQL数据库,维护数据库连接池;
所述键值存储模块负责根据唯一的键从NoSQL中存储数据,根据唯一的键从NoSQL中获取数据,根据部分键内容模糊匹配并获取数据,根据键范围匹配并获取数据;
所述有序哈希表存储模块负责根据哈希表名和哈希表中唯一的键向NoSQL中存储数据,根据哈希表名和哈希表中唯一的键从NoSQL中获取数据,根据部分哈希表名内容模糊匹配哈希表名,根据哈希表名和部分键内容模糊匹配并获取数据,根据哈希表名和键范围匹配并获取数据。
所述分布式文件***交互模块包括第二配置文件读取模块、分布式文件***连接模块和文件操作模块,其中:
所述第二配置文件读取模块负责从配置文件中读取分布式文件***的配置,包括分布式文件***调度服务器主机名、分布式文件***调度服务器端口号、连接超时判定时间、数据读取超时判定时间和最大连接线程数;
所述分布式文件***连接模块负责根据第二配置文件读取模块读取到的配置连接分布式文件***调度服务器,维护连接线程池;
所述文件操作模块负责上传数据到分布式文件***并返回能从分布式文件***中获取该数据的唯一键,根据唯一键从分布式文件***中下载对应的数据,根据唯一键从分布式文件***中删除对应的数据。
所述时序索引模块包括第三配置文件读取模块、时序数据存储模块、时序数据归档模块、时序数据删除模块和时序数据查找模块,其中:
所述第三配置文件读取模块负责从配置文件中读取用户设置的需归档键、归档时间间隔、临时数据清理时间间隔和触发临时数据清理需要的最小数据数;
所述时序数据存储模块负责通过键值对将临时时序数据存储进NoSQL,同时存储时间信息;
所述时序数据归档模块负责根据第三配置文件读取模块获取的归档时间间隔,将第三配置文件读取模块获取的用户设置的需归档键在NoSQL中的临时时序数据取出,合并为统一的文件上传到分布式文件***,并将返回的分布式文件***文件Id存储到NoSQL中;
所述时序数据删除模块负责根据第三配置文件读取模块获取的临时数据清理时间间隔,将第三配置文件读取模块获取的用户设置的需归档键在NoSQL中的临时时序数据数与第三配置文件读取模块获取的临时数据清理需要的最小数据数做比较,若大于,则将这些临时文件清除;
所述时序数据查找模块负责根据键和时间信息,判断数据所在的位置并获取数据以及根据键和时间范围,从NoSQL和分布式文件***中获取符合的全部数据,并合并为一个表返回给用户。
所述持久化模块包括第四配置文件读取模块、持久化数据存储模块和持久化数据获取模块,其中:
所述第四配置文件读取模块负责从用户配置读取持久化任务工作时间间隔和持久化键;
所述持久化数据存储模块有以下两种工作方式:a、当用户未指定数据直接存储到分布式文件***时,负责先将数据存储到NoSQL中,再根据第四配置文件读取模块获取的持久化任务工作时间间隔将第四配置文件读取模块获取的持久化键对应的数据存储到分布式文件***中,并更新NoSQL中该持久化键的值为从分布式文件***返回的对应的文件Id;b、当用户指定数据存储到分布式文件***时,负责将数据上传到分布式文件***中,并将键和从分布式文件***返回的对应文件的文件Id存储到NoSQL中;
所述持久化数据获取模块负责根据用户提供的键对应的NoSQL中的值的数据格式,判断该值为文件Id或是数据,若为文件Id,则从分布式文件***下载该数据返回给用户;若为数据,则直接返回给用户。
在解释具体实施方式前,首先需要明确本实例中使用的以下名词:
1、物联网数据标识:在物联网存储中通常设计为传感器标识+功能号,用于作为每类数据的唯一索引。
2、物联网数据表:一种哈希表结构,以物联网数据标识为哈希表名称,数据时间为键,数据对象为值。其中数据对象被序列化为JSON文件。
3、最小归档数:用户配置的数值,当一个物联网数据表中数据数量大于该数值时,才需要进行归档。
4、最新归档标识:一个用作键的特殊字符串。以此为键的数据,其值为最新的归档文件的时间戳。
5、时序文件标识:表示文件的特殊字符串+物联网数据标识+最新归档文件时间戳。以此为键的数据,其值为分布式文件***中的文件ID。其特点为当物联网数据标识已知时,可快速通过时序文件标识获取归档时间。
本实例中,NoSQL数据库选用了基于leveldb二次开发的SSDB,其将leveldb改造成了基于网络I/O的数据库存储,具备了多数据库网络同步的功能;分布式文件***选用了FastDFS。传统的分布式文件***如Hadoop或MogileDFS,花费大量空间维护索引,且维护节点本身即性能瓶颈,在存储物联网数据时会面临占用空间过大问题,加剧了对性能的影响,而FastDFS不维护索引,仅将文件id返回给用户,可以减少这一困扰。此外,传统的以块为单位的文件***,不适合做物联网数据的存储,相对而言,FastDFS,MogileDFS等分布式数据库不进行分块,对小文件存储更加有利。
本实例的启动程序的步骤如下:
步骤S00:启动NoSQL数据库。
步骤S01:启动分布式文件***。
步骤S02:启动NoSQL交互模块,读取配置文件,并测试连通性。
步骤S03:启动分布式文件***交互模块读取配置文件,并测试连通性。
在物联网数据中,有两大类数据,一种是仅需存储一次,作为配置硬件设置,用户信息等用途的配置数据,另一种,是来自传感器的海量小数据。对于前者,在本方案中,仅需调用NoSQL交互模块的相关接口存入数据库中即可,后者是本方案中应对的重点。由于传感器数据具有天然的时序性,同一传感器设备在同一时间点不会给服务器传递多条互有冲突的数据,利用这一特点,物联网存储***以传感器和时间为索引,则可以免除数据冲突的忧虑。因此,本发明中,采用了时序索引模块来处理物联网数据,用户可以在使用本***时调用时序索引模块的相关接口来进行物联网数据的存储和读取。通过时序索引模块存储数据包括两个步骤,首先根据以数据中的传感器信息及其他标识为物联网数据标识(如传感器唯一id+数据包功能码),以数据为值,调用时序索引模块的存储接口。之后,时序索引模块的存储接口以物联网数据标识为键,同时存储当前***时间和作为值得数据。对于时序索引模块的数据存储,步骤具体实现如下:
输入:物联网数据标识,数据对象。
步骤S100:将数据对象序列化。
步骤S110:以物联网数据标识为物联网数据表名,根据当前***时间生成时间戳作为键,序列化的数据作为值,将数据存储到NoSQL中。
时序索引模块提供适用于计划任务的归档接口,需要用户根据自己的使用需求,编写具体计划任务对其进行调用,其归档方案步骤包括两步,首先基于时许索引模块键获取全部归档数据,之后将数据整合成同一文件并上传到分布式文件***,以时许索引模块键和归档时间戳为索引,以分布式文件***的返回id为值,存储到NoSQL。同时,时序索引模块根据计划任务将已归档数据从NoSQL中删除。对于时序索引模块的归档步骤,如图2所示,具体实现如下:
输入:物联网数据标识。
步骤S200:以物联网标识为NoSQL中物联网数据表的名称,获取物联网数据表的数据量。
判断:数据量大于最小归档数?是:步骤S201;否:停止归档。
步骤S201:将物联网数据表序列化为JSON存储到内存,异步根据计划任务清空物联网数据表。
步骤S210:以最新归档标识为键,最新归档文件时间戳即当前***时间为值,存储到物联网数据表中。
步骤S211:将JSON上传到分布式文件***,并获取文件ID。
步骤S212:以时序文件标识为键,将文件ID存储进NoSQL
从时序索引模块中读取数据,需要调用模块中的get方法,首选需要判断用户是否开启归档功能,若非,直接从NoSQL中获取数据;若用户已开启归档功能,检查NoSQL中是否存在数据,若存在则返回给用户;若用户已开启归档功能且NoSQL中无该数据,查找时间戳位于该请求数据时间之后的最近归档文件,从分布式文件***下载该文件并从中获取数据返回给用户。对于时序索引模块中单条数据的获取步骤,如图3所示,具体实现如下:
输入:物联网数据标识,时间戳,对象类型。
步骤S300:根据物联网数据标识,以时间戳为键从NoSQL中的物联网数据表获取值并根据类型反序列化为对象。
判断:获取到的对象为空或未开启归档功能?是:返回对象;否:步骤S310。
步骤S310:根据时序文件标识,查找出该物联网数据标识的所有归档时间并排序。
步骤S311:通过二分查找的方法获取第一个时间大于等于时间戳的归档时间。
步骤S312:从分布式文件***下载该归档时间对应的归档文件。
步骤S313:将该文件中JSON反序列化为物联网数据表,以时间戳为键获取所求对象。其后返回对象。
此外时序索引模块提供了根据时间段范围获取数据的方案,需要以时间段为参数调用模块的get方法,对传入时间段进行检查,若未开启归档功能,从NoSQL中扫描该时间段数据返回给用户,若开启了归档功能,则根据时间段先将NoSQL中该时间段内数据添加到返回列表,再从分布式文件***中获取存在对应时间段数据的文件,将其中数据添加到返回列表。对于时许索引模块中根据时间范围获取数据,如图4所示,具体实施如下:
输入:物联网数据标识,起始时间戳,终止时间戳,对象类型。
步骤S400:对传入时间段进行检查,起始时间戳为空则置为UNIX原点,终止时间戳为空则置为当前***时间。
判断:是否开启归档功能?是:步骤S420;否:步骤S410。
步骤S410:根据起始时间戳,终止时间戳扫描NoSQL中物联网数据表中所有对象,反序列化为对应对象类型的哈希表。其后返回哈希表。
步骤S420:创建一个键为时间戳类型,值为对象类型的哈希表。
步骤S421:根据物联网标识确定NoSQL中物联网数据表并根据最新归档标识获取最新归档时间。
步骤S422:如果终止时间戳在最新归档标识的时间之后,则根据起始时间戳,终止时间戳扫描NoSQL中物联网数据表中所有对象,反序列化为对应对象类型并添加到哈希表中。
步骤S423:如果起始时间戳在最新归档时间之前,则根据起始时间戳和物联网标识从时序文件标识中获取该归档键自起始时间戳以来的归档文件的时间列表,通过二分查找获取出其最小的终止时间戳之后的时间的索引(若终止时间戳在最新归档时间之后则为最大索引),获取全部与数据相关的归档文件时间。
步骤S424:利用归档文件时间,通过时序文件标识从分布式文件***下载所有归档文件,并将每个文件中的数据反序列化,添加到哈希表中。
步骤S425:将哈希表中时间在其实时间戳之前的对象和时间在终止时间戳之后的对象移除。其后返回哈希表。
步骤S425:将哈希表中时间在其实时间戳之前的对象和时间在终止时间戳之后的对象移除。其后返回哈希表。
除时序的需要合并为文件统一存储的传感器小数据外,物联网程序中还存在如视频监控数据,音频监控数据等大型数据,这些数据不适合存储在NoSQL数据库中。对于NoSQL内存存储,其空间占用过高,不适合长期存储。对于NoSQL硬盘存储如leveldb,由于在归并过程中会产生多层级的重复写入,占用空间,大幅度增加磁盘刷写次数,此外,大文件还会占用较多的NoSQL硬盘存储的内存缓存,因而也不适合长期存储。对于这类数据,存储入分布式存储是最好的方式,本发明中提供了持久化模块,持久化模块包括两种大文件存储方式,其一是数据先写入NoSQL,再根据用户的计划任务异步存入分布式文件***。具体实施如下:
步骤S50:将数据正常写入NoSQL。
步骤S51:根据用户计划任务,将数据转移到分布式文件***中。
步骤S52:将文件id存入原键替换NoSQL中的原值。
其二是直接写入分布式文件***,具体实施如下:
步骤S60:将数据序列化并写入分布式文件***获取文件id。
步骤S61:将键和作为值的文件ID存入NoSQL。
对持久化数据进行获取时,若为第二种写入方式,则直接从NoSQL种获取文件id并从分布式文件***下载数据,若为第一种写入方式,则首先根据键从NoSQL中获取值,再根据类型,将值进行反序列化,若反序列化成功,则返回对象。若反序列化失败,则将值视为文件id从分布式文件***下载数据,反序列化并返回。对于持久化模块中单个键的对应对象获取,如图5所示,步骤如下(若为模糊匹配多个键,则对于每个键重复执行以下步骤):
输入:键,对象类型。
步骤S700:根据键从NoSQL中获取值。
步骤S710:根据对象类型将值反序列化。
判断:反序列化成功?是:返回对象;否:步骤S711。
步骤S711:根据值获取分布式文件***中数据并将数据反序列化成对象。其后返回对象。
除直接通过键获取,也可以通过键前缀批量获取对象,其流程为首先通过前缀扫描NoSQL获取全部key,再使用每个key分别执行上述过程。
以上所述实施例只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。
Claims (5)
1.一种基于NoSQL和分布式文件***的物联网存储***,其特征在于,包括:
NoSQL交互模块,负责控制NoSQL数据库连接池的配置和创建,并负责控制将临时数据和持久数据的索引数据存储到NoSQL数据库;
分布式文件***交互模块,负责控制对分布式文件***的连接,同时负责控制数据以文本形式存储进分布式文件***,并获取其索引信息;
时序索引模块,负责控制时序数据在存储***中的归档,已归档临时数据的删除,以及提供时序索引能力;
持久化模块,负责控制NoSQL中单个大数据对象持久化到分布式文件***中。
2.根据权利要求1中所述的一种基于NoSQL和分布式文件***的物联网存储***,其特征在于:所述NoSQL交互模块包括第一配置文件读取模块、NoSQL数据库连接模块、键值存储模块和有序哈希表存储模块,其中:
所述第一配置文件读取模块负责从配置文件中读取NoSQL数据库的配置,包括主机名、端口号、连接超时判定时间、数据库连接池配置和数据库扫描数限制;
所述NoSQL数据库连接模块负责根据第一配置文件读取模块读取到的配置连接NoSQL数据库,维护数据库连接池;
所述键值存储模块负责根据唯一的键从NoSQL中存储数据,根据唯一的键从NoSQL中获取数据,根据部分键内容模糊匹配并获取数据,根据键范围匹配并获取数据;
所述有序哈希表存储模块负责根据哈希表名和哈希表中唯一的键向NoSQL中存储数据,根据哈希表名和哈希表中唯一的键从NoSQL中获取数据,根据部分哈希表名内容模糊匹配哈希表名,根据哈希表名和部分键内容模糊匹配并获取数据,根据哈希表名和键范围匹配并获取数据。
3.根据权利要求1中所述的一种基于NoSQL和分布式文件***的物联网存储***,其特征在于:所述分布式文件***交互模块包括第二配置文件读取模块、分布式文件***连接模块和文件操作模块,其中:
所述第二配置文件读取模块负责从配置文件中读取分布式文件***的配置,包括分布式文件***调度服务器主机名、分布式文件***调度服务器端口号、连接超时判定时间、数据读取超时判定时间和最大连接线程数;
所述分布式文件***连接模块负责根据第二配置文件读取模块读取到的配置连接分布式文件***调度服务器,维护连接线程池;
所述文件操作模块负责上传数据到分布式文件***并返回能从分布式文件***中获取该数据的唯一键,根据唯一键从分布式文件***中下载对应的数据,根据唯一键从分布式文件***中删除对应的数据。
4.根据权利要求1中所述的一种基于NoSQL和分布式文件***的物联网存储***,其特征在于:所述时序索引模块包括第三配置文件读取模块、时序数据存储模块、时序数据归档模块、时序数据删除模块和时序数据查找模块,其中:
所述第三配置文件读取模块负责从配置文件中读取用户设置的需归档键、归档时间间隔、临时数据清理时间间隔和触发临时数据清理需要的最小数据数;
所述时序数据存储模块负责通过键值对将临时时序数据存储进NoSQL,同时存储时间信息;
所述时序数据归档模块负责根据第三配置文件读取模块获取的归档时间间隔,将第三配置文件读取模块获取的用户设置的需归档键在NoSQL中的临时时序数据取出,合并为统一的文件上传到分布式文件***,并将返回的分布式文件***文件Id存储到NoSQL中;
所述时序数据删除模块负责根据第三配置文件读取模块获取的临时数据清理时间间隔,将第三配置文件读取模块获取的用户设置的需归档键在NoSQL中的临时时序数据数与第三配置文件读取模块获取的临时数据清理需要的最小数据数做比较,若大于,则将这些临时文件清除;
所述时序数据查找模块负责根据键和时间信息,判断数据所在的位置并获取数据以及根据键和时间范围,从NoSQL和分布式文件***中获取符合的全部数据,并合并为一个表返回给用户。
5.根据权利要求1中所述的一种基于NoSQL和分布式文件***的物联网存储***,其特征在于:所述持久化模块包括第四配置文件读取模块、持久化数据存储模块和持久化数据获取模块,其中:
所述第四配置文件读取模块负责从用户配置读取持久化任务工作时间间隔和持久化键;
所述持久化数据存储模块有以下两种工作方式:a、当用户未指定数据直接存储到分布式文件***时,负责先将数据存储到NoSQL中,再根据第四配置文件读取模块获取的持久化任务工作时间间隔将第四配置文件读取模块获取的持久化键对应的数据存储到分布式文件***中,并更新NoSQL中该持久化键的值为从分布式文件***返回的对应的文件Id;b、当用户指定数据存储到分布式文件***时,负责将数据上传到分布式文件***中,并将键和从分布式文件***返回的对应文件的文件Id存储到NoSQL中;
所述持久化数据获取模块负责根据用户提供的键对应的NoSQL中的值的数据格式,判断该值为文件Id或是数据,若为文件Id,则从分布式文件***下载该数据返回给用户;若为数据,则直接返回给用户。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910119401.1A CN110389939A (zh) | 2019-02-18 | 2019-02-18 | 一种基于NoSQL和分布式文件***的物联网存储*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910119401.1A CN110389939A (zh) | 2019-02-18 | 2019-02-18 | 一种基于NoSQL和分布式文件***的物联网存储*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110389939A true CN110389939A (zh) | 2019-10-29 |
Family
ID=68284864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910119401.1A Pending CN110389939A (zh) | 2019-02-18 | 2019-02-18 | 一种基于NoSQL和分布式文件***的物联网存储*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110389939A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112699092A (zh) * | 2021-01-13 | 2021-04-23 | 浪潮云信息技术股份公司 | 一种RocksDB存储大值数据的方法 |
CN113138991A (zh) * | 2021-05-18 | 2021-07-20 | 星软集团有限公司 | 一种车辆状态数据存储***、存储方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140143349A1 (en) * | 2012-11-19 | 2014-05-22 | Jason E. Feser | Distributed Architecture Data Transfer System |
CN104573068A (zh) * | 2015-01-23 | 2015-04-29 | 四川中科腾信科技有限公司 | 一种基于大数据的信息处理方法 |
CN105975638A (zh) * | 2016-06-23 | 2016-09-28 | 中国民航大学 | 一种基于NoSQL的海量航空物流小文件存储结构及其存取方法 |
CN108053863A (zh) * | 2017-12-22 | 2018-05-18 | 中国人民解放军第三军医大学第附属医院 | 适合大小文件的海量医疗数据存储***及数据存储方法 |
-
2019
- 2019-02-18 CN CN201910119401.1A patent/CN110389939A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140143349A1 (en) * | 2012-11-19 | 2014-05-22 | Jason E. Feser | Distributed Architecture Data Transfer System |
CN104573068A (zh) * | 2015-01-23 | 2015-04-29 | 四川中科腾信科技有限公司 | 一种基于大数据的信息处理方法 |
CN105975638A (zh) * | 2016-06-23 | 2016-09-28 | 中国民航大学 | 一种基于NoSQL的海量航空物流小文件存储结构及其存取方法 |
CN108053863A (zh) * | 2017-12-22 | 2018-05-18 | 中国人民解放军第三军医大学第附属医院 | 适合大小文件的海量医疗数据存储***及数据存储方法 |
Non-Patent Citations (1)
Title |
---|
丁建立 等: "基于NoSQL的海量航空物流小文件分布式多级存储方法", 《计算机应用研究》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112699092A (zh) * | 2021-01-13 | 2021-04-23 | 浪潮云信息技术股份公司 | 一种RocksDB存储大值数据的方法 |
CN112699092B (zh) * | 2021-01-13 | 2023-02-03 | 浪潮云信息技术股份公司 | 一种RocksDB存储大值数据的方法 |
CN113138991A (zh) * | 2021-05-18 | 2021-07-20 | 星软集团有限公司 | 一种车辆状态数据存储***、存储方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1552032B (zh) | 数据库 | |
US7769719B2 (en) | File system dump/restore by node numbering | |
CN111190904B (zh) | 一种图-关系数据库混合存储的方法和装置 | |
EP0437159B1 (en) | Method for identifying documents having a particular attribute using a vector relational characteristical object | |
CN111680198B (zh) | 基于文件分割与特征提取的档案管理***及方法 | |
CN109522290B (zh) | 一种HBase数据块恢复及数据记录提取方法 | |
CN109902130A (zh) | 一种数据存储方法、数据查询方法和装置、存储介质 | |
CN107003935A (zh) | 优化数据库去重 | |
US8386526B2 (en) | Coupled node tree backup/restore apparatus, backup/restore method, and program | |
CN107491487A (zh) | 一种全文数据库架构及位图索引创建、数据查询方法、服务器及介质 | |
CN102779138B (zh) | 实时数据的硬盘存取方法 | |
CN104239377A (zh) | 跨平台的数据检索方法及装置 | |
KR101744892B1 (ko) | 시계열 계층 인덱싱을 이용한 데이터 검색 시스템 및 데이터 검색 방법 | |
CN109408589A (zh) | 数据同步方法及装置 | |
CN111708895B (zh) | 一种知识图谱***的构建方法及装置 | |
CN114911830A (zh) | 基于时序数据库的索引缓存方法、装置、设备及存储介质 | |
CN110389939A (zh) | 一种基于NoSQL和分布式文件***的物联网存储*** | |
CN108932271A (zh) | 一种文件管理方法及装置 | |
CN109189759A (zh) | Kv存储***中的数据读取方法、数据查询方法、装置及设备 | |
CN107391769B (zh) | 一种索引查询方法及装置 | |
CN106649530B (zh) | 云详单查询管理***及方法 | |
CN108090186A (zh) | 一种大数据平台上的电力数据去重方法 | |
AL-Msie'deen et al. | Detecting commonality and variability in use-case diagram variants | |
CN107943412A (zh) | 一种分区***、删除分区中数据文件的方法、装置及*** | |
CN114595286A (zh) | 一种数据同步方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191029 |
|
RJ01 | Rejection of invention patent application after publication |