基于数据存储系统的图像数据操作方法、装置及介质与流程
未命名
07-23
阅读:159
评论:0
1.本发明涉及计算机技术领域,尤其涉及一种基于数据存储系统的图像数据操作方法、装置及介质。
背景技术:
2.对于应用程序开发,数据存储是不可避免的一个环节,每一种数据存储系统都有自己独特的访问方式。
3.目前,各数据存储系统的访问工具,例如各数据存储系统的数据操作接口都是较为单一的,一种数据操作接口往往只能提供特定数据库的访问,以及支持特定的数据格式。
4.但是,如果用户需要从不同的数据存储系统中,提取并分析图像数据,则需要用户对不同的数据存储系统都有一定程度地了解,使用门槛较高,图像数据操作耗时耗力,甚至用户需要反复去数据存储系统中进行图像数据操作,图像数据操作的效率低,灵活性低。
技术实现要素:
5.本发明提供一种基于数据存储系统的图像数据操作方法、装置及介质,用以解决现有技术中图像数据操作的效率低,灵活性低的问题。
6.本发明提供一种基于数据存储系统的图像数据操作方法,包括:
7.在检测到用户输入的初始操作语句的情况下,解析所述初始操作语句,得到所述初始操作语句中的至少一个关键元素;
8.将所述至少一个关键元素填充到预先设置的与目标数据存储系统对应的操作语句模板中,得到所述目标数据存储系统对应的目标操作语句;其中,所述目标数据存储系统是待进行图像数据操作的数据存储系统;
9.利用所述目标操作语句,在所述目标数据存储系统中进行图像数据操作。
10.根据本发明提供的一种基于数据存储系统的图像数据操作方法,在所述利用所述目标操作语句,在所述目标数据存储系统中进行图像数据操作之后,所述方法还包括:
11.获取所述目标数据存储系统返回的操作结果;
12.基于预先设置的数据库对象的集合schema,将所述操作结果转换成目标格式的目标图像数据;
13.其中,schema用于对所述操作结果的字段类型进行转换。
14.根据本发明提供的一种基于数据存储系统的图像数据操作方法,所述目标格式包括pandas dataframe格式。
15.根据本发明提供的一种基于数据存储系统的图像数据操作方法,所述利用所述目标操作语句,在所述目标数据存储系统中进行图像数据操作,包括:
16.在所述目标数据存储系统包括关系型数据存储系统的情况下,利用所述目标操作语句,通过sqlalchemy和/或预先设置的ruleng在所述目标数据存储系统中进行图像数据操作;
17.在所述目标数据存储系统包括非关系型数据存储系统的情况下,利用所述目标操作语句,通过py-elesticsearch在所述目标数据存储系统中进行图像数据操作;
18.在所述目标数据存储系统包括云数据存储系统的情况下,利用所述目标操作语句,通过duckdb+pyarrow在所述目标数据存储系统中进行图像数据操作。
19.根据本发明提供的一种基于数据存储系统的图像数据操作方法,所述利用所述目标操作语句,在所述目标数据存储系统中进行图像数据操作,包括:
20.在所述目标数据存储系统中的待操作文件包括parquet格式的文件的情况下,利用所述目标操作语句,在所述目标数据存储系统中使用duckdb+pyarrow对所述待操作文件进行图像数据操作;
21.在所述目标数据存储系统中的待操作文件包括逗号分隔值csv格式的文件和/或zip格式的文件的情况下,在所述目标数据存储系统中使用pandas的read_csv接口对所述待操作文件进行图像数据操作。
22.根据本发明提供的一种基于数据存储系统的图像数据操作方法,所述初始操作语句采用结构化查询语言sql。
23.本发明还提供一种基于数据存储系统的图像数据操作装置,包括:
24.解析模块,用于在检测到用户输入的初始操作语句的情况下,解析所述初始操作语句,得到所述初始操作语句中的至少一个关键元素;
25.填充模块,用于将所述至少一个关键元素填充到预先设置的与目标数据存储系统对应的操作语句模板中,得到所述目标数据存储系统对应的目标操作语句;其中,所述目标数据存储系统是待进行图像数据操作的数据存储系统;
26.操作模块,用于利用所述目标操作语句,在所述目标数据存储系统中进行图像数据操作。
27.本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述基于数据存储系统的图像数据操作方法。
28.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述基于数据存储系统的图像数据操作方法。
29.本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述基于数据存储系统的图像数据操作方法。
30.本发明提供的基于数据存储系统的图像数据操作方法、装置及介质,在检测到用户输入的初始操作语句的情况下,通过解析初始操作语句中的关键元素,并将其填充至目标数据存储系统对应的操作语句模板中,可以得到与目标数据存储系统对应的目标操作语句,以在目标数据存储系统中进行图像数据操作,对于用户来说,本发明实施例可以将初始操作语句转换为与任一目标数据存储系统对应的目标操作语句,用户仅需要掌握初始操作语句的数据格式即可,无需对不同的数据存储系统操作都有了解,使用门槛低,可以有效提高图像数据操作的效率、复用性和灵活性。
附图说明
31.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术
描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
32.图1是本发明提供的基于数据存储系统的图像数据操作方法的流程示意图之一;
33.图2是本发明提供的基于数据存储系统的图像数据操作方法的流程示意图之二;
34.图3是本发明提供的基于数据存储系统的图像数据操作装置的方框示意图;
35.图4是本发明提供的电子设备的结构示意图。
具体实施方式
36.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
37.下面结合附图描述本发明的基于数据存储系统的图像数据操作方法、装置及介质。
38.本发明实施例提供的基于数据存储系统的图像数据操作方法可以应用于数据接口,可以使该数据接口成为无感知接口,这里的无感知接口指的是可以直接利用该接口对不同数据存储系统进行图像数据操作。
39.图1是本发明提供的基于数据存储系统的图像数据操作方法的流程示意图之一,如图1所示,基于数据存储系统的图像数据操作方法包括步骤101至步骤103;其中:
40.步骤101、在检测到用户输入的初始操作语句的情况下,解析所述初始操作语句,得到所述初始操作语句中的至少一个关键元素;
41.步骤102、将所述至少一个关键元素填充到预先设置的与目标数据存储系统对应的操作语句模板中,得到所述目标数据存储系统对应的目标操作语句;
42.其中,所述目标数据存储系统是待进行图像数据操作的数据存储系统;
43.步骤103、利用所述目标操作语句,在所述目标数据存储系统中进行图像数据操作。
44.具体地,相关技术中,对于目前的应用程序开发来说,数据存储是不可避免的一个环节,而且存储空间的选择会随着数据量和应用场景的增加而变得更为复杂,例如关系较为复杂的结构化数据,适合使用传统关系型数据库mysql作为存储系统;应用程序收集的日志或者经常需要进行全文检索的数据,适合使用非关系型数据库elasticsearch(es)作为存储系统;而不常访问的历史数据则适合在s3或者操作支持系统(operation support systems,oss)等类似的云存储系统中存放,但是每一种数据存储系统都有自己对于的独特的使用方式,例如mysql需要通过结构化查询语言(structured query language,sql)操作数据,es需要通过领域特定语言(domain specific language,dsl)操作数据,dsl例如为基于json的完整的查询dsl,oss或s3等云存储系统需要通过应用程序界面(application program interface,api)操作数据。
45.如果想熟练的使用每一种存储方式,都需要对其有一定程度地了解,这就对程序的敏捷开发以及开发人员造成了很大的负担。
46.本发明实施例旨在提供一种全面、灵活的多功能接口,用户在需要对某一数据存储系统进行图像数据操作时,可以通过自己已经熟知的语言,输入初始操作语句,以由数据接口应用本发明实施例提供的基于数据存储系统的图像数据操作方法,解析初始操作语句,得到初始操作语句中的至少一个关键元素,关键元素例如用于表征需要操作的表、该表需要操作的字段、具体操作、取数据的条件或者以什么样的方式返回等信息;再将解析得到的至少一个关键元素,填充到预先设置的与用户待进行图像数据操作的目标数据存储系统对应的操作语句模板中,得到与目标数据存储系统对应的目标操作语句,进而可以利用目标操作语句,对目标数据存储系统进行图像数据操作。
47.可选地,图像数据操作可以包括以下至少一项操作:
48.1.增(insert);
49.2.删(delete);
50.3.改(update);
51.4.查(select)。
52.可选地,所述初始操作语句可以采用结构化查询语言(sql)。
53.在一个实施例中,用户可以利用绝大多数开发人员都熟练掌握的sql,对不同数据存储系统中存储的图像数据进行处理,例如,用户可以输入增、删、改、查相关的sql语句,以通过本发明实施例提供的基于数据存储系统的图像数据操作方法,得到增、删、改、查对应的目标操作语句,进而可以在目标数据存储系统中利用增、删、改、查对应的目标操作语句,执行对应的图像数据操作。本发明实施例可以使用户能够有更多的时间专注于业务的开发,而不是对工具的深究上。
54.对于图像数据分析来说,在应用程序需要收集各种图像数据进行针对性分析的时候,由于需要收集的图像数据可能存储于不同的数据存储系统,故开发人员需要针对性的开发该数据存储系统的读写方式,并且每个数据存储系统所支持的使用/访问方式不同,这会导致将各数据存储系统的图像数据汇集到一个应用程序中的复杂度大幅度提升;例如,使用不同数据存储系统的数据的格式处理,以及数据的筛选和数据提取等,都需要进行不同的处理;在数据分析时需要用到各个维度的数据进行全面的分析,当然可以针对每个数据存储系统维护一套与之对应的数据处理格式,分开处理,然后集中分析,但是这样开发周期以及人员协作等都需要进行维护与解决;另外,如果对各个数据存储系统的数据都需要进行特殊处理,那就很难在短时间内进行有效的分析。
55.而本发明实施例提供的基于数据存储系统的图像数据操作方法,使用户可以利用统一的语言和访问方式,快速提取出分布在不同数据存储系统中需要的图像数据,从而快速进行图像数据分析,也为以后的应用程序优化提供了可行性依据。
56.可选地,所述利用所述目标操作语句,在所述目标数据存储系统中进行图像数据操作的实现方式可以包括:
57.在所述目标数据存储系统包括关系型数据存储系统的情况下,利用所述目标操作语句,通过sqlalchemy和/或预先设置的ruleng在所述目标数据存储系统中进行图像数据操作;
58.在所述目标数据存储系统包括非关系型数据存储系统的情况下,利用所述目标操作语句,通过py-elesticsearch在所述目标数据存储系统中进行图像数据操作;
59.在所述目标数据存储系统包括云数据存储系统的情况下,利用所述目标操作语句,通过duckdb+pyarrow在所述目标数据存储系统中进行图像数据操作。
60.具体地,对于mysql等关系型数据存储系统,可以通过sqlalchemy和/或预先设置的ruleng对相关数据库进行连接及操作;对于elasticsearch等非关系型数据存储系统,可以通过py-elesticsearch对相关数据库进行连接及操作;对于s3、oss等云数据存储系统,可以通过duckdb+pyarrow对对象存储进行相关操作。
61.需要说明的是,sqlalchemy是python社区中广泛使用的对象关系映射工具(object/relational mapping,orm),也可以写成sqlalchemy;py-elesticsearch的全称为python elasticsearch client,是python语言中的es连接器;s3例如为amazon simple storage service(amazon s3),是一种对象存储服务;oss例如为阿里云对象存储oss(object storage service);duckdb+pyarrow中,duckdb是一款嵌入式关系型联机分析处理(online analysis processing)数据库管理系统,对于pyarrow,apache arrow是高性能的、用于内存计算的列式数据存储格式,而pyarrow是apache arrow的python库,它们是基于arrow的c++实现。
62.可选地,所述利用所述目标操作语句,在所述目标数据存储系统中进行图像数据操作的实现方式可以包括:
63.在所述目标数据存储系统中的待操作文件包括parquet格式的文件的情况下,利用所述目标操作语句,在所述目标数据存储系统中使用duckdb+pyarrow对所述待操作文件进行图像数据操作;
64.在所述目标数据存储系统中的待操作文件包括逗号分隔值(comma-separated values,csv)格式的文件和/或zip格式的文件的情况下,在所述目标数据存储系统中使用pandas的read_csv接口对所述待操作文件进行图像数据操作。
65.具体地,不同存储格式的图像数据可以对应不同处理方式,比如对于parquet文件,可以使用duckdb+pyarrow实现图像数据操作;对于csv、zip等格式的图像数据,可以通过pandas提供的read_csv接口对图像数据进行获取。
66.需要说明的是,parquet全称为apache parquet,是顶级apache开源项目,一种面向分析的、通用的列式存储格式。
67.本发明实施例提供的基于数据存储系统的图像数据操作方法中,在检测到用户输入的初始操作语句的情况下,通过解析初始操作语句中的关键元素,并将其填充至目标数据存储系统对应的操作语句模板中,可以得到与目标数据存储系统对应的目标操作语句,以在目标数据存储系统中进行图像数据操作,对于用户来说,本发明实施例可以将初始操作语句转换为与任一目标数据存储系统对应的目标操作语句,用户仅需要掌握初始操作语句的数据格式即可,无需对不同的数据存储系统操作都有了解,使用门槛低,可以有效提高图像数据操作的效率、复用性和灵活性。
68.可选地,在所述利用所述目标操作语句,在所述目标数据存储系统中进行图像数据操作之后,可以获取所述目标数据存储系统返回的操作结果;
69.基于预先设置的数据库对象的集合(schema),将所述操作结果转换成目标格式的目标图像数据;
70.其中,schema用于对所述操作结果的字段类型进行转换。
71.在本发明实施例中,基于schema可以将操作结果转换成目标格式的目标图像数据,使得不同数据存储系统返回的目标图像数据是统一的目标格式,在后续需要进行图像数据分析时可以直接使用目标图像数据,无需再针对不同数据存储系统返回的图像数据进行特殊处理,可以提高后续图像数据分析的便捷性,并提高后续图像数据分析的效率。
72.可选地,所述目标格式包括pandas dataframe格式。
73.具体地,在目标格式包括pandas dataframe格式的情况下,可以将获取的操作结果结合预设的schema,对字段类型进行转换,得到转换后的候选图像数据,再通过pandas中的dataframe,将候选图像数据转换成对用户友好的pandas dataframe格式的目标图像数据。
74.可选地,所述初始操作语句可以采用预先设置的ruleng语言。
75.需要说明的是,常用的数据库分为sql以及非关系型的数据库(nosql)两种;而目前没有执行nosql查询的标准语言,用于查询数据的语法因不同类型的nosql数据库而异。与只有一种易于学习的语言需要掌握的sql不同,nosql的学习曲线更陡峭。例如,如果开发人员之前的所有经验都包括构建和管理图形数据库,那么他们可能很难快速掌握在宽列数据库上的工作。
76.并且,由于nosql数据库中存在多种数据结构,因此查询效率低。与sql数据库不同,没有标准接口来执行复杂的查询。即使是简单的nosql查询也可能需要编程经验。这意味着更多的技术人员和成本高昂的员工,如开发人员或数据科学家,将需要熟悉并执行这种复杂的查询;
77.在大数据场景应用中,elasticsearch扮演着举足轻重的角色,且支持的查询语言为dsl,相对sql的聚合来说,dsl的语法表示是很复杂的,而ruleng语言,同时兼顾了sql的简单好用以及dsl的灵活,可以使用简单的查询规则替代复杂冗长的sql以及dsl规则的编写,它所支持支持的查询类型(query)、聚类类型(same)、频次类型(every)、离散度类型(count)等多种api,可以很好地支持日常数据分析所需,使得开发人员可以将更多工作放在查询逻辑上,而非语言规则中。ruleng提供的多平台解析器,会自动适配不同平台的语言规则,将简单的ruleng规则通过关键节点以及元素的提取,翻译成不同平台支持的语句。
78.下面对ruleng语言进行具体描述:
79.一、数据兼容层通过深度重写python elasticserch、opendistortes(open distort for elasticserch)、oss、s3等python连接器,实现接口统一,并且通过重写构造函数解决es,odps-es(open distort for elasticserch)等多版本的不兼容问题,且提供了从响应中额外提取的多种实用方法,帮助用户提升实用性的同时兼顾最优的性能表现,例如通过psutil+resource模块,获取到该进程或其子进程的资源使用的相关信息,方便对资源进行限制;
80.其中,opendistort是elasticserch的一个增值发行版,100%开源(采用apache 2.0许可证)并且由aws提供支持。
81.二、实现方式:
82.接受到规则(rule)后通过预设语法树中的关键节点,进行语法验证,并对不同组合之间兼容性进行验证,所有验证通过后,通过读取yaml、ini等格式配置文件的方式加载存储层相关配置参数,如目标地址,身份验证信息等,之后通过python自带threading模块
支持,其中,threading为python中的多线程模型,可以理解为是基于线程的并行模块;再使用weakref库中的weakkeydictionary实现一种可变映射,即里面的值是对象的弱引用,方便不同平台连接器之间的切换,使用时间戳添加时间规范规则,从语法验证通过的最终匹配结果中获取搜索、删除、增加、修改等规则,通过覆写定义的接口类,分别实现python elasticserch、opendistort、oss、s3等数据存储层的query,delete,update,insert等语法结构,通过语法匹配的方式,将规则树中关键节点进行个更替,从而实现语法转换,然后使用转换后的完整语法访问目标数据存储平台,将返回的数据同样使用覆写定义好的接口类完成数据格式的统一。
83.1、same:
84.过滤操作符支持:top,bottom,min,及比较操作符,如"》","》="等;
85.说明:其中es是基于term aggregation实现,将数据按该字段不同取值进行切分。举例:('city.raw','same','top','10'),用于表征将数据按不同的城市切分,切分后只返回10个数据最多的城市名称;
86.2、count:
87.过滤操作符支持:比较操作符,如"》","》="等;
88.说明:其中es是基于cardinality aggregation实现,统计该字段不同取值的个数(》precision(最大40000)以上的不精确)。举例:('city.raw','count','》','0');统计城市的个数。
89.3、stat:
90.过滤操作符支持:比较操作符,如"》","》="等;
91.说明:其中es是基于extended_stats aggregation实现,返回该字段的统计数据参数,合法的统计参数为:count:个数;avg:平均值;max:最大值;min:最小值;std_deviation:标准偏差;sum:和;sum_of_squares:平方和;variance:平均平方和;maxt:最大时间;mint:最小时间。
92.举例:('price','stat','avg','》=','0'),表征返回平均价格or('price','stat',['avg','sum'],'》=','0')表征返回平均价格及价格总和。
[0093]
4、period:
[0094]
过滤操作符支持:比较操作符,如"》","》="等;
[0095]
说明:基于es的date histogram aggregation实现,将数据按时间字段进行切分,合法的切分为:nu,n为数值,u为时间单位,合法的时间单位有:y:year;m:month;w:week;d:day;h:hour;m:minutes;s:seconds;切分按日历时间单位进行切分,如m,切分方式以日历每月的起点为切分时间点。
[0096]
举例:(
‘
time’,'period','2d','》','0'),按2天时间为单位进行切分。
[0097]
除此记录字段数据类型之外,rule engine还支持矢量数据类型,矢量的格式为:[[{field1:f1_val1},{field2:f2_val1},...],val11,val12],[[{field1:f1_val2},{field2:f2_val2},...],val21,val22],....。
[0098]
矢量为相同元素的列表,每个元素由两部分组成:
[0099]
1)字段:字段的取值列表,表示一个数据集合;如[{'city':beijing},{'username':'xli'}]表示,city字段取值为beijing,username字段取值为xli的数据集合。
[0100]
2)数据集合的分析结果指标,有两个指标结果,具体指标的意义,由分析的规则确定;如果分析规则为count items,下面这个元素的结果表示一共有11个items,共32条数据记录:[{'city':beijing},{'username':'xli'}],11,32。
[0101]
操作表达式的基本结构为:[(field1,操作符1,结果过滤1),(field2,操作符2,结果过滤2)...];
[0102]
下面是操作符的优先级规则:
[0103]
1)先记录操作符,后算矢量操作符。
[0104]
2)记录操作符中,query的优先级最高,same的优先级次之,然后是分段操作符every,period,range,最后计算统计类操作符count,stat,这些操作符中,只有same可以嵌套调用,优先级为从左至右。count,stat互斥,不能同时存在于一个表达式中,every,period,range同样互斥,不能同时存在于一个表达式中;
[0105]
3)矢量操作符中,优先级按下列循序:record,divide,cascade,expr,thres,stat,norm,retention,range,filter,trendchk。
[0106]
5、divide:
[0107]
两次调用日志操作符,将调用结果相除;
[0108]
说明:规则格式为:
[0109]
(
‘
fieldname’,'vector','divide',['query_op1','op_param1'],['query_op1','op_param2'])
[0110]
第一次用('fieldname','query','query_op1','op_param1'),跟后面的rule组合查找获得结果res1,第二次再用('fieldname','query','query_op2','op_param2')同样跟后面的rule组合查找获得结果res2。最后的结果为res2./res1;
[0111]
1)如果res1及res2有同样的字段取值,则结果为res2/res1;
[0112]
2)如果res1有的字段取值中res2没有,则结果为0;
[0113]
3)如果res2有的字段取值而res1中没有,则在结果中舍弃;
[0114]
举例:[('conc_code','vector','divide',['exist',”],['match','1']),('manufacturer','same','》',0),('equip_id','count','》','0')]
[0115]
note:conc_code为1表示设备合格;结果为各个厂商的设备检测合格率,案例可见:规则引擎增强设计(国电demo)1.1.2中的1【嵌套调用:即递归调用,支持多次嵌套相除】。
[0116]
6、cascade:
[0117]
说明:按第一个规则计算字段集合,再按第二个规则计算结果,并将第二个规则的结果嫁接到第一个规则的字段集合上。
[0118]
规则格式为:
[0119]
(
‘
fieldname’,'vector','cascade',
[0120]
[(time_spec1),('query_op1','op_param1')],
[0121]
[(time_spec2),('query_op2','op_param2')])
[0122]
time_spec的格式见后面的note1,第一次用('fieldname','query','query_op1','op_param1'),跟后面的rule组合在time_spec1时间段上分析得到结果res1,第二次再用('fieldname','query','query_op2','op_param2')同样跟后面的rule组合在time_
spec2时间段上分析获得结果res2。
[0123]
note1:time_spec的格式为(start_time,end_time);
[0124]
start_time,end_time支持如下六种不同的形式:
[0125]
1)start:==调用分析api时输入的分析启始时间;
[0126]
2)end:==调用分析api时输入的分析结束时间;
[0127]
3)begin:==最早时间,hardcode为'1971-01-01t00:00:00';
[0128]
4)now:==当前时间;
[0129]
5)nu:==当前时间+nu;n为数值,可以为负数,u为时间单位('d','h','m','s');
[0130]
6)标准时间字符串:如
‘
yyyy-mm-ddthh:mm:ss’。
[0131]
note2:rule expr中分子分母格式说明,支持如下三种不同格式:
[0132]
1)(time_spec),(其他一个或者多个记录操作rules);
[0133]
2)('doc_time_field_name','qeury','ts',[time_spec]),(其他一个或者多个记录操作rules),设定time_spec同时,改变时间轴为doc_time_field_name;
[0134]
3)一个或者多个记录操作rules。
[0135]
note3:rule expr中的expression格式说明:
[0136]
i11,i12为res1结果中两个分析指标,i21,i22为res2结果中的两个分析指标,express可以为任意这四个指标通过任意python运算操作符进行运算。取决于格式,一共可以有两个运算结果:
[0137]
1)expression,如“i11+i21*i12/i22”,输出结果指标为(i11+i21*i12/i22,i12);
[0138]
2)expression1,expression2,如'i11/i12,i21/i22',输出结果指标为(i11/i12,i21/i22);
[0139]
详细的expression spec见note4。
[0140]
结果处理方式类同与divide:
[0141]
1)如果res1及res2有同样的字段取值,则结果为res2;
[0142]
2)如果res1有的字段取值中res2没有,则设结果为0;
[0143]
3)如果res2有的字段取值而res1中没有,则在结果中舍弃。
[0144]
举例:
[0145]
[('newregistration','vector','cascade',[('start','end'),('match','1')],[('sta rt','now'),('》','0')]),
[0146]
('userid','same','》','0'),('logtime','stat',['max','min'],'》','0')]
[0147]
note:newregistration为1表示新注册用户登录,2为表示已注册用户登录;查询在分析时段中新注册的所有用户的最早和最晚登录时间。
[0148]
7、norm:
[0149]
说明:对矢量的指标按公式进行归一化处理,规则格式如下:
[0150]
('fieldname','vector','norm',expr,func)
[0151]
其中,expr详见note4;func为归一化函数,基于expr处理过的结果进行归一化。归一化函数的规则详见note5;
[0152]
其中,note4:vector rule中expression表达式spec,如vector rule:expr,stat,norm等;
[0153]
符号定义:
[0154]
p1,p11,i1,i11
‑‑
表示矢量res1中的第一个指标;
[0155]
p2,p12,i2,i12
‑‑
表示矢量res1中的第二个指标;
[0156]
p21,i21
‑‑
表示矢量res2中的第一个指标;
[0157]
p22,i22
‑‑
表示矢量res2中的第二个指标;
[0158]
abs(i)
–
为数学abs()函数表示求输入指标i的绝对值,i为上述i1,p1...i22中的任意一个。
[0159]
以上的数值指标可以用python任何运算操作符进行组合运算。
[0160]
note5:func_expr向量表达式规则,表达式支持任意python运算操作符进行运算。
[0161]
表达式中关键字如下:
[0162]
max,min,avg:分别表示向量的最大值、最小值、平均值;
[0163]
i1,val:都表示向量的当前值。
[0164]
举例:
[0165]
('manufacturer','vector','norm','1-abs(i1)-i2','(val-min)/(max-min)')在矢量中按manufacturer字段的不同取值先分别计算val=1-abs(i1)-i2,然后按val进行归一化,归一化公式为f(x)=(x-min)/(max-min),其中min为x的最小值,max为x的最大值。
[0166]
还需要说明的是,本发明实施例利用ruleng语言,至少存在以下
[0167]
有益效果:
[0168]
1)替代query dsl,sql,降低复杂度;提高可读性;减少解析复杂度;
[0169]
2)增加分析功能;加入常见统计分析功能;对输出结果在内存中进行统计分析;更复杂的统计分析场景;
[0170]
3)数据监控处理;监控数据的变更;自动触发计算;生成保存计算结果(包括图片、文档等);导出计算结果。
[0171]
下面举例说明本发明实施例提供的基于数据存储系统的图像数据操作方法。
[0172]
现有的各数据存储系统访问工具都较为单一,只能提供特定数据库的访问以及特定的数据格式,为了提取图像数据分析需要的图像数据,甚至会去数据存储系统中反复进行查询,还要对从不同数据存储系统拿到的图像数据,将其格式以及默认值等内容进行针对性的处理,导致效率十分低,而且复用性差,不够灵活,当然可以针对每个数据存储系统维护一套与之对应的数据处理格式,分开处理,然后集中分析,但是这样开发周期以及人员协作等都需要进行维护与解决。
[0173]
而本发明实施例应用了基于数据存储系统的图像数据操作方法的无感知接口,就只需要简单的配置,无须关心底层存储,通过sql语句就可以对现有的不同数据存储系统的图像数据进行操作,而且简单易用,十分灵活;并且支持不同的数据存储系统以及不同数据存储格式,面向用户的数据格式统一,无需特殊处理,对于图像数据分析十分友好。
[0174]
一、图2是本发明提供的基于数据存储系统的图像数据操作方法的流程示意图之二,如图2所示,基于数据存储系统的图像数据操作方法包括步骤201至步骤204;其中:
[0175]
步骤201、传入各数据存储系统的配置完成初始化;
[0176]
具体地,可以通过配置文件,快速配置需要操作的各个数据存储系统,等待各个数据存储系统完成初始化。
[0177]
步骤202、调用增、删、改、查接口传入sql语句;
[0178]
步骤203-1、对于oss、s3等云数据存储系统,通过duckdb+pyarrow进行图像数据操作;
[0179]
步骤203-2、对于es等非关系型数据存储系统,通过py-elesticsearch进行图像数据操作;
[0180]
其中,py-elesticsearch是指python的elesticsearch操作。
[0181]
步骤203-3、对于mysql等关系型数据存储系统,通过sqlalchemy和/或预先设置的ruleng进行图像数据操作;
[0182]
其中,sqlalchemy是python编程语言下的一款开源软件;
[0183]
步骤204、基于预先设置的数据库对象的集合,将数据存储系统返回的操作结果,转换成pandas dataframe格式的目标图像数据;
[0184]
其中,pandas dataframe表征一个二维的数组结构,类似二维数组。
[0185]
二、基于数据存储系统的图像数据操作方法可以包括以下步骤:
[0186]
s1、通过配置文件,快速配置需要操作的各个数据存储系统;
[0187]
s2、由配置文件解析模块,通过分布式任务处理系统(hydra)管理,满足不同类型不同连接的数据存储系统,解析并建立连接;
[0188]
s3、用户通过调用统一接口,输入增(insert)、删(delete)、改(update)、查(select)相关sql语句,作为初始操作语句;
[0189]
s4、由sql解析模块使用sqlparse,对sql语句中各个关键元素进行解析,以将sql语句转换成各个数据存储系统中可执行的目标操作语句;
[0190]
需要说明的是,sqlparse是基于python的一个无验证解析器;
[0191]
具体地,可以将用户输入的sql语句作为初始操作语句,解析sql语句中的至少一个关键元素,并将至少一个关键元素填充到预先设置的与目标数据存储系统对应的操作语句模板中,以得到与目标数据存储系统对应的目标操作语句。
[0192]
s5、通过多数据存储系统数据对接模块,去目标数据存储系统进行图像数据操作;
[0193]
具体地,可以利用目标操作语句,对目标数据存储系统进行图像数据操作;
[0194]
可选地,对于mysql等关系型数据存储系统,可以通过sqlalchemy和/或预先设置的ruleng对相关数据库进行连接及操作;对于elasticsearch等非关系型数据存储系统,可以通过py-elesticsearch对相关数据库进行连接及操作;对于s3、oss等云数据存储系统,可以通过duckdb+pyarrow对对象存储进行相关操作,且同时满足parquet、csv、zip等格式存储的图像数据。
[0195]
s6、将目标数据存储系统返回的操作结果加工成pandas dataframe格式的目标图像数据后,返回给用户。
[0196]
三、为了解决数据分析师在对图像数据进行分析时,通过单一的数据接口操作不同数据存储系统的图像数据十分耗时耗力,还要依赖反复查询数据库的问题,本发明实施例提供了一种通过sql访问的接口,具体可以通过python程序进行代码编写,将所有的需要访问的数据存储系统通过一种接口连接并访问,并提供可配置的配置文件,让图像数据操作更加方便,提供更多选项。
[0197]
在本发明实施例中,存在以下有益效果:
[0198]
1)本发明提供了一种灵活、简单的多数据存储系统图像数据操作接口,且无需关心目标数据存储系统是传统数据存储系统或是云数据存储系统;
[0199]
2)通过sql语句可以操作不同数据存储系统中的图像数据。数据存储系统例如:es、mysql等传统数据存储系统,或是oss、s3等云数据存储系统,原本都需要通过不同的方式访问,通过本发明实施例提供的接口就都可以通过sql操作相关图像数据;
[0200]
3)可以将不同数据存储系统返回的操作结果,转换为统一格式的目标图像数据返回给用户,进而可以直接使用统一格式的目标图像数据,无需再针对不同数据存储系统的图像数据进行特殊处理,对图像数据分析来说十分便捷;
[0201]
4)支持不同数据存储系统的对接,可灵活通过配置文件进行配置。例如,支持传统数据存储系统mysql及es、云数据存储系统s3及oss等数据源的输入。其中云数据存储系统支持不同格式的数据存储,例如:csv、parquet、zip等,并且,对数据格式不同的数据访问做了读写性能方面的优化。通过配置文件配置不同数据存储系统的连接方式,更加方便使用;
[0202]
5)可以自由通过配置组合要写入的信息。
[0203]
下面对本发明提供的基于数据存储系统的图像数据操作装置进行描述,下文描述的基于数据存储系统的图像数据操作装置与上文描述的基于数据存储系统的图像数据操作方法可相互对应参照。
[0204]
图3是本发明提供的基于数据存储系统的图像数据操作装置的方框示意图,如图3所示,基于数据存储系统的图像数据操作装置300包括:
[0205]
解析模块301,用于在检测到用户输入的初始操作语句的情况下,解析所述初始操作语句,得到所述初始操作语句中的至少一个关键元素;
[0206]
填充模块302,用于将所述至少一个关键元素填充到预先设置的与目标数据存储系统对应的操作语句模板中,得到所述目标数据存储系统对应的目标操作语句;其中,所述目标数据存储系统是待进行图像数据操作的数据存储系统;
[0207]
操作模块303,用于利用所述目标操作语句,在所述目标数据存储系统中进行图像数据操作;
[0208]
操作模块303具体用于执行以下任一项操作:
[0209]
在所述目标数据存储系统包括关系型数据存储系统的情况下,利用所述目标操作语句,通过sqlalchemy和/或预先设置的ruleng在所述目标数据存储系统中进行图像数据操作;
[0210]
在所述目标数据存储系统包括非关系型数据存储系统的情况下,利用所述目标操作语句,通过py-elesticsearch在所述目标数据存储系统中进行图像数据操作;
[0211]
在所述目标数据存储系统包括云数据存储系统的情况下,利用所述目标操作语句,通过duckdb+pyarrow在所述目标数据存储系统中进行图像数据操作;
[0212]
在所述目标数据存储系统中的待操作文件包括parquet格式的文件的情况下,利用所述目标操作语句,在所述目标数据存储系统中使用duckdb+pyarrow对所述待操作文件进行图像数据操作;
[0213]
在所述目标数据存储系统中的待操作文件包括逗号分隔值csv格式的文件和/或zip格式的文件的情况下,在所述目标数据存储系统中使用pandas的read_csv接口对所述待操作文件进行图像数据操作。
[0214]
本发明实施例提供的基于数据存储系统的图像数据操作装置中,可以由于解析模块在检测到用户输入的初始操作语句的情况下,解析初始操作语句中的关键元素,并由填充模块将其填充至目标数据存储系统对应的操作语句模板中,可以得到与目标数据存储系统对应的目标操作语句,以由操作模块在目标数据存储系统中进行图像数据操作,对于用户来说,本发明实施例可以将初始操作语句转换为与任一目标数据存储系统对应的目标操作语句,用户仅需要掌握初始操作语句的数据格式即可,无需对不同的数据存储系统操作都有了解,使用门槛低,可以有效提高图像数据操作的效率、复用性和灵活性。
[0215]
可选地,基于数据存储系统的图像数据操作装置300还包括转换模块,转换模块用于:
[0216]
获取所述目标数据存储系统返回的操作结果;
[0217]
基于预先设置的数据库对象的集合schema,将所述操作结果转换成目标格式的目标图像数据;
[0218]
其中,schema用于对所述操作结果的字段类型进行转换。
[0219]
可选地,所述目标格式包括pandas dataframe格式。
[0220]
可选地,所述初始操作语句采用结构化查询语言sql。
[0221]
图4是本发明提供的电子设备的结构示意图,如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(communications interface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,以执行基于数据存储系统的图像数据操作方法,该方法包括:
[0222]
在检测到用户输入的初始操作语句的情况下,解析所述初始操作语句,得到所述初始操作语句中的至少一个关键元素;
[0223]
将所述至少一个关键元素填充到预先设置的与目标数据存储系统对应的操作语句模板中,得到所述目标数据存储系统对应的目标操作语句;其中,所述目标数据存储系统是待进行图像数据操作的数据存储系统;
[0224]
利用所述目标操作语句,在所述目标数据存储系统中进行图像数据操作。
[0225]
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0226]
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的基于数据存储系统的图像数据操作方法,该方法包括:
[0227]
在检测到用户输入的初始操作语句的情况下,解析所述初始操作语句,得到所述
初始操作语句中的至少一个关键元素;
[0228]
将所述至少一个关键元素填充到预先设置的与目标数据存储系统对应的操作语句模板中,得到所述目标数据存储系统对应的目标操作语句;
[0229]
其中,所述目标数据存储系统是待进行图像数据操作的数据存储系统;
[0230]
利用所述目标操作语句,在所述目标数据存储系统中进行图像数据操作。
[0231]
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的基于数据存储系统的图像数据操作方法,该方法包括:
[0232]
在检测到用户输入的初始操作语句的情况下,解析所述初始操作语句,得到所述初始操作语句中的至少一个关键元素;
[0233]
将所述至少一个关键元素填充到预先设置的与目标数据存储系统对应的操作语句模板中,得到所述目标数据存储系统对应的目标操作语句;
[0234]
其中,所述目标数据存储系统是待进行图像数据操作的数据存储系统;
[0235]
利用所述目标操作语句,在所述目标数据存储系统中进行图像数据操作。
[0236]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0237]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件数据存储系统的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0238]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
技术特征:
1.一种基于数据存储系统的图像数据操作方法,其特征在于,包括:在检测到用户输入的初始操作语句的情况下,解析所述初始操作语句,得到所述初始操作语句中的至少一个关键元素;将所述至少一个关键元素填充到预先设置的与目标数据存储系统对应的操作语句模板中,得到所述目标数据存储系统对应的目标操作语句;其中,所述目标数据存储系统是待进行图像数据操作的数据存储系统;利用所述目标操作语句,在所述目标数据存储系统中进行图像数据操作;其中,所述利用所述目标操作语句,在所述目标数据存储系统中进行图像数据操作,包括以下任一项:在所述目标数据存储系统包括关系型数据存储系统的情况下,利用所述目标操作语句,通过sqlalchemy和/或预先设置的ruleng在所述目标数据存储系统中进行图像数据操作;在所述目标数据存储系统包括非关系型数据存储系统的情况下,利用所述目标操作语句,通过py-elesticsearch在所述目标数据存储系统中进行图像数据操作;在所述目标数据存储系统包括云数据存储系统的情况下,利用所述目标操作语句,通过duckdb+pyarrow在所述目标数据存储系统中进行图像数据操作;在所述目标数据存储系统中的待操作文件包括parquet格式的文件的情况下,利用所述目标操作语句,在所述目标数据存储系统中使用duckdb+pyarrow对所述待操作文件进行图像数据操作;在所述目标数据存储系统中的待操作文件包括逗号分隔值csv格式的文件和/或zip格式的文件的情况下,在所述目标数据存储系统中使用pandas的read_csv接口对所述待操作文件进行图像数据操作。2.根据权利要求1所述的基于数据存储系统的图像数据操作方法,其特征在于,在所述利用所述目标操作语句,在所述目标数据存储系统中进行图像数据操作之后,所述方法还包括:获取所述目标数据存储系统返回的操作结果;基于预先设置的数据库对象的集合schema,将所述操作结果转换成目标格式的目标图像数据;其中,schema用于对所述操作结果的字段类型进行转换。3.根据权利要求2所述的基于数据存储系统的图像数据操作方法,其特征在于,所述目标格式包括pandas dataframe格式。4.根据权利要求1至3任一项所述的基于数据存储系统的图像数据操作方法,其特征在于,所述初始操作语句采用结构化查询语言sql。5.根据权利要求1至3任一项所述的基于数据存储系统的图像数据操作方法,其特征在于,所述初始操作语句采用预先设置的ruleng语言。6.一种基于数据存储系统的图像数据操作装置,其特征在于,包括:解析模块,用于在检测到用户输入的初始操作语句的情况下,解析所述初始操作语句,得到所述初始操作语句中的至少一个关键元素;填充模块,用于将所述至少一个关键元素填充到预先设置的与目标数据存储系统对应
的操作语句模板中,得到所述目标数据存储系统对应的目标操作语句;其中,所述目标数据存储系统是待进行图像数据操作的数据存储系统;操作模块,用于利用所述目标操作语句,在所述目标数据存储系统中进行图像数据操作;所述操作模块具体用于执行以下任一项操作:在所述目标数据存储系统包括关系型数据存储系统的情况下,利用所述目标操作语句,通过sqlalchemy和/或预先设置的ruleng在所述目标数据存储系统中进行图像数据操作;在所述目标数据存储系统包括非关系型数据存储系统的情况下,利用所述目标操作语句,通过py-elesticsearch在所述目标数据存储系统中进行图像数据操作;在所述目标数据存储系统包括云数据存储系统的情况下,利用所述目标操作语句,通过duckdb+pyarrow在所述目标数据存储系统中进行图像数据操作;在所述目标数据存储系统中的待操作文件包括parquet格式的文件的情况下,利用所述目标操作语句,在所述目标数据存储系统中使用duckdb+pyarrow对所述待操作文件进行图像数据操作;在所述目标数据存储系统中的待操作文件包括逗号分隔值csv格式的文件和/或zip格式的文件的情况下,在所述目标数据存储系统中使用pandas的read_csv接口对所述待操作文件进行图像数据操作。7.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5任一项所述基于数据存储系统的图像数据操作方法。8.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述基于数据存储系统的图像数据操作方法。
技术总结
本发明提供一种基于数据存储系统的图像数据操作方法、装置及介质,涉及计算机技术领域,方法包括:在检测到用户输入的初始操作语句的情况下,解析初始操作语句,得到初始操作语句中的至少一个关键元素;将至少一个关键元素填充到预先设置的与目标数据存储系统对应的操作语句模板中,得到目标数据存储系统对应的目标操作语句;利用目标操作语句,在目标数据存储系统中进行图像数据操作。本发明实施例将初始操作语句转换为与任一目标数据存储系统对应的目标操作语句,用户仅需要掌握初始操作语句的数据格式即可,无需对不同的数据存储系统操作都有了解,使用门槛低,可以有效提高图像数据操作的效率、复用性和灵活性。复用性和灵活性。复用性和灵活性。
技术研发人员:伊永鹏 严朝豪 徐龙光 孙凯 宋涛 薛野
受保护的技术使用者:北京志翔科技股份有限公司
技术研发日:2023.03.02
技术公布日:2023/7/22
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种钢板计数系统、方法及存储介质与流程 下一篇:改良性膨胀土及其制备方法
