一种多源数据统一SQL提供数据服务的方法与流程

文档序号:20017078发布日期:2020-02-25 10:45阅读:247来源:国知局
一种多源数据统一SQL提供数据服务的方法与流程

本发明属于数据治理、数据中台领域,涉及一种多源数据统一sql提供数据的方法。



背景技术:

当前社会,数据量爆炸式增长,针对不同的系统与业务需求,也诞生了很多种不同的数据库,包括关系数据库、文档数据库、检索数据库、列式数据库和图数据库等。不同数据库因设计方式不同,其数据内容格式相互独立,无法供云应用平台(saas)有效整合利用,使得数据中台只能提供有限的数据服务,而且当前众多数据库也存在着一定的学习使用成本,对于大部分程序员显然是难以全面掌握的。

数据标准定义自由度大,导致了数据混乱,难以利用,冗余度高,数据还有可能存在版本的迭代。缺乏可视化页面系统进行统一的管理。

不同数据库采用不同的引擎,对字段、格式、命名方法也千差万别,无法跨平台使用数据,所能提供的数据服务存在局限性。通过一种sql语句可以拿到不同数据库的数据或将流式数据存储到合适的数据库中,是数据治理中的紧迫需求。

现有的跨平台查询方法往往存在跨平台有限,查询效率低下,易用性差,开源的跨平台查询方式已经放弃维护等诸多问题。

传统的数据架构采用分散式建设,运行过程中产生的数据质量低下,难以形成数据资产。随着大数据技术的发展,运用开放式的微服务架构,实现自动化部署、集中部署,并通过kubernetes集成微服务平台更适应企业的需求。而这其中的当务之急,就是规范数据中台提供数据接口的方式,统一sql形成数据服务是解决数据接口的最优选择。



技术实现要素:

针对目前多源数据存在新建数据存储难以记录,已存在数据记录无法统一管理,数据无法资产化,传统跨平台数据获取方式可跨平台有限且效率低下等诸多问题。本发明提供一种多源数据统一sql提供数据服务的方法,解决保持其他系统独立性的情况下将外部数据和系统融合分析的问题。可以通过数据服务直接获取多种不同数据源的数据,且充分利用多源数据库的性能,保证数据服务的执行效率。

为实现上述发明的目的,本发明设计了一种多源数据统一sql提供数据服务的方法,其中包括数据标准化处理的方法;数据标签管理方法;有限制的多源数据统一sql查询防止多源数据不兼容;保证数据服务效率的拉取数据方法;已存在外部数据存储接入系统并提供服务的方法,具体实现过程如下。

步骤1,首先进行数据标准化处理:对数据元标准管理和对数据模型标准管理,分别加入版本控制单元,形成标准化的数据元和数据模型,并通过独立于系统的数据标签管理对数据元和数据模型进行定位。

步骤2:数据标签管理方法:给每一个数据元和数据模型,加入标签,用以描述与定位模型,所述的数据标签管理是通过行业与标准分类细化标签,形成树状结构,标签通过系统创建或是数据流转写入产生,采用严格的继承结构,加入数据元和数据模型项相同和相似判断,所述的数据元和数据模型的创建基于标签树的末端叶子节点,即子标签为空,所以数据元和数据模型有且至少有一个标签,而每一个末端叶子节点有且只有一种相同定义的数据元或数据类型;数据流转写入将数据标注标签、用户画像标签、统计加工标签和模型挖掘标签加入标签树,保证无论内部还是外部数据元和数据模型都由至少一个标签,由系统统一管理。

步骤3:然后进行有限制的多源数据统一sql查询,继承于关系数据库的sql,在其中加入限制(例如,在复杂嵌套的情况下,映射数组类型,如果数组里每个元素又是复合文档,而复合文档又非json类型,在不提前加以转换的情况下,统一sql向外部数据库的映射将无法建立;又如父子文档,本发明采用的表设计是范式结构,如果没有预设置关联字段通过join来表达父子关联关系,就无法支持父子层次归属,所以加以限制),用来防止多源数据在映射中可能存在不兼容的问题。同时还针对各种主流数据库数据映射方式,进行自动化的数据格式获取。

步骤4:进一步地,为保证数据服务效率的拉取数据,采用聚合下推的方式获取数据服务需要的数据,创建外部表与外部数据库实体表映射关系,实现本地对外部数据库数据的访问,将所需要进行的运算下沉到外部数据库中进行,只将运算结果进行返回,充分利用外部数据库的性能。

步骤5:最后,根据统一sql在本地服务器直接生成restful风格的接口提供数据服务,供客户端使用。

进一步还包括将已存在的外部数据存储接入本系统并提供服务,外部数据库数据资产化,扫描分析外部数据库数据架构,提取数据模型和字段信息,自动化生成字段格式,结合数据标签系统,将外部数据库数据架构记录在数据元和数据模型中,再通过多源数据统一sql的方式生成数据服务。

其中,步骤1中所述的数据元标准管理:定义一种约定大于配置思想的命名规范,通过将不同行业和标准分类的数据元名称,放入不同的schema当中,在创建时确保数据元的唯一性,并同时保存数据元的中文名称、数据类型、数据格式、创建与更新时间等信息;引入版本控制单元,进行数据元标准的版本迭代,版本迭代内容为数据类型,只可做扩展迭代,不能做增限迭代,增限情况将重新根据命名规范生成新的数据元以满足系统要求;步骤1中数据模型标准管理:数据模型严格通过数据元组合生成,通过命名规范确保数据模型的唯一性,并同时保存数据模型的中文名称、描述、创建与更新时间等信息。版本控制单元同时控制数据模型的迭代,数据模型中数据元版本迭代将导致x.y版本类型y+1,而且数据模型可以增加数据元,不能减少数据元,增加数据元,将导致x.y版本x+1。最后将数据模型数据元信息、版本信息和创建修改时间存入特定schema当中。

其中,步骤3中针对各种主流数据库数据映射方式包括外部关系型数据库统一sql操作,将外部关系型数据库的类型多对一的映射到rdm当中;在进行ddl操作的时候,首先针对外部数据库创建外部表服务,然后采用rdm方式创建外部表映射到外部数据库的实体表,外部表的字段名称必须与外部数据库实体表的字段名称一致,外部实体表的字段名称来自于数据模型标准化数据元,所以只需要查schema中的信息,自动生成lsql建表语句创建外部表,包括外部表的表名称和字段名称,这样就可以实现外部表与外部数据库实体表的关联,关联过程会自动检查关联成功与否。或者,只选择外部数据库实体表的部分字段来映射出系统外部表,减少冗余信息,增加外部表的运行效率。外部关系型数据库统一sql操作采用数据类型映射方式dm,针对各种主流数据库数据映射方式是采用一套据库数据类型映射方式dm,采用有限类型扩展转置的方式,数字类型只采用int4与int8,浮点类型采用numeric,字符类型只采用varchar(32)与text,时间类型只采用timestamp等。关系型数据库字段类型为a,外部表创建字段类型为b,这里需要说明,映射并非存储,只是系统对外部数据库的对应关系,这样有效的节约了系统的存储空间。

其中,步骤3中针对各种主流数据库数据映射方式包括外部非关系型数据库统一sql操作:非关系型数据库对字段通常无定义,而使用key-value的形式来存储数据,通过创建数据模型时添加定义value类型并加以保存,添加的类型作为外部表的字段类型,符合dm映射方式。嵌套的文档可以通过外部表对应的列类型设为json类型来对应。下发到非关系型数据库操作执行后,操作即生效,不能使用回滚操作。外部表与外部数据库实体表连接分为四步。第一,创建系统对外部数据库的扩展:具体为关系型数据库对外部数据库的数据架构重构解析,这样,所有外部数据库都可以转化为关系型数据库的架构。第二,创建外部数据库对应服务:用一种sql代理的形式创建外部数据库服务,本地利用服务通过外部表从外部数据库拉取数据,参数为外部数据库的ip和端口。第三,创建本地的查询用户:查询用户对应了外部数据库具有访问数据权限的用户,参数为外部数据库权限用户的账号密码。第四,创建对应外部数据库实体表的外部表:系统自动生成外部表的名称,外部表的字段和字段类型,参数为外部数据库的存储结构名称。

进一步地,多源数据统一sql的外部表信息查看:在特定schema中建立视图,记录外部表的种类,外部数据库的hots、port,外部数据库服务的名称,外部表名,外部表名、对应的数据库名之间的映射关系。

在步骤3聚合函数下推过程中,创建外部表与外部数据库实体表映射关系,实现了本地对外部数据库数据的访问,传统方式是将外部数据库的数据全部拉取到本地,然后进行dml、dql操作,这种做法有以下严重的问题:若仅仅需要运算结果,而不需要数据,却拿到了外部数据库的大量数据,再在本地进行运算,明显是资源浪费,也无法用到特定数据库的优秀性能,失去了统一sql访问异构数据的意义。为解决这个问题,提供了一种将聚合函数下推的特性。将所需要进行的运算下沉到外部数据库中进行,只将运算结果进行返回,这样大大减小了数据的传输量,可以显著提高聚合查询的性能。

步骤5中提供数据服务包括采用有限制的关系型数据库的结构化查询语言,提供两种生成数据服务的方法,分别为配置模式和专家模式:一、配置模式根据已定义的外部表名,获得了外部表的所有字段名和字段类型,这些字段名和字段类型又是数据元中严格定义的,再进行出参和入参的配置,通过这些配置自动生成对应的lsql语句,生成了用户需要的数据服务;二、专家模式提供给dba一种直接编写查询dsql的接口,编写查询dsql时会根据数据元实时展示已编写的入参出参,作为编写dsql的协助。数据服务生成后,内部进行连接测试,测试成功可授权给特定用户使用。

在进行外部数据存储接入系统并提供服务时,需要把外部已存在的数据库数据架构转化为关系型数据库的数据架构,并将其保存在数据模型管理当中,再分解保存在数据元标准管理当中。然后,根据外部关系型数据库统一sql操作和外部非关系型数据库统一sql操作,建立外部表对外部数据库的映射。最后根据多源数据统一sql提供数据服务,通过外部表快速的自定义需要的数据服务。

本发明的有益效果:本发明提供了一种多源数据统一sql提供数据服务的方法,包括数据标签管理、数据元标准管理、数据模型管理、数据实例化管理和数据服务管理。本发明实现了数据的标准化管理,并通过标准化后的sql提供了异构数据的统一crud方法。克服了数据格式、定义混乱,不同能力水平的dba对数据库架构方式不同引起的混乱,不同dsl整合的困难。解决了保持其他系统独立性的情况下外部数据和系统融合分析的问题。实现了多数据系统、多数据来源的数据统一管理,数据层的标准化、资产化和服务化。

本发还提供了有限制的多源数据统一sql查询防止多源数据不兼容问题;保证数据服务效率的拉取数据方法;对于已存在外部数据存储接入系统并提供服务的方法。

附图说明

图1为本发明多源数据统一sql的架构简图。

图2为本发明自动生成数据服务的实现方式说明图。

图3位本发明多源数据统一sql生成查询服务示例系统拓扑图。

具体实施方式

本实施例实现了一种数据标准化处理,通过统一sql自动生成数据服务的方法。参阅图1所示。首先,通过自主开发的数据治理平台对数据标准进行构建,加入数据标签管理,明确数据元定义、数据元格式,再通过自定义选择字段自动生成客户端需求的数据模型,再结合数据元、数据模型版本控制,形成一套独立唯一的数据元、数据模型。然后,客户端根据自己实际的业务需要,将构建的数据模型下沉到外部数据库。最后,根据统一sql在本地服务器直接生成restful风格的接口提供数据服务,供客户端使用。

数据标签管理的具体实施过程为:通过行业与标准分类细化标签,形成树状结构,标签可以通过系统创建或是数据流转写入产生,采用严格的继承结构,加入数据元、数据模型项相同、相似判断,由系统统一管理。数据元、数据模型的创建基于标签树的末端叶子节点,即子标签为空,所以数据元、数据模型有且有至少一个标签,而每一个末端叶子节点有且只有一种相同定义的数据元或数据类型。数据流转写入将数据标注标签、用户画像标签、统计加工标签、模型挖掘标签等加入标签树,保证无论内部还是外部数据元、数据模型都由至少一个标签,供系统管理。

数据元标准管理的具体实施过程为:本发明定义了一种约定大于配置思想的命名规范。通过将不同行业、标准分类的数据元名称,放入不同的schema当中,在创建时确保数据元的唯一性,并同时保存数据元的中文名称、数据类型、数据格式、创建与更新时间等信息。引入版本控制单元,进行数据元标准的版本迭代,版本迭代内容为数据类型,只可做扩展迭代,不能做增限迭代,增限情况将重新根据命名规范生成新的数据元以满足系统要求。

数据模型管理的具体实施过程为:数据模型严格通过数据元组合生成,通过命名规范确保数据模型的唯一性,并同时保存数据模型的中文名称、描述、创建与更新时间等信息。版本控制单元同时控制数据模型的迭代,数据模型中数据元版本迭代将导致x.y版本类型y+1,而且数据模型可以增加数据元,不能减少数据元,增加数据元,将导致x.y版本x+1。最后将数据模型数据元信息、版本信息、创建修改时间存入特定schema当中。

数据模型下沉到外部数据库的具体实施过程为:统一sql的crud目前可以兼容csv、text和json文档格式的文件型数据,postgresql、oracle、mysql、sqlite、sql-server等关系型数据库,mongodb、redis、cassandra等非关系型数据库,neo4j图数据库,elastic-search、hadoop、hive等大数据组件。根据数据的形式和使用需求,将数据存储在适合的数据库中是问题的关键,也会影响到后续提供数据服务的质量。

多源数据统一sql的具体实施过程为:采用有限制的关系型数据库的结构化查询语言,这里称之为lsql(limitedstructurequerylanguage)。关系型数据库、非关系型数据库、图数据库、大数据组件和数据文件,在数据架构上有很大的差别,不可能直接使用关系型数据库的结构化查询语言,会导致统一sql向外部数据库映射数据结构产生混乱,所以加以限制。例如,在复杂嵌套的情况下,映射数组类型,如果数组里每个元素又是复合文档,而复合文档又非json类型,在不提前加以转换的情况下,统一sql向外部数据库的映射将无法建立;又如父子文档,本发明采用的表设计是范式结构,如果没有预设置关联字段通过join来表达父子关联关系,就无法支持父子层次归属。

外部关系型数据库统一sql操作具体实施过程:关系型数据库对字段定义严谨,类型要求精确。本发明提供了一套数据类型映射方式dm,数据类型分为数字类型、字符类型、时间/日期类型、布尔类型、json类型和二进制等类型。将外部关系型数据库的类型多对一的映射到rdm当中。在进行ddl操作的时候,首先针对外部数据库创建外部表服务,然后采用rdm方式创建外部表映射到外部数据库的实体表,外部表的字段名称必须与外部数据库实体表的字段名称一致,外部实体表的字段名称来自于数据模型标准化数据元,所以只需要查schema中的信息,自动生成lsql建表语句创建外部表,包括外部表的表名称和字段名称,这样就可以实现外部表与外部数据库实体表的关联,关联过程会自动检查关联成功与否。这里还可以只选择外部数据库实体表的部分字段来映射出系统外部表,减少冗余信息,增加外部表的运行效率。

dm映射方式具体实施过程:采用有限类型扩展转置的方式,数字类型只采用int4与int8,浮点类型采用numeric,字符类型只采用varchar(32)与text,时间类型只采用timestamp等。关系型数据库字段类型为a,外部表创建字段类型为b,这里需要说明,映射并非存储,只是系统对外部数据库的对应关系,这样有效的节约了系统的存储空间。

外部非关系型数据库统一sql操作具体实施过程:非关系型数据库对字段通常无定义,而使用key-value的形式来存储数据,通过创建数据模型时添加定义value类型并加以保存,添加的类型作为外部表的字段类型,符合dm映射方式。嵌套的文档可以通过外部表对应的列类型设为json类型来对应。下发到非关系型数据库操作执行后,操作即生效,不能使用回滚操作。

外部表与外部数据库实体表连接具体实施过程:参阅图2所示。外部表与外部数据库实体表连接分为四步。第一,创建系统对外部数据库的扩展:具体为关系型数据库对外部数据库的数据架构重构解析,这样,所有外部数据库都可以转化为关系型数据库的架构。第二,创建外部数据库对应服务:用一种sql代理的形式创建外部数据库服务,本地利用服务通过外部表从外部数据库拉取数据,参数为外部数据库的ip和端口。第三,创建本地的查询用户:查询用户对应了外部数据库具有访问数据权限的用户,参数为外部数据库权限用户的账号密码。第四,创建对应外部数据库实体表的外部表:系统自动生成外部表的名称,外部表的字段和字段类型,参数为外部数据库的存储结构名称。

多源数据统一sql的外部表信息查看具体实施过程:在特定schema中建立视图,记录外部表的种类,外部数据库的hots、port,外部数据库服务的名称,外部表名,外部表名、对应的数据库名之间的映射关系。

多源数据统一sql聚合函数下推的具体实施过程:参阅图3所示。创建外部表与外部数据库实体表映射关系,实现了本地对外部数据库数据的访问,传统方式是将外部数据库的数据全部拉取到本地,然后进行dml、dql操作,这种做法有以下严重的问题:若仅仅需要运算结果,而不需要数据,却拿到了外部数据库的大量数据,再在本地进行运算,明显是资源浪费,也无法用到特定数据库的优秀性能,失去了统一sql访问异构数据的意义。为解决这个问题,提供了一种将聚合函数下推的特性。将所需要进行的运算下沉到外部数据库中进行,只将运算结果进行返回,这样大大减小了数据的传输量,可以显著提高聚合查询的性能。有些大数据组件,例如elastic-search,本身在数据量庞大时,查询相对于传统关系型数据库有其自身的优越性,也需要在外部数据库进行查询操作。以上解决了统一sql进行查询操作的效率问题。

多源数据统一sql提供数据服务的具体实施过程:参阅图2所示。数据中台的特点,是根据用户需求快速生成对应的数据服务。有了标准化的数据结构,统一sql提供数据服务采用前文定义的lsql的形式,提供了两种生成数据服务的方法,分别为配置模式和专家模式:一、配置模式根据已定义的外部表名,获得了外部表的所有字段名和字段类型,这些字段名和字段类型又是数据元中严格定义的,再进行出参和入参的配置,通过这些配置自动生成对应的lsql语句,生成了用户需要的数据服务;二、专家模式提供给dba一种直接编写查询dsql的接口,编写查询dsql时会根据数据元实时展示已编写的入参出参,作为编写dsql的协助。数据服务生成后,内部进行连接测试,测试成功可授权给特定用户使用。

外部数据存储接入系统并提供服务的具体实施过程:为了满足各种类型的海量数据存储与管理需求,通过采用分布式存储与关系型数据库存储混合架构,实现多数据异构数据的一体化存储,并在此基础上提供数据服务。所以,需要把外部已存在的数据库数据架构转化为关系型数据库的数据架构,并将其保存在数据模型管理当中,再分解保存在数据元标准管理当中。然后,根据上段“外部关系型数据库统一sql操作具体实施过程”或上段“外部非关系型数据库统一sql操作具体实施过程”,建立外部表对外部数据库的映射。最后根据上端“多源数据统一sql提供数据服务的具体实施过程”,通过外部表可以快速的自定义需要的数据服务。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1