CN117632035A - 一种数据存储方法、系统、存储介质及计算机设备 - Google Patents
一种数据存储方法、系统、存储介质及计算机设备 Download PDFInfo
- Publication number
- CN117632035A CN117632035A CN202311715111.6A CN202311715111A CN117632035A CN 117632035 A CN117632035 A CN 117632035A CN 202311715111 A CN202311715111 A CN 202311715111A CN 117632035 A CN117632035 A CN 117632035A
- Authority
- CN
- China
- Prior art keywords
- data
- plug
- metadata
- storage
- interface
- 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
- 238000013500 data storage Methods 0.000 title claims abstract description 297
- 238000003860 storage Methods 0.000 title claims abstract description 209
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000015654 memory Effects 0.000 claims abstract description 144
- 238000007726 management method Methods 0.000 claims abstract description 22
- 230000009471 action Effects 0.000 claims description 40
- 238000002347 injection Methods 0.000 claims description 13
- 239000007924 injection Substances 0.000 claims description 13
- 238000010276 construction Methods 0.000 claims description 10
- 238000006243 chemical reaction Methods 0.000 claims description 8
- 238000012217 deletion Methods 0.000 claims description 6
- 230000037430 deletion Effects 0.000 claims description 6
- 230000001419 dependent effect Effects 0.000 claims description 5
- 230000009466 transformation Effects 0.000 claims description 4
- 230000008520 organization Effects 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 230000006854 communication Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 239000000243 solution Substances 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000003745 diagnosis Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000005096 rolling process Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 239000003054 catalyst Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 1
- 239000010931 gold Substances 0.000 description 1
- 229910052737 gold Inorganic materials 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供一种数据存储方法、系统、存储介质及计算机设备,涉及数据存储领域,所述方法包括:创建与存储相关的必备要素,通过与存储相关的必备要素构建数据存储插件;通过启动数据读写服务端在存储器内运行数据存储插件;采用统一的数据读写客户端将所要存储的数据发送给数据存储插件,将所要存储的数据写入到数据存储插件所在的存储器;通过数据存储插件自所在的存储器内读取所要请求的数据,返回给数据读写客户端;匹配于所有类型的存储器的数据存储插件采用统一的存储接口协议,数据存储插件适用于各类存储器,不需要为每类存储器单独开发特定的数据存储插件,实现统一集中的管理和组织数据,降低了开发特定的数据存储工具的成本。
Description
技术领域
本发明涉及数据存储领域,具体涉及一种数据存储方法、系统、存储介质及计算机设备。
背景技术
在医疗健康领域,每天都会生成几十TB、几百TB,甚至几PB的原始数据,包括医疗诊断数据、申请检查数据、影像数据、诊断报告数据等。这些领域通常采用传统的开源大数据组件来搭建大数据平台,例如HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)、Hive(一种数据仓库工具)、Hbase(一种分布式大数据存储系统)、Kafka(一种分布式发布订阅消息系统)、Kudu(一种开源的列式存储系统)等,结构化数据使用库表的方法进行组织数据,并存储到本地或者分布式文件系统,而非结构化数据使用对象存储系统或者分布文件系统进行存储,这些传统组件通常都是采用特定的数据存储工具将数据存储成特定的数据格式,并且管理特定的元数据,各自运行方式、读写方式、计算方式、运维方式都是有很大区别。
在实现本发明过程中,申请人发现现有技术中至少存在如下问题:
采用特定的数据存储工具针对特定的数据结构进行管理和存储,管理和存储方式比较单一和场景固定,无法将数据灵活存储到任意地方并统一进行管理和组织,并且数据的海量性和复杂性对存储工具有较高的要求,产生昂贵的开发和资源部署成本,造成存储资源的浪费和高昂的维护成本,而且同一逻辑需要开发维护多套代码,不利于数据的集中、统一管理。
发明内容
本发明实施例提供一种数据存储方法、系统、存储介质及计算机设备,能够解决现有技术中管理和存储方式比较单一,无法将数据灵活存储到任意地方的技术问题。
为达上述目的,第一方面,本发明实施例提供一种数据存储方法,包括:
步骤1:创建与存储相关的必备要素,通过所述与存储相关的必备要素构建与各类型存储器均匹配的数据存储插件;
步骤2:通过启动数据读写服务端在存储器内运行数据存储插件;
步骤3:采用统一的数据读写客户端与所述存储器内的所述数据存储插件进行交互,通过所述数据读写客户端将所要存储的数据发送给所述数据存储插件,所述数据存储插件将所要存储的数据写入到所述数据存储插件所在的存储器;或者,通过所述数据存储插件自所在的存储器内读取所要请求的数据,将所要请求的数据返回给所述数据读写客户端;其中,所述数据包括:非结构化数据或结构化数据;所述存储器为任一类型的存储器,各类型所述存储器存储非结构化数据和/或结构化数据;且匹配于所有类型的所述存储器的所述数据存储插件采用统一的存储接口协议。
第二方面,本发明实施例提供一种数据存储系统,包括:
数据存储插件运行单元,用于通过启动数据读写服务端在存储器内运行数据存储插件;
数据读写客户端,用于与所述存储器内的所述数据存储插件进行交互,将所要存储的数据发送给所述数据存储插件;
数据存储插件,用于将所要存储的数据写入到本数据存储插件所在的存储器;
所述数据存储插件,还用于自所在的存储器内读取所要请求的数据,将所要请求的数据返回给所述数据读写客户端;
所述数据读写客户端,还用于接收所述数据存储插件返回的请求的数据;
其中,所述数据包括:非结构化数据或结构化数据;所述存储器为任一类型的存储器,各类型所述存储器存储非结构化数据和/或结构化数据;且匹配于所有类型的所述存储器的所述数据存储插件采用统一的存储接口协议;
所述数据存储系统还包括数据存储插件构建单元;
所述数据存储插件构建单元,用于在本数据存储系统使用之前,创建与存储相关的必备要素,通过所述与存储相关的必备要素构建与各类型存储器均匹配的数据存储插件。
第三方面,本发明实施例提供一种计算机可读存储介质,计算机可读存储介质存储一个或多个程序,一个或多个程序当被计算机设备执行时,使得计算机设备执行前述的数据存储方法。
第四方面,本发明实施例提供一种计算机设备,包括:
处理器;以及,被安排成存储计算机可执行指令的存储器,可执行指令在被执行时使处理器执行前述的数据存储方法。
上述技术方案具有如下有益效果:采用统一的数据读写客户端与存储器具有的数据存储插件进行交互,通过数据读写客户端将所要存储的数据发送给数据存储插件,数据存储插件将所要存储的数据写入到数据存储插件所在的存储器;或者,通过数据存储插件自所在的存储器内读取所要请求的数据,将所要请求的数据返回给数据读写客户端;所有类型的存储器对应的数据存储插件均采用相同的存储接口协议,只需要开发一套代码,适用于各类存储器,不需要为每类存储器单独开发特定的数据存储插件,采用统一的数据存储插件就能够连接到任一类存储器,实现统一集中的管理和组织数据,降低了开发特定的数据存储工具的成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例的一种数据存储方法的流程图;
图2是本发明实施例的一种数据存储系统的逻辑结构图;
图3是本发明实施例的一种计算机设备的逻辑结构图;
图4是本发明实施例的数据存储的流程图;
图5是本发明实施例的数据存储插件和元数据的接口插件的启动运行流程图;
图6是本发明实施例的构建数据存储插件的流程图;
图7是本发明实施例的构建元数据的接口插件的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例涉及的技术术语及缩略语释义:
KS3:金山云对象存储(Kingsoft Standard Storage Service),简称KS3。是金山云提供的无限制、多备份、分布式的低成本存储空间解决方案。目前提供多种语言软件开发工具包SDK(Software Development Kit),替开发者解决存储扩容、数据可靠安全以及分布式访问等相关复杂问题,开发者可以快速开发出涉及存储业务的程序或服务。
Alluxio:是一个基于内存的分布式文件系统,它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件,主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。
MinIO:是一个基于Apache License v2.0开源协议的对象存储服务,并且兼容亚马逊S3存储协议,能够存储大容量非结构化数据,为机器学习、分析和应用程序数据工作负载构建高性能基础架构。
HDFS:是Hadoop分布式文件系统(Hadoop Distributed File System),它被设计运行在通用廉价硬件上的分布式文件系统,提供高容错性、高吞吐、高可靠的存储特性,使得数据读写具有一次写多次读的特征。
SPI:服务提供接口(Service Provider Interface),是Java提供的一套用来被第三方实现或扩展的接口,可以对框架进行扩展和替换,常被调用方制定接口规范,以提供给外部来实现,提供灵活可插拔、可配置的能力以及丰富生态应用等。
如图1所示,结合本发明的实施例,提供一种数据存储方法,包括:
步骤1:创建与存储相关的必备要素,通过所述与存储相关的必备要素构建与各类型存储器均匹配的数据存储插件;
步骤2:通过启动数据读写服务端在存储器内运行数据存储插件;
步骤3:采用统一的数据读写客户端与所述存储器内的所述数据存储插件进行交互,通过所述数据读写客户端将所要存储的数据发送给所述数据存储插件,所述数据存储插件将所要存储的数据写入到所述数据存储插件所在的存储器;或者,通过所述数据存储插件自所在的存储器内读取所要请求的数据,将所要请求的数据返回给所述数据读写客户端;其中,所述数据包括:非结构化数据或结构化数据;所述存储器为任一类型的存储器,各类型所述存储器存储非结构化数据和/或结构化数据;且匹配于所有类型的所述存储器的所述数据存储插件采用统一的存储接口协议。
优选地,步骤1:创建与存储相关的必备要素,通过与存储相关的必备要素构建与各类型存储器均匹配的数据存储插件,具体包括:
步骤11:通过抽象插件模块创建作为数据存储插件的入口的接口,作为数据存储插件的入口的接口包括:获取统一文件操作工厂接口、插件名称接口、插件描述接口;其中,所述数据存储插件匹配于各类型存储器;
步骤12:通过统一文件存储工厂模块设置存储器类型,定义与存储相关的接口协议,根据存储器类型和与存储相关的接口协议生成与各类存储器对应的操作逻辑;
步骤13:通过扩展文件读写操作接口模块定义与存储相关的通用操作的接口协议,存储相关的通用操作的接口协议用于定义通用操作对应的动作,以及定义与存储相关的特殊操作对应的动作;
步骤14:通过文件读写基础操作模块根据存储相关的通用操作的接口协议标准形成与存储相关的通用操作对应的动作的执行逻辑,以及形成与存储相关的特殊操作对应的动作的执行逻辑,特殊操作包括:遍历文件、文件重命名、计算存储大小或文件大小;
步骤15:通过可读文件流模块定义可读文件流,可读文件流用于获取数据时形成可读文件流进行返回;
步骤16:通过可写文件流模块定义可写文件流,可写文件流用于在将数据写入时形成可写文件流;
步骤17:采用步骤11所创建的作为所述数据存储插件的入口的接口,加载步骤12所生成的各类存储器对应的操作逻辑,加载步骤14形成的与存储相关的通用操作对应的动作的执行逻辑、以及形成的与存储相关的特殊操作对应的动作的执行逻辑,加载步骤15定义的可读文件流,所述可读文件流用于在所述获取的数据是字节数据时,根据所述文件读写基础操作模块内形成的通用操作或者特殊操作获取存储器内的字节数据,形成可读文件流进行返回;加载步骤16定义的可写文件流,所述可写文件流用于在将字节数据写入时,根据所述文件读写基础操作模块内形成的通用操作或者特殊操作将字节数据,形成可写文件流进行写入到存储器;构建得到与各类型存储器均匹配的数据存储插件。
优选地,步骤2:通过启动数据读写服务端在存储器内运行数据存储插件,具体包括:
步骤21:启动数据读写服务端,通过数据读写服务端为加载数据存储插件注入模块提供存储器的存储路径下的数据存储插件目录、数据存储插件参数和数据存储插件抽象逻辑;其中,数据存储插件匹配于各类型存储器;
步骤22:加载数据存储插件注入模块,通过数据存储插件注入模块将数据存储插件的核心服务注入到数据读写服务端;
步骤23:加载插件管理模块,通过插件管理模块提供每数据存储插件的通用插件管理器,并存储数据存储插件,以及提供对数据存储插件的增加、删除、查询、修改的操作;
步骤24:加载插件内容提供器,根据数据读写服务端提供的数据存储插件目录,插件内容提供器在数据存储插件目录内扫描数据存储插件对应的文件、所依赖文件和配置文件;
步骤25:加载插件加载器,通过插件加载器将数据存储插件加载到运行时环境中,并将所加载的数据存储插件与数据读写服务端的运行隔离。
优选地,步骤3具体包括步骤31和步骤32,或者步骤3具体包括步骤33和步骤34,其中:
步骤31:数据读写客户端将所要存储的数据读取为第一转化数据,并将第一转化数据发送给数据存储插件;其中,第一转化数据是指:根据所要存储的数据的存储形式对应的指定存储形式,将所要存储的数据读取为指定存储形式的数据;
步骤32:数据存储插件将第一转化数据写入存储器,并将第一转化数据转化为原文件;
或者,
步骤33:通过数据存储插件将自存储器内所要请求的数据读取为第二转化数据,将第二转化数据返回给数据读写客户端;其中,第二转化数据是指:根据所要请求的数据的存储形式在写入存储器时的第一转化数据的存储形式相同的数据;
步骤34:数据读写客户端将转化数据转化为原文件。
优选地,在步骤31中,数据读写客户端将所要存储的数据读取为第一转化数据,具体包括:
步骤31-1:若所要存储的数据为非结构化数据时,则将非结构化数据读取为字节数据;
步骤31-1:若所要存储的数据为结构化数据时,则将结构化数据读取为字节数据,同时获取描述结构化数据的元数据。
优选地,本发明实施例的数据存储方法,还包括:
步骤4:创建与元数据存储相关的必备要素,通过与元数据存储相关的必备要素构建元数据接口插件;
步骤4具体包括:
步骤41:通过抽象插件模块创建作为元数据接口插件的入口的接口,作为元数据接口插件的入口的接口包括:获取元数据工厂的接口、元数据插件名称接口和元数据插件描述接口;
步骤42:通过元数据工厂模块创建元数据目录,通过元数据目录定义元数据工厂名称接口协议和创建元数据目录接口协议;
步骤43:通过元数据目录基础操作模块定义与元数据存储相关的通用操作的接口协议;元数据存储相关的通用操作的接口包括:元数据接入初始化接口、元数据接入名称接口、元数据载入接口、元数据创建接口和元数据删除接口;
步骤44:通过扩展数据目录模块根据定义的与元数据存储相关的通用操作的接口协议,形成与元数据存储相关的通用操作对应的动作的执行逻辑;
步骤45:采用步骤41所创建的作为所述元数据接口插件的入口的接口,加载步骤42的元数据工厂名称接口协议和创建元数据目录接口协议,加载步骤44所形成的与元数据存储相关的通用操作对应的动作的执行逻辑,加载步骤15定义的可读文件流,所述可读文件流用于在所获取的数据是元数据时,根据所述扩展数据目录模块内形成的与元数据存储相关的通用操作对应的动作的执行逻辑获取元数据,形成可读文件流进行返回;加载步骤16定义的可写文件流,所述可写文件流用于在将元数据写入时,根据所述扩展数据目录模块内形成的与元数据存储相关的通用操作对应的动作的执行逻辑将元数据形成可写文件流进行写入,构建得到所述元数据接口插件;并将所述元数据接口插件连接于所述数据存储插件。
优选地,该数据存储方法,还包括如下步骤:
步骤5:通过元数据接口插件将数据存储插件自数据读写客户端接收的元数据通过基于Java的数据库连接标准接口以库表形式存储到关系库;通过提交版本控制的方式提供对元数据的通用操作。
或者,
步骤6:通过元数据接口插件将数据存储插件自数据读写客户端接收的元数据以轻量级数据交换格式存储到本地;通过提交版本控制的方式提供对元数据的通用操作。
如图2所示,结合本发明的实施例,提供一种数据存储系统,包括:
数据存储插件构建单元201,用于创建与存储相关的必备要素,通过与存储相关的必备要素构建与各类型存储器均匹配的数据存储插件204;
数据存储插件运行单元202,用于通过启动数据读写服务端在存储器内运行数据存储插件;
数据读写客户端203,用于与存储器内的数据存储插件204进行交互,将所要存储的数据发送给数据存储插件204;
数据存储插件204,用于将所要存储的数据写入到本数据存储插件所在的存储器;
数据存储插件204,还用于自所在的存储器内读取所要请求的数据,将所要请求的数据返回给数据读写客户端203;
数据读写客户端203,还用于接收数据存储插件204返回的请求的数据;
其中,数据包括:非结构化数据或结构化数据;存储器为任一类型的存储器,各类型存储器存储非结构化数据和/或结构化数据;且匹配于所有类型的存储器对应的数据存储插件采用统一的存储接口协议。
优选地,数据存储插件构建单元201包括:
抽象插件模块,用于创建作为数据存储插件204的入口的接口,作为数据存储插件204的入口的接口包括:获取统一文件操作工厂接口、插件名称接口、插件描述接口;其中,所述数据存储插件匹配于各类型存储器;
统一文件存储工厂模块,用于设置存储器类型,定义与存储相关的接口协议,根据存储器类型和与存储相关的接口协议生成与各类存储器对应的操作逻辑;
扩展文件读写操作接口模块,用于定义与存储相关的通用操作的接口协议,存储相关的通用操作的接口协议用于定义通用操作对应的动作,以及定义与存储相关的特殊操作对应的动作;
文件读写基础操作模块,用于根据存储相关的通用操作的接口协议标准形成与存储相关的通用操作对应的动作的执行逻辑,以及形成与存储相关的特殊操作对应的动作的执行逻辑,特殊操作包括:遍历文件、文件重命名、计算存储大小或文件大小;
可读文件流模块,用于定义可读文件流,可读文件流用于获取数据时形成可读文件流进行返回;
可写文件流模块,用于定义可写文件流,可写文件流用于在将数据写入时形成可写文件流;
第一构建模块,用于采用作为所述数据存储插件的入口的接口,加载各类存储器对应的操作逻辑,加载与存储相关的通用操作对应的动作的执行逻辑、以及形成的与存储相关的特殊操作对应的动作的执行逻辑,加载可读文件流,所述可读文件流用于在所获取的数据是字节数据时,根据所述文件读写基础操作模块内形成的通用操作或者特殊操作获取存储器内的字节数据,形成可读文件流进行返回;加载可写文件流,所述可写文件流用于在将字节数据写入时,根据所述文件读写基础操作模块内形成的通用操作或者特殊操作将字节数据,形成可写文件流进行写入到存储器,构建得到与各类型存储器均匹配的数据存储插件。
优选地,数据存储插件运行单元202包括:
数据读写服务端,用于为加载数据存储插件注入模块提供存储器的存储路径下的数据存储插件目录、数据存储插件参数和数据存储插件抽象逻辑;其中,数据存储插件匹配于各类型存储器;
数据存储插件注入模块,用于将数据存储插件的核心服务注入到数据读写服务端;
插件管理模块,用于提供数据存储插件的通用插件管理器,并存储数据存储插件,以及提供对数据存储插件的增加、删除、查询、修改的操作;
插件内容提供器,用于根据数据读写服务端提供的数据存储插件目录,在数据存储插件目录内扫描数据存储插件对应的文件、所依赖文件和配置文件;
插件加载器,用于将数据存储插件加载到运行时环境中,并将所加载的数据存储插件与数据读写服务端的运行隔离。
优选地,数据读写客户端203,具体用于将所要存储的数据读取为第一转化数据,并将第一转化数据发送给数据存储插件;其中,第一转化数据是指:根据所要存储的数据的存储形式对应的指定存储形式,将所要存储的数据读取为指定存储形式的数据;
数据存储插件204,具体用于将第一转化数据写入存储器,并将第一转化数据转化为原文件;
或者
数据存储插件204,具体用于将自存储器内所要请求的数据读取为第二转化数据,将第二转化数据返回给数据读写客户端;其中,第二转化数据是指:根据所要请求的数据的存储形式在写入存储器时的第一转化数据的存储形式相同的数据;
数据读写客户端203,具体用于将转化数据转化为原文件;
其中,在数据读写客户端203将所要存储的数据读取为第一转化数据时,若所要存储的数据为非结构化数据时,则将非结构化数据读取为字节数据;若所要存储的数据为结构化数据时,则将结构化数据读取为字节数据,同时获取描述结构化数据的元数据。
优选地,本发明实施例的数据存储系统,还包括:
元数据接口插件创建单元,用于创建与元数据存储相关的必备要素,通过与元数据存储相关的必备要素构建元数据接口插件;
元数据接口插件创建单元包括:
抽象插件模块,用于创建作为元数据接口插件的入口的接口,作为元数据接口插件的入口的接口包括:获取元数据工厂的接口、元数据插件名称接口和元数据插件描述接口;
元数据工厂模块,用于创建元数据目录,通过元数据目录定义元数据工厂名称接口协议和创建元数据目录接口协议;
元数据目录基础操作模块,用于定义与元数据存储相关的通用操作的接口协议;元数据存储相关的通用操作的接口包括:元数据接入初始化接口、元数据接入名称接口、元数据载入接口、元数据创建接口、元数据删除接口;
扩展数据目录模块,用于根据定义的与元数据存储相关的通用操作的接口协议,形成与元数据存储相关的通用操作对应的动作的执行逻辑;
第二构建模块,用于采用作为所述元数据接口插件的入口的接口,加载元数据工厂名称接口协议和创建元数据目录接口协议,加载与元数据存储相关的通用操作对应的动作的执行逻辑,加载可读文件流,所述可读文件流用于在所获取数据的为元数据时,根据所述扩展数据目录模块内形成的与元数据存储相关的通用操作对应的动作的执行逻辑获取元数据,形成可读文件流进行返回;加载可写文件流,所述可写文件流用于在将元数据写入时,根据所述扩展数据目录模块内形成的与元数据存储相关的通用操作对应的动作的执行逻辑将元数据形成可写文件流进行写入,构建得到所述元数据接口插件;并将所述元数据接口插件连接于所述数据存储插件;
数据存储系统还包括关系库和/或本地文件系统,采用关系库、本地文件系统其中之一存储元数据,在关系库、本地文件系统中通过提交版本控制的方式提供对元数据的通用操作;其中:
关系库,用于存储元数据接口插件接收的来自数据存储插件的元数据,且元数据以库表形式存储,其中,数据存储插件接收数据读写客户端读取的元数据;本关系库通过基于Java的数据库连接标准接口连接到元数据接口插件;
本地文件系统,用于存储元数据接口插件接收的来自数据存储插件的元数据,且元数据采用轻量级数据交换格式存储,
通过元数据接口插件将数据存储插件自数据读写客户端接收的元数据以轻量级数据交换格式存储到本地文件系统。
结合本发明的实施例,提供一种计算机可读存储介质,计算机可读存储介质存储一个或多个程序,一个或多个程序当被计算机设备执行时,使得计算机设备执前述任意一种的数据存储方法。
如图3所示,结合本发明的实施例,提供一种计算机设备,包括:
处理器;以及,被安排成存储计算机可执行指令的存储器,可执行指令在被执行时使处理器执前述任意一种数据存储方法。
下面结合具体的应用实例对本发明实施例上述技术方案进行详细说明,实施过程中没有介绍到的技术细节,可以参考前文的相关描述。
本发明实施例为一种数据存储方法及系统,具体为可扩展的数据存储方法及系统,通过SPI扩展机制,抽象底层文件系统和元数据的管理接口,同时优化数据读取、写入功能,对结构化数据和非结构化数据采用统一的管理方式、读写方式和其他处理方式,实现了结构化数据和非结构化数据的统一管理。优化其架构于底层文件系统之间的通信协议,在大数据场景下提供一个存储可扩展、元数据可扩展的存储工具,还能够节省开发和资源部署成本。
本发明实施例采用客户端/服务端(C/S)的架构开发数据管理和存储系统,在存储数据时主要包括以下几个模块:非结构化数据模块、结构化数据模块、数据读写客户端(Client)、数据读写服务端(Server),其中数据读写服务端中包括统一的文件存储服务和和元数据存储服务,二者均通过SPI扩展机制实现,如图4所示。
一、非结构化数据模块,是一个数据源端,能够接受非结构化数据,例如:图片、视频、PDF等文件,数据读写客户端会将非结构化数据进行读取为字节数据,统一由数据读写客户端进行接受字节数据。
二、结构化数据模块,也是一个数据源端,能够接受结构化数据,例如:MYSQL、HIVE等具有表结构的数据,数据读写客户端会将结构化数据读取为字节数据,同时读取和整理结构化数据的Schema信息,形成元数据,数据读写客户端会将字节数据和对应的Schema信息进行操作。
三、数据读写客户端,作为数据统一的入口和出口,使用JAVA语言进行实现功能,能够很容易地集成在第三方的应用程序中,提供数据稳定的读取和写入。且设置数据文件的滚动写入和多分区写入等其他阈值控制,提供多种写入方式和读取方式。数据读写客户端接受到外部发送的字节数据和Schema信息,将其转化为TCP(Transmission ControlProtocol,传输控制协议)字节数据或者转为HTTP(HyperText Transfer Protocol,超文本传输协议)的方式进行通信,在通信的过程中会进行加密处理和字节码校验,防止数据的泄露和丢失。
四、数据读写服务端,包括数据存储插件也称为SPI插件,是接收数据的核心服务,拥有高可用的特点。在数据读写服务端启动时会拉起统一文件存储服务,将扫描部署路径下的数据存储插件目录,加载所有的数据存储插件,提供数据存储服务。其中,在本发明实施例中,数据存储插件已经支持了Local本地存储模式、KS3金山对象存储、MinIO通用对象存储、Alluxio加速文件存储、HDFS分布式文件存储等,每一种存储插件都需要实现统一的文件存储SPI中的接口定义,使用各自组件中的SDK或者数据读写客户端进行连接、读取、写入、关闭等功能。同时数据读写服务端也会拉起元数据的存储服务,元数据存储服务包括:抽象数据信息和存储过程,形成元数据即Schema信息,元数据包括:表名、字段类型、存储位置、存储位置类型。允许将Schema信息写入JDBC(Java Database Connectivity,Java数据库连接)数据源中或者保存在本地文件系统,本发明实施例中,元数据和数据存储都统一使用插件的方式进行扩展,抽象数据处理能力,提高鲁棒性。
五、针对数据读写服务端中,通过SPI扩展机制形成数据存储插件进行详细说明。为构建统一的数据存储插件构建单元,使用自定义的类载入器(ClassLoader)的方式构建数据存储插件构建单元,用于提供数据存储插件的无限可扩展、存储插件运行依赖可以隔离,业务逻辑可统一管理的强大能力,如图5所示,数据存储插件构建单元包含数据读写服务端(Server)、数据存储插件注入模块(PluginModule)、插件管理模块(PluginManager)、插件内容提供器(ServerPluginProvider)、插件加载器(PluginClassloader)。其中,下面是关于数据存储插件运行单元的功能实现描述(同样也是适用于元数据的接口插件的功能实现描述:
数据读写服务端主要用于为数据存储插件注入模块提供数据存储插件路径的数据存储插件目录、数据存储插件参数、数据存储插件抽象逻辑等。
数据存储插件注入模块,用于将所有类型的数据存储插件核心服务使用ApacheGuice框架注入(Inject)到数据读写服务端中,提供可发现的功能。
插件管理模块,用于提供通用的数据存储插件管理器,在内存中存储所有定义的数据存储插件,提供对数据存储插件的增加、删除、查询、修改的操作。
插件内容提供器(ServerPluginProvider),主要用于根据数据读写服务端提供的数据存储插件目录扫描数据存储插件文件、依赖文件和配置文件,自动过滤不相关的文件和配置,并提供扫描报错等特殊逻辑。
插件加载器(PluginClassLoader),加载数据存储插件的核心服务,使用插件服务加载入口(ServiceLoader.load)和自定义类载入器(Classloader)加载满足设定的存储接口协议(SPI接口协议)的数据存储插件,把数据存储插件加入到运行时环境中。通过自定义类载入器的方式提供数据存储插件运行依赖的可隔离功能,不与数据读写服务端Server的运行依赖相冲突。
六、如图6所示,为实现SPI模块,针对数据存储插件定义了相关的存储接口协议,用户需要按照规定的存储接口协议实现自定义的存储器。构建数据存储插件通过如下模块来实现:抽象插件模块(AbastractPlugin)、统一文件存储工厂模块(UFSFactory)、扩展文件读写操作接口模块(FileIo)、文件读写基础操作模块(BaseFileIO)、可读文件流模块(InputStream)、可写文件流模块(OutputStream)。本发明实施例已经实现的数据存储插件包括:Local本地存储插件、KS3金山对象存储插件、MinIO通用对象存储插件、Alluxio加速数据存储插件、HDFS分布式数据存储插件,实现了具有上述的相关的存储接口协议,能够完成数据的准确写入和读取。使得用户能够统一数据的使用方式,减少与不同数据库进行匹配而开发对应的不同数据存储工具的开发成本。其中,通过SPI扩展机制构建数据存储插件的方法如下:
1、抽象插件模块(AbastractPlugin),实现其中的获取统一文件操作工厂(getUFSFactories)、插件名称(name)、插件描述(description)等接口,为数据存储插件提供入口。
2、统一文件存储工厂模块(UFSFactory),提供了一个文件存储器工厂类,定义了统一文件操作工厂名称(name)、创建文件读写操作(createFileIO)的接口协议,用来生成该存储器操作的主要逻辑。
3、扩展文件读写操作接口模块(FileIO),是BaseFileIO的通用操作的接口协议标准,该标准定义了通用操作包含具体哪些存储执行动作,如初始化、输入文件、输出文件、关闭等,如要实现数据存储操作需要遵循该协议标准并进行实现;同时还定义了特殊操作的接口协议标准。根据扩展文件读写操作接口模块的设置,使得数据存储插件能够对接任意存储器。
4、文件读写基础操作模块(BaseFileIO),是FileIO的中通用操作的具体实现和特殊操作的具体实现,主要实现了初始化(initialize)、输入文件(inputfile)、输出文件(outputfile)、删除文件(deletefile)、关闭文件(close)等通用操作的具体执行逻辑,以及遍历文件(listFile)、重命名文件(renameFile)、计算存储大小或文件大小等特殊操作的具体执行逻辑。实现对文件的具体操作。
5、可读文件流模块(InputStream),在文件读写基础操作模块中的读取代码来读取文件时,需要自定义的可写文件流(InputStream),用来获取外置存储系统上的文件字节流数据,主要需要实现的接口协议有:打开文件流(openstream)、获取文件流位置(getPos)、文件流位置偏移(seek)、文件流读取(read)、文件流关闭(close)、文件流释放(finalize)等。
6、可写文件流模块(OutputStream),在BaseFileIO中的读取代码来写入文件时,需要自定义的可写文件流(OutputStream),用来将文件字节流数据写入到外置存储系统上,主要需要实现的接口协议有:打开文件流(openstream)、获取文件流位置(getPos)、刷新文件流缓存(flush)、文件流写入(write)、文件流关闭(close)、文件流释放(finalize)等。
具体地,对于非结构化数据,通过统一的扩展文件读写操作接口,将非结构化数据通过字节数据的形式直接写入到存储器中,并将字节数据转化为原文件。另外,自存储器内读取非结构化数据也是通过统一的扩展文件读写操作接口读取成字节数据,将所有数据返回给数据读写客户端中,提供非结构化数据的访问能力。
对于结构化数据,数据本身存在一定的组织方式,按照给定的数据Schema信息把结构化数据重新进行组织,支持Orc、Parquet、Avro三种数据存储格式的读写功能,将结构化数据有效的存储在各个存储器中,其中,Orc、Parquet以列的形式进行存储,具有压缩率高、快速查询等特性;Avro以行的形式进行存储,适合大量写入场景。
七、针对于结构化数据,支持采用多种存储方式将数据的元数据(Schema信息)进行存储,例如:基于java的数据库连接标准JDBC和本地文件系统Local,JDBC方式将连接到关系库(DBMS),以库表的形式将Schema信息记录下来,提供Schema信息的增删查改等操作;Local方式将Schema信息保存为本地Json格式(为轻量级数据交换格式),通过提交版本控制来保存Schema信息的增删查改等操作。如图7所示,描述了通过SPI扩展机制形成统一的元数据的接口插件,来对元数据进行存储,使得元数据更加容易查询和维护。其中元数据的接口插件主要包括以下模块:抽象插件模块(AbastractPlugin)、元数据工厂模块(MetastoreFactory)、扩展数据目录模块、元数据目录基础操作模块(BaseCatalog);
1、抽象插件模块(AbastractPlugin),需要实现其中的获取元数据工厂(getMetaFactories)、元数据插件名称(name)、元数据插件描述(description)等接口,为元数据插件提供入口。
2、元数据工厂模块(MetastoreFactory),是一个创建元数据目录(Catalog)的工厂,定义了元数据工厂名称(name)、创建元数据目录(createCatalog)等接口协议。
3、扩展数据目录模块,是元数据目录基础操作模块的子集,描述了元数据在各种存储下的各自操作,能够对接任一的存储库:基于java的数据库连接标准JDBC和本地文件系统Local。
4、元数据目录基础操作模块(BaseCatalog),描述了元数据通用的接口协议,主要定义的接口有:元数据接入初始化(initialize)接口、元数据接入名称(name)接口、元数据载入接口(loadSchema)、元数据创建接口(createSchema)、元数据删除接口(dropSchema)等。
本发明实施例所取得的有益技术效果如下:
采用统一的数据读写客户端与存储器具有的数据存储插件进行交互,通过数据读写客户端将所要存储的数据发送给数据存储插件,数据存储插件将所要存储的数据写入到数据存储插件所在的存储器;或者,通过数据存储插件自所在的存储器内读取所要请求的数据,将所要请求的数据返回给数据读写客户端;所有类型的存储器对应的数据存储插件均采用相同的存储接口协议,只需要开发一套代码,适用于各类存储器,不需要为每类存储器单独开发特定的数据存储插件,采用统一的数据存储插件就能够连接到任一类存储器,实现统一集中的管理和组织数据,降低了开发特定的数据存储工具的成本。
对于客户端/服务端(C/S)模式的架构,数据源的数据能够借助数据处理(ETL)工具,如开源计算引擎Apache Spark、开源流式计算引擎Apache Flink等,很容易的接入或集成到数据处理工具中,将处理好的数据准确的写入到存储器中,同时,利用数据处理工具也能够读取数据。通过多线程、队列、同步和异步的优化手段,读写速度已经进行了最优优化,达到生产可用。
采用SPI扩展机制规定的相关的存储接口协议,规范了扩展接口的统一使用方式,约定接口协议,能够给第三方组件提供良好的扩展接口实现数据存储插件和元数据的接口插件,提供灵活的扩展性,丰富生态应用等;实现对结构化数据和非结构化数据的统一的管理和应用。
对于数据存储插件接口,统一数据的读写接口和协议,防止上层应用对数据的读写错误和读写方式不一致等问题,设置数据文件的滚动写入和多分区写入等其他阈值控制,提供多种写入方式和读取方式,适合不同的场景。采用元数据的接口插件,统一元数据的收集和管理、定义了相对通用的使用方式,方便统一进行元数据操作。通过对元数据管理将结构化数据的Schema信息进行记录和维护,方便数据的探查和追踪,目前已经将JDBC的元数据管理方式应用于生产中。通过SPI扩展机制封装数据读写通用协议接口形成数据存储插件,通过SPI扩展机制封装元数据管理的通用接口形成元数据的接口产检,为大数据领域提供一个高效的、易用的数据读写可扩展工具。
采用客户端/服务端(C/S)的模式进行数据的读写访问,其中通信方式大量使用基于字节的可靠传输层通信协议TCP的方式进行数据传输,通常如果为了数据传输的便捷性。也可以提供超文本传输协议HTTP的方式进行数据传输,实现通信方式达到易用的标准。
应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。
在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本公开。不应该将这种公开方法解释为反映了这样的意图,即,所要求保护的主题的实施方案需要比清楚地在每个权利要求中所陈述的特征更多的特征。相反,如所附的权利要求书所反映的那样,本发明处于比所公开的单个实施方案的全部特征少的状态。因此,所附的权利要求书特此清楚地被并入详细描述中,其中每项权利要求独自作为本发明单独的优选实施方案。
为使本领域内的任何技术人员能够实现或者使用本发明,上面对所公开实施例进行了描述。对于本领域技术人员来说;这些实施例的各种修改方式都是显而易见的,并且本文定义的一般原理也可以在不脱离本公开的精神和保护范围的基础上适用于其它实施例。因此,本公开并不限于本文给出的实施例,而是与本申请公开的原理和新颖性特征的最广范围相一致。
上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所有可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所有这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括,”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书的说明书中的任何一个术语“或者”是要表示“非排它性的或者”。
本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrative logical block),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrative components),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。
本发明实施例中所描述的各种说明性的逻辑块,或单元都可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中,ASIC可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。
在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、DVD、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种数据存储方法,其特征在于,包括:
步骤1:创建与存储相关的必备要素,通过所述与存储相关的必备要素构建与各类型存储器均匹配的数据存储插件;
步骤2:通过启动数据读写服务端在存储器内运行数据存储插件;
步骤3:采用统一的数据读写客户端与所述存储器内的所述数据存储插件进行交互,通过所述数据读写客户端将所要存储的数据发送给所述数据存储插件,所述数据存储插件将所要存储的数据写入到所述数据存储插件所在的存储器;或者,通过所述数据存储插件自所在的存储器内读取所要请求的数据,将所要请求的数据返回给所述数据读写客户端;其中,所述数据包括:非结构化数据或结构化数据;所述存储器为任一类型的存储器,各类型所述存储器存储非结构化数据和/或结构化数据;且匹配于所有类型的所述存储器的所述数据存储插件采用统一的存储接口协议。
2.根据权利要求1所述的数据存储方法,其特征在于,步骤1具体包括:
步骤11:通过抽象插件模块创建作为所述数据存储插件的入口的接口,所述作为所述数据存储插件的入口的接口包括:获取统一文件操作工厂接口、插件名称接口和插件描述接口;其中,所述数据存储插件匹配于各类型存储器;
步骤12:通过统一文件存储工厂模块设置存储器类型,定义与存储相关的接口协议,根据所述存储器类型和所述与存储相关的接口协议生成与各类存储器对应的操作逻辑;
步骤13:通过扩展文件读写操作接口模块定义与存储相关的通用操作的接口协议,所述存储相关的通用操作的接口协议用于定义通用操作对应的动作,以及定义与存储相关的特殊操作对应的动作;
步骤14:通过文件读写基础操作模块根据所述存储相关的通用操作的接口协议标准形成与存储相关的通用操作对应的动作的执行逻辑,以及形成与存储相关的特殊操作对应的动作的执行逻辑,所述特殊操作包括:遍历文件、文件重命名、计算存储大小或文件大小;
步骤15:通过可读文件流模块定义可读文件流,所述可读文件流用于获取数据时形成可读文件流进行返回;
步骤16:通过可写文件流模块定义可写文件流,所述可写文件流用于在将数据写入时形成可写文件流;
步骤17:采用步骤11所创建的作为所述数据存储插件的入口的接口,加载步骤12所生成的各类存储器对应的操作逻辑,加载步骤14形成的与存储相关的通用操作对应的动作的执行逻辑、以及形成的与存储相关的特殊操作对应的动作的执行逻辑,加载步骤15定义的可读文件流,所述可读文件流用于在所述获取的数据是字节数据时,根据所述文件读写基础操作模块内形成的通用操作或者特殊操作获取存储器内的字节数据,形成可读文件流进行返回;加载步骤16定义的可写文件流,所述可写文件流用于在将字节数据写入时,根据所述文件读写基础操作模块内形成的通用操作或者特殊操作将字节数据,形成可写文件流进行写入到存储器;构建得到与各类型存储器均匹配的数据存储插件。
3.根据权利要求1所述的数据存储方法,其特征在于,步骤2具体包括:
步骤21:启动数据读写服务端,通过所述数据读写服务端为加载数据存储插件注入模块提供所述存储器的存储路径下的数据存储插件目录、数据存储插件参数和数据存储插件抽象逻辑;其中,所述数据存储插件匹配于各类型存储器;
步骤22:加载数据存储插件注入模块,通过所述数据存储插件注入模块将数据存储插件的核心服务注入到所述数据读写服务端;
步骤23:加载插件管理模块,通过所述插件管理模块提供数据存储插件的通用插件管理器,并存储所述数据存储插件,以及提供对所述数据存储插件的增加、删除、查询、修改的操作;
步骤24:加载插件内容提供器,根据所述数据读写服务端提供的所述数据存储插件目录,所述插件内容提供器在所述数据存储插件目录内扫描所述数据存储插件对应的文件、所依赖文件和配置文件;
步骤25:加载插件加载器,通过所述插件加载器将所述数据存储插件加载到运行时环境中,并将所加载的数据存储插件与所述数据读写服务端的运行隔离。
4.根据权利要求1所述的数据存储方法,其特征在于,步骤3具体包括步骤31和步骤32,或者步骤3具体包括步骤33和步骤34,其中:
步骤31:所述数据读写客户端将所要存储的数据读取为第一转化数据,并将所述第一转化数据发送给所述数据存储插件;其中,所述第一转化数据是指:根据所要存储的数据的存储形式对应的指定存储形式,将所要存储的数据读取为指定存储形式的数据;
步骤32:所述数据存储插件将所述第一转化数据写入所述存储器,并将所述第一转化数据转化为原文件;
或者,
步骤33:通过所述数据存储插件将自所述存储器内所要请求的数据读取为第二转化数据,将所述第二转化数据返回给所述数据读写客户端;其中,所述第二转化数据是指:根据所要请求的数据的存储形式在写入所述存储器时的第一转化数据的存储形式相同的数据;
步骤34:所述数据读写客户端将所述转化数据转化为原文件。
5.根据权利要求4所述的数据存储方法,其特征在于,在步骤31中,所述数据读写客户端将所要存储的数据读取为第一转化数据,具体包括:
步骤31-1:若所要存储的数据为非结构化数据时,则将所述非结构化数据读取为字节数据;
步骤31-2:若所要存储的数据为结构化数据时,则将所述结构化数据读取为字节数据,同时获取描述所述结构化数据的元数据。
6.根据权利要求2所述的数据存储方法,其特征在于,还包括:
步骤4:创建与元数据存储相关的必备要素,通过所述与元数据存储相关的必备要素构建元数据接口插件;
步骤4具体包括:
步骤41:通过抽象插件模块创建作为所述元数据接口插件的入口的接口,所述作为所述元数据接口插件的入口的接口包括:获取元数据工厂的接口、元数据插件名称接口和元数据插件描述接口;
步骤42:通过元数据工厂模块创建元数据目录,通过所述元数据目录定义元数据工厂名称接口协议和创建元数据目录接口协议;
步骤43:通过元数据目录基础操作模块定义与元数据存储相关的通用操作的接口协议;所述元数据存储相关的通用操作的接口包括:元数据接入初始化接口、元数据接入名称接口、元数据载入接口、元数据创建接口和元数据删除接口;
步骤44:通过扩展数据目录模块根据定义的与元数据存储相关的通用操作的接口协议,形成与元数据存储相关的通用操作对应的动作的执行逻辑;
步骤45:采用步骤41所创建的作为所述元数据接口插件的入口的接口,加载步骤42的元数据工厂名称接口协议和创建元数据目录接口协议,加载步骤44所形成的与元数据存储相关的通用操作对应的动作的执行逻辑,加载步骤15定义的可读文件流,所述可读文件流用于在所获取的数据是元数据时,根据所述扩展数据目录模块内形成的与元数据存储相关的通用操作对应的动作的执行逻辑获取元数据,形成可读文件流进行返回;加载步骤16定义的可写文件流,所述可写文件流用于在将元数据写入时,根据所述扩展数据目录模块内形成的与元数据存储相关的通用操作对应的动作的执行逻辑将元数据形成可写文件流进行写入,构建得到所述元数据接口插件;并将所述元数据接口插件连接于所述数据存储插件。
7.根据权利要求6所述的数据存储方法,其特征在于,还包括:
步骤5:通过所述元数据接口插件将所述数据存储插件自所述数据读写客户端接收的元数据通过基于Java的数据库连接标准接口以库表形式存储到关系库;通过提交版本控制的方式提供对元数据的通用操作;
或者,
步骤6:通过所述元数据接口插件将所述数据存储插件自数据读写客户端接收的元数据以轻量级数据交换格式存储到本地;通过提交版本控制的方式提供对元数据的通用操作。
8.一种数据存储系统,其特征在于,包括:
数据存储插件运行单元,用于通过启动数据读写服务端在存储器内运行数据存储插件;
数据读写客户端,用于与所述存储器内的所述数据存储插件进行交互,将所要存储的数据发送给所述数据存储插件;
数据存储插件,用于将所要存储的数据写入到本数据存储插件所在的存储器;
所述数据存储插件,还用于自所在的存储器内读取所要请求的数据,将所要请求的数据返回给所述数据读写客户端;
所述数据读写客户端,还用于接收所述数据存储插件返回的请求的数据;
其中,所述数据包括:非结构化数据或结构化数据;所述存储器为任一类型的存储器,各类型所述存储器存储非结构化数据和/或结构化数据;且匹配于所有类型的所述存储器的所述数据存储插件采用统一的存储接口协议;
所述数据存储系统还包括数据存储插件构建单元;
所述数据存储插件构建单元,用于在本数据存储系统使用之前,创建与存储相关的必备要素,通过所述与存储相关的必备要素构建与各类型存储器均匹配的数据存储插件。
9.根据权利要求8所述的数据存储系统,其特征在于,所述数据存储插件构建单元包括:
抽象插件模块,用于创建作为所述数据存储插件的入口的接口,所述作为所述数据存储插件的入口的接口包括:获取统一文件操作工厂接口、插件名称接口和插件描述接口;其中,所述数据存储插件匹配于各类型存储器;
统一文件存储工厂模块,用于设置存储器类型,定义与存储相关的接口协议,根据所述存储器类型和所述与存储相关的接口协议生成与各类存储器对应的操作逻辑;
扩展文件读写操作接口模块,用于定义与存储相关的通用操作的接口协议,所述存储相关的通用操作的接口协议用于定义通用操作对应的动作,以及定义与存储相关的特殊操作对应的动作;
文件读写基础操作模块,用于根据所述存储相关的通用操作的接口协议标准形成与存储相关的通用操作对应的动作的执行逻辑,以及形成与存储相关的特殊操作对应的动作的执行逻辑,所述特殊操作包括:遍历文件、文件重命名、计算存储大小或文件大小;
可读文件流模块,用于定义可读文件流,所述可读文件流用于获取数据时形成可读文件流进行返回;
可写文件流模块,用于定义可写文件流,所述可写文件流用于在将数据写入时形成可写文件流;
第一构建模块,用于采用作为所述数据存储插件的入口的接口,加载各类存储器对应的操作逻辑,加载与存储相关的通用操作对应的动作的执行逻辑、以及形成的与存储相关的特殊操作对应的动作的执行逻辑,加载可读文件流,所述可读文件流用于在所获取的数据是字节数据时,根据所述文件读写基础操作模块内形成的通用操作或者特殊操作获取存储器内的字节数据,形成可读文件流进行返回;加载可写文件流,所述可写文件流用于在将字节数据写入时,根据所述文件读写基础操作模块内形成的通用操作或者特殊操作将字节数据,形成可写文件流进行写入到存储器,构建得到与各类型存储器均匹配的数据存储插件。
10.根据权利要求9所述的数据存储系统,其特征在于,所述数据存储插件运行单元包括:
数据读写服务端,用于为加载数据存储插件注入模块提供所述存储器的存储路径下的数据存储插件目录、数据存储插件参数和数据存储插件抽象逻辑;其中,所述数据存储插件匹配于各类型存储器;
数据存储插件注入模块,用于将数据存储插件的核心服务注入到所述数据读写服务端;
插件管理模块,用于提供数据存储插件的通用插件管理器,并存储所述数据存储插件,以及提供对所述数据存储插件的增加、删除、查询、修改的操作;
插件内容提供器,用于根据所述数据读写服务端提供的所述数据存储插件目录,在所述数据存储插件目录内扫描所述数据存储插件对应的文件、所依赖文件和配置文件;
插件加载器,用于将所述数据存储插件加载到运行时环境中,并将所加载的数据存储插件与所述数据读写服务端的运行隔离。
11.根据权利要求9所述的数据存储系统,其特征在于,
所述数据读写客户端,具体用于将所要存储的数据读取为第一转化数据,并将所述第一转化数据发送给所述数据存储插件;其中,所述第一转化数据是指:根据所要存储的数据的存储形式对应的指定存储形式,将所要存储的数据读取为指定存储形式的数据;
所述数据存储插件,具体用于将所述第一转化数据写入所述存储器,并将所述第一转化数据转化为原文件;
或者,
所述数据存储插件,具体用于将自所述存储器内所要请求的数据读取为第二转化数据,将所述第二转化数据返回给所述数据读写客户端;其中,所述第二转化数据是指:根据所要请求的数据的存储形式在写入所述存储器时的第一转化数据的存储形式相同的数据;
所述数据读写客户端,具体用于将所述转化数据转化为原文件;
其中,在所述数据读写客户端将所要存储的数据读取为第一转化数据时,若所要存储的数据为非结构化数据,则将所述非结构化数据读取为字节数据;若所要存储的数据为结构化数据时,将所述结构化数据读取为字节数据,同时获取描述所述结构化数据的元数据。
12.根据权利要求9所述的数据存储系统,其特征在于,还包括:
元数据接口插件创建单元,用于创建与元数据存储相关的必备要素,通过所述与元数据存储相关的必备要素构建元数据接口插件;
所述元数据接口插件创建单元包括:
抽象插件模块,用于创建作为所述元数据接口插件的入口的接口,所述作为所述元数据接口插件的入口的接口包括:获取元数据工厂的接口、元数据插件名称接口和元数据插件描述接口;
元数据工厂模块,用于创建元数据目录,通过所述元数据目录定义元数据工厂名称接口协议和创建元数据目录接口协议;
元数据目录基础操作模块,用于定义与元数据存储相关的通用操作的接口协议;所述元数据存储相关的通用操作的接口包括:元数据接入初始化接口、元数据接入名称接口、元数据载入接口、元数据创建接口和元数据删除接口;
扩展数据目录模块,用于根据定义的与元数据存储相关的通用操作的接口协议,形成与元数据存储相关的通用操作对应的动作的执行逻辑;
第二构建模块,用于采用作为所述元数据接口插件的入口的接口,加载元数据工厂名称接口协议和创建元数据目录接口协议,加载与元数据存储相关的通用操作对应的动作的执行逻辑,加载可读文件流,所述可读文件流用于在所获取数据的为元数据时,根据所述扩展数据目录模块内形成的与元数据存储相关的通用操作对应的动作的执行逻辑获取元数据,形成可读文件流进行返回;加载可写文件流,所述可写文件流用于在将元数据写入时,根据所述扩展数据目录模块内形成的与元数据存储相关的通用操作对应的动作的执行逻辑将元数据形成可写文件流进行写入,构建得到所述元数据接口插件;并将所述元数据接口插件连接于所述数据存储插件;
所述的数据存储系统,还包括关系库和/或本地文件系统,采用所述关系库、所述本地文件系统其中之一存储元数据,在所述关系库、所述本地文件系统中通过提交版本控制的方式提供对元数据的通用操作;其中:
所述关系库,用于存储所述元数据接口插件接收的来自所述数据存储插件的元数据,且所述元数据以库表形式存储,其中,所述数据存储插件接收所述数据读写客户端读取的元数据;本关系库通过基于Java的数据库连接标准接口连接到所述元数据接口插件;
所述本地文件系统,用于存储所述元数据接口插件接收的来自所述数据存储插件的元数据,且所述元数据采用轻量级数据交换格式存储,
通过所述元数据接口插件将所述数据存储插件自数据读写客户端接收的元数据以轻量级数据交换格式存储到本地文件系统。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被计算机设备执行时,使得所述计算机设备执行权利要求1-7中任意一项所述的数据存储方法。
14.一种计算机设备,其特征在于,包括:
处理器;以及,被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行权利要求1-7中任意一项所述的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311715111.6A CN117632035A (zh) | 2023-12-13 | 2023-12-13 | 一种数据存储方法、系统、存储介质及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311715111.6A CN117632035A (zh) | 2023-12-13 | 2023-12-13 | 一种数据存储方法、系统、存储介质及计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117632035A true CN117632035A (zh) | 2024-03-01 |
Family
ID=90032077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311715111.6A Pending CN117632035A (zh) | 2023-12-13 | 2023-12-13 | 一种数据存储方法、系统、存储介质及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117632035A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101131623A (zh) * | 2004-04-14 | 2008-02-27 | 株式会社日立制作所 | 存储系统 |
US20080091878A1 (en) * | 2006-10-13 | 2008-04-17 | Spansion, Llc | Virtual memory card controller |
CN102279711A (zh) * | 2011-08-09 | 2011-12-14 | 青岛海信网络科技股份有限公司 | 基于插件的实时数据存储方法及装置 |
CN106527968A (zh) * | 2016-09-21 | 2017-03-22 | 苏州市广播电视总台 | 一种基于文件直通技术的文件传输方法 |
US20230011540A1 (en) * | 2021-07-06 | 2023-01-12 | Pure Storage, Inc. | Container Orchestrator-Aware Storage System |
CN117112691A (zh) * | 2023-07-19 | 2023-11-24 | 中国人民解放军91977部队 | 一种面向大数据的多存储引擎数据库的存储方法 |
-
2023
- 2023-12-13 CN CN202311715111.6A patent/CN117632035A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101131623A (zh) * | 2004-04-14 | 2008-02-27 | 株式会社日立制作所 | 存储系统 |
US20080091878A1 (en) * | 2006-10-13 | 2008-04-17 | Spansion, Llc | Virtual memory card controller |
CN102279711A (zh) * | 2011-08-09 | 2011-12-14 | 青岛海信网络科技股份有限公司 | 基于插件的实时数据存储方法及装置 |
CN106527968A (zh) * | 2016-09-21 | 2017-03-22 | 苏州市广播电视总台 | 一种基于文件直通技术的文件传输方法 |
US20230011540A1 (en) * | 2021-07-06 | 2023-01-12 | Pure Storage, Inc. | Container Orchestrator-Aware Storage System |
CN117112691A (zh) * | 2023-07-19 | 2023-11-24 | 中国人民解放军91977部队 | 一种面向大数据的多存储引擎数据库的存储方法 |
Non-Patent Citations (2)
Title |
---|
华晓炜: "面向时空大数据的NVMe全闪存存储系统的研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 30 June 2023 (2023-06-30), pages 137 - 19 * |
李琨: "一种私有云存储解决方案", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 31 March 2015 (2015-03-31), pages 137 - 79 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10956448B2 (en) | Systems, methods, and apparatus for hierarchical database | |
CN108885580B (zh) | 实时数据流编程中模式驱动反应的组合 | |
US7487168B2 (en) | System and method for loading hierarchical data into relational database systems | |
US8037209B2 (en) | Device configuration integration information managing device and device configuration information managing device | |
AU2017216248B2 (en) | Systems and methods for generating electronic document templates and electronic documents | |
CN113704247A (zh) | 通过数据库平台执行的方法、数据库平台以及介质 | |
US20160019272A1 (en) | Managing data ingestion | |
CN109766085A (zh) | 一种处理枚举类型代码的方法及装置 | |
EP3516549B1 (en) | Systems and methods for accessing a database management system | |
CN116483859A (zh) | 数据查询方法及装置 | |
US11954113B2 (en) | Method for automated query language expansion and indexing | |
US10108745B2 (en) | Query processing for XML data using big data technology | |
CN117149777B (zh) | 一种数据查询方法、装置、设备及存储介质 | |
US10936539B2 (en) | Source data assignment based on metadata | |
Kim et al. | Comprehensive Knowledge Archive Network harvester improvement for efficient open‐data collection and management | |
US20230409295A1 (en) | Building base applications with user interface micro frontends | |
CN106570152B (zh) | 一种手机号码的海量提取方法及系统 | |
CN117632035A (zh) | 一种数据存储方法、系统、存储介质及计算机设备 | |
CN116627448A (zh) | 一种创建微服务的方法及相关设备 | |
Ousterhout et al. | Zed: Leveraging data types to process eclectic data | |
US9361400B2 (en) | Method of improved hierarchical XML databases | |
WO2014176954A1 (zh) | 分布式存储系统的数据的处理方法、装置及系统 | |
Martin | The Client-go Library | |
CN117056316B (zh) | 一种多源异构数据关联查询加速方法、装置及设备 | |
CN113778886B (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 |