分布式数据访问方法、设备及存储介质转让专利

申请号 : CN202210776486.2

文献号 : CN114840608B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张延峰李秀金王晖

申请人 : 深圳市茗格科技有限公司

摘要 :

本申请公开了一种分布式数据访问方法、设备及存储介质,该方法包括:调用预设数据访问组件接收业务系统发送的数据访问请求,根据所述数据访问请求判断是否需要生成数据路由信息;若需要生成数据路由信息,则根据生成的数据路由信息和所述数据访问请求访问对应的存储空间,得到访问结果,所述存储空间至少包括存储数据库和分布式缓存中的一种;对所述访问结果进行加工,得到最终访问结果,将所述最终访问结果发送至所述业务系统。本申请通过预设数据访问组件在业务系统和数据存储的中间环节进行数据路由和结果加工,实现了提升数据访问效率的技术效果。

权利要求 :

1.一种分布式数据访问方法,其特征在于,所述分布式数据访问方法包括以下步骤:调用预设数据访问组件接收业务系统发送的数据访问请求,根据所述数据访问请求判断是否需要生成数据路由信息,其中,所述数据访问请求中包含数据类型标签,所述预设数据访问组件中包含预设数据仓库工具;

若需要生成数据路由信息,则根据生成的数据路由信息和所述数据访问请求访问对应的存储空间,得到访问结果,所述存储空间至少包括存储数据库和分布式缓存中的一种;

对所述访问结果进行加工,得到最终访问结果,将所述最终访问结果发送至所述业务系统;

其中,所述根据所述数据访问请求判断是否需要生成数据路由信息的步骤包括:获取所述数据访问请求中的待访问数据;

若所述待访问数据为结构化数据,则判定需要生成数据路由信息;

若所述待访问数据为非结构化数据,则判定不需要生成数据路由信息;

其中,在所述若所述待访问数据为非结构化数据,则判定不需要生成数据路由信息的步骤之后,还包括:通过预设数据仓库工具将所述数据访问请求转化为映射任务;

根据所述映射任务查询预设分布式存储系统中的目标非结构化数据。

2.如权利要求1所述的分布式数据访问方法,其特征在于,在所述调用预设数据访问组件接收业务系统发送的数据访问请求,根据所述数据访问请求判断是否需要生成数据路由信息的步骤之前,还包括:接收业务系统发送的数据存储请求,根据所述数据存储请求判断是否对待存储数据进行拆分存储;

若判定对所述待存储数据进行拆分存储,则根据预设分片规则对所述待存储数据进行拆分和分库分表存储。

3.如权利要求2所述的分布式数据访问方法,其特征在于,所述根据预设分片规则对所述待存储数据进行拆分和分库分表存储的步骤包括:根据所述预设分片规则对所述待存储数据进行拆分,确定所述待存储数据的数据标识,将所述数据标识作为对所述待存储数据进行拆分的切分键;

根据所述切分键和预设数据库集群中的待选数据库数量确定目标存储数据库;

根据所述切分键和所述目标存储数据库中待选数据表的数量确定目标存储数据表,将拆分后的待存储数据存储至所述目标存储数据表。

4.如权利要求3所述的分布式数据访问方法,其特征在于,所述根据生成的数据路由信息和所述数据访问请求访问对应的存储空间的步骤包括:根据所述数据路由信息确定所述存储空间的地址;

获取所述数据访问请求中的业务类型信息,根据所述业务类型信息确定所述存储空间的访问接口;

通过所述访问接口访问所述存储空间。

5.如权利要求4所述的分布式数据访问方法,其特征在于,所述对所述访问结果进行加工,得到最终访问结果的步骤包括:获取所述访问接口传输的加工参数;

根据所述加工参数对所述访问结果进行加工,将加工后的访问结果作为所述最终访问结果,其中,所述加工参数至少包括条件查询方式、聚合函数、分页方式和排序方式中的一项。

6.如权利要求1‑5任一项所述的分布式数据访问方法,其特征在于,所述分布式数据访问方法还包括:确定所述存储空间在预设时间段内的访问次数;

当所述访问次数超过预设访问次数阈值时,将所述存储空间内的业务数据作为长久缓存数据保存。

7.一种电子设备,其特征在于,所述电子设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的分布式数据访问程序,所述分布式数据访问程序配置为实现如权利要求1至6中任一项所述的分布式数据访问方法的步骤。

8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有分布式数据访问程序,所述分布式数据访问程序被处理器执行时实现如权利要求1至6中任一项所述的分布式数据访问方法的步骤。

说明书 :

分布式数据访问方法、设备及存储介质

技术领域

[0001] 本申请涉及金融科技领域,尤其涉及一种分布式数据访问方法、设备及存储介质。

背景技术

[0002] 近年来,互联网正在革命性地改变着传统金融的面貌。互联网“开放、平等、协作、分享”的精神正在对传统金融业态渗透,互联网与金融两个行业都感受到了巨大变化。一方面金融机构主动利用互联网平台改造传统业务模式,另一方面互联网公司依赖技术和平台开始渗透到金融领域。金融参与者通过互联网有了更有效的直接接触,使得传统金融业务的透明度更高,中间成本更低,方式上更为便捷。
[0003] 在实际金融业务场景中,对于包含超大数据量的数据表关联的交易,数据库的查询和访问的压力较大,使得交易性能低下。

发明内容

[0004] 本申请的主要目的在于提供一种分布式数据访问方法、设备及存储介质,旨在解决访问效率低的问题。
[0005] 为实现上述目的,本申请提供一种分布式数据访问方法,该方法包括:
[0006] 调用预设数据访问组件接收业务系统发送的数据访问请求,根据所述数据访问请求判断是否需要生成数据路由信息;
[0007] 若需要生成数据路由信息,则根据生成的数据路由信息和所述数据访问请求访问对应的存储空间,得到访问结果,所述存储空间至少包括存储数据库和分布式缓存中的一种;
[0008] 对所述访问结果进行加工,得到最终访问结果,将所述最终访问结果发送至所述业务系统。
[0009] 可选地,所述根据所述数据访问请求判断是否需要生成数据路由信息的步骤包括:
[0010] 获取所述数据访问请求中待访问数据;
[0011] 若所述待访问数据为结构化数据,则判定需要生成数据路由信息;
[0012] 若所述待访问数据为非结构化数据,则判定不需要生成数据路由信息。
[0013] 可选地,在所述若所述待访问数据为非结构化数据,则判定不需要生成数据路由信息的步骤之后,还包括:
[0014] 通过预设数据仓库工具将所述数据访问请求转化为映射任务;
[0015] 根据所述映射任务查询预设分布式存储系统中的目标非结构化数据。
[0016] 可选地,在所述接收业务系统发送的数据访问请求,根据所述数据访问请求判断是否需要生成数据路由信息的步骤之前,还包括:
[0017] 接收业务系统发送的数据存储请求,根据所述数据存储请求判断是否对待存储数据进行拆分存储;
[0018] 若判定对所述待存储数据进行拆分存储,则根据预设分片规则对所述待存储数据进行拆分和分库分表存储。
[0019] 可选地,所述根据预设分片规则对所述待存储数据进行拆分和分库分表存储的步骤包括:
[0020] 根据所述预设分片规则对所述待存储数据进行拆分,确定所述待存储数据的数据标识,将所述数据标识作为对所述待存储数据进行拆分的切分键;
[0021] 根据所述切分键和预设数据库集群中的待选数据库数量确定目标存储数据库;
[0022] 根据所述切分键和所述目标存储数据库中待选数据表的数量确定目标存储数据表,将拆分后的待存储数据存储至所述目标存储数据表。
[0023] 可选地,所述根据生成的数据路由信息和所述数据访问请求访问对应的存储空间的步骤包括:
[0024] 根据所述数据路由信息确定所述存储空间的地址;
[0025] 获取所述数据访问请求中的业务类型信息,根据所述业务类型信息确定所述存储空间的访问接口;
[0026] 通过所述访问接口访问所述存储空间。
[0027] 可选地,所述对所述访问结果进行加工,得到最终访问结果的步骤包括:
[0028] 获取所述访问接口传输的加工参数;
[0029] 根据所述加工参数对所述访问结果进行加工,将加工后的访问结果作为所述最终访问结果,其中,所述加工参数至少包括条件查询方式、聚合函数、分页方式和排序方式中的一项。
[0030] 可选地,所述分布式数据访问方法还包括:
[0031] 确定所述存储空间在预设时间段内的访问次数;
[0032] 当所述访问次数超过预设访问次数阈值时,将所述存储空间内的业务数据作为长久缓存数据保存。
[0033] 此外,为实现上述目的,本申请还提供一种分布式数据访问装置,所述分布式数据访问装置包括:
[0034] 接收模块,用于调用预设数据访问组件接收业务系统发送的数据访问请求,根据所述数据访问请求判断是否生成数据路由信息;
[0035] 访问模块,用于若生成数据路由信息,则根据所述数据路由信息和所述数据访问请求访问目标访问数据库或目标访问缓存,得到访问结果;
[0036] 加工模块,用于对所述访问结果进行加工,得到最终访问结果,将所述最终访问结果发送至所述业务系统。
[0037] 接收模块,还用于获取所述数据访问请求中待访问数据;
[0038] 若所述待访问数据为结构化数据,则判定需要生成数据路由信息;
[0039] 若所述待访问数据为非结构化数据,则判定不需要生成数据路由信息。
[0040] 分布式数据访问装置还包括查询模块,用于通过预设数据仓库工具将所述数据访问请求转化为映射任务;
[0041] 根据所述映射任务查询预设分布式存储系统中的目标非结构化数据。
[0042] 分布式数据访问装置还包括存储模块,用于收业务系统发送的数据存储请求,根据所述数据存储请求判断是否对待存储数据进行拆分存储;
[0043] 若判定对所述待存储数据进行拆分存储,则根据预设分片规则对所述待存储数据进行拆分和分库分表存储。
[0044] 存储模块,还用于收业务系统发送的数据存储请求,根据所述数据存储请求判断是否对待存储数据进行拆分存储;
[0045] 若判定对所述待存储数据进行拆分存储,则根据预设分片规则对所述待存储数据进行拆分和分库分表存储。
[0046] 访问模块,还用于根据所述数据路由信息确定所述存储空间的地址;
[0047] 获取所述数据访问请求中的业务类型信息,根据所述业务类型信息确定所述存储空间的访问接口;
[0048] 通过所述访问接口访问所述存储空间。
[0049] 加工模块,还用于获取所述访问接口传输的加工参数;
[0050] 根据所述加工参数对所述访问结果进行加工,将加工后的访问结果作为所述最终访问结果,其中,所述加工参数至少包括条件查询方式、聚合函数、分页方式和排序方式中的一项。
[0051] 存储模块,还用于确定所述存储空间在预设时间段内的访问次数;
[0052] 当所述访问次数超过预设访问次数阈值时,将所述存储空间内的业务数据作为长久缓存数据保存。
[0053] 此外,为实现上述目的,本申请还提供一种电子设备,所述电子设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的分布式数据访问程序,所述分布式数据访问程序配置为实现如上文所述的分布式数据访问方法的步骤。
[0054] 此外,为实现上述目的,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有分布式数据访问程序,所述分布式数据访问程序被处理器执行时实现如上文所述的分布式数据访问方法的步骤。
[0055] 本申请调用预设数据访问组件接收业务系统发送的数据访问请求,根据所述数据访问请求判断是否需要生成数据路由信息;若需要生成数据路由信息,则根据生成的数据路由信息和所述数据访问请求访问对应的存储空间,得到访问结果,所述存储空间至少包括存储数据库和分布式缓存中的一种;对所述访问结果进行加工,得到最终访问结果,将所述最终访问结果发送至所述业务系统。由数据访问请求和数据路由信息确定待访问的存储空间,可以适应数据分布式存储的特点,为数据访问提供索引,实现数据访问效率的提升,且在将访问结果返回至业务系统前进行结果加工,使业务系统接收到返回的最终访问结果时可以直接使用,从而提升业务系统的交易性能,在业务系统和数据库之间,通过数据访问组件接收业务系统的数据访问请求,将最终访问结果返回至业务系统,数据访问组件可以起到代理的作用,实现业务系统和数据库的解耦,减少业务系统与数据库的交互次数,提升数据访问效率。

附图说明

[0056] 图1是本申请实施例方案涉及的硬件运行环境的电子设备的结构示意图;
[0057] 图2为本申请分布式数据访问方法第一实施例的流程示意图;
[0058] 图3为本申请分布式数据访问方法第二实施例的流程示意图。
[0059] 本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

[0060] 应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0061] 本申请的主要技术方案是:请求判断是否需要生成数据路由信息;若需要生成数据路由信息,则根据生成的数据路由信息和所述数据访问请求访问对应的存储空间,得到访问结果,所述存储空间至少包括存储数据库和分布式缓存中的一种;对所述访问结果进行加工,得到最终访问结果,将所述最终访问结果发送至所述业务系统。
[0062] 参照图1,图1为本申请实施例方案涉及的硬件运行环境的电子设备结构示意图。
[0063] 如图1所示,该电子设备可以包括:处理器1001,例如中央处理器(Central Processing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(WIreless‑FIdelity,WI‑FI)接口)。存储器1005可以是高速的随机存取存储器(Random Access Memory,RAM)存储器,也可以是稳定的非易失性存储器(Non‑Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
[0064] 本领域技术人员可以理解,图1中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0065] 如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及分布式数据访问程序。
[0066] 在图1所示的电子设备中,网络接口1004主要用于与其他设备进行数据通信;用户接口1003主要用于与用户进行数据交互;本申请电子设备中的处理器1001、存储器1005可以设置在电子设备中,所述电子设备通过处理器1001调用存储器1005中存储的分布式数据访问程序,并执行本申请实施例提供的分布式数据访问方法。
[0067] 本申请实施例提供了一种分布式数据访问方法,参照图2,图2为本申请一种分布式数据访问方法第一实施例的流程示意图。
[0068] 本实施例中,所述分布式数据访问方法包括:
[0069] 步骤S10,调用预设数据访问组件接收业务系统发送的数据访问请求,根据所述数据访问请求判断是否需要生成数据路由信息;
[0070] 预设数据访问组件中包含分布式数据访问层,可以为数据访问提供支持。在业务交易场景中,业务系统在需要查询访问数据库中的某项数据时,向数据访问组件发送数据访问请求,分布式数据访问层根据数据访问请求提供对不同类型数据的访问支持。分布式数据访问层还可以提供对结果加工、事务控制、数据路由、分库分表、数据缓存和数据扩容等数据处理过程的支持。预设数据访问组件在业务系统和数据存储的中间环节进行数据处理,对系统开发人员来说,数据处理过程是透明的。
[0071] 数据访问请求中可以包含数据类型标签,预设数据访问组件根据数据类型标签可以确定待访问数据的数据类型,从而根据数据类型判断是否需要生成数据路由信息。
[0072] 作为一种示例,根据所述数据访问请求判断是否需要生成数据路由信息的步骤可以包括:
[0073] 步骤A10,获取所述数据访问请求中待访问数据;
[0074] 步骤A20,若所述待访问数据为结构化数据,则判定需要生成数据路由信息;
[0075] 步骤A30,若所述待访问数据为非结构化数据,则判定不需要生成数据路由信息。
[0076] 金融业务系统中生成和存储的数据可以分为不同的数据类型。结构化数据是由二维表结构来逻辑表达和实现的数据,严格地遵循数据格式与长度规范,可使用关系型数据库对其进行存储。可供使用的关系型数据库有Oracle、DB2、MySQL、Microsoft SQL Server、Microsoft Access等。可以理解的是,业务系统中的数据是海量的,可以通过分布式存储的方式对数据进行存储和管理。在分布式存储的情况下,数据库数量为多个,每个数据库中的数据表也可能有多个,可以将数据路由信息作为访问数据库中结构化数据的索引。
[0077] 非结构化数据是数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑表来表现的数据。在本实施例中,非结构化数据可以为系统日志、文档、图片等数据。这些非结构化数据可以存储在分布式存储系统中。
[0078] 获取待访问数据之后,通过识别待访问数据的数据类型来判断是否需要生成数据路由信息。适应于不同数据类型的存储方式特点,可以通过生成数据路由信息为提高结构化数据的访问效率。
[0079] 作为一种示例,若所述待访问数据为非结构化数据,则判定不需要生成数据路由信息的步骤之后,还可以包括:
[0080] 步骤A31,通过预设数据仓库工具将所述数据访问请求转化为映射任务;
[0081] 步骤A32,根据所述映射任务查询预设分布式存储系统中的目标非结构化数据。
[0082] 与结构化数据的访问不同,在访问非结构化数据时不需要进行数据路由的步骤。预设数据访问组件中可以包含预设数据仓库工具,比如Hive或Pig。预设分布式存储系统可以为HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)或HBase。Hive是基于Hadoop的数据仓库工具,可以与HDFS配合使用。Pig是分析大型数据集的平台,其基础设施由编译器组成,可以产生Map‑Reduce程序序列。预设数据仓库工具可以将结构化的查询语句转化为Map‑Reduce任务来执行,从而完成目标非结构化数据的查询。
[0083] 在进行非结构化数据的访问之前,本实施例还提供对非结构化数据的存储。数据访问组件在接收到非结构化数据后,也可以通过预设数据仓库工具对非结构化数据进行提取、转化和加载等预处理操作,将预处理后的非结构化数据存储至预设分布式存储系统。
[0084] 本实施例还可以提供对用户行为数据的访问支持。可以理解的是,在访问用户行为数据之前,还可以对用户行为数据进行经过Spark的时时计算后的存储。Spark 是一种与 Hadoop 相似的开源集群计算环境,可以进行大规模数据处理。处理后的用户行为数据也可以存储至预设分布式存储系统,后续基于分布式存储系统提供非结构化数据和用户行为数据的访问支持。
[0085] 步骤S20,若需要生成数据路由信息,则根据生成的数据路由信息和所述数据访问请求访问对应的存储空间,得到访问结果,所述存储空间至少包括存储数据库和分布式缓存中的一种;
[0086] 当数据访问请求中的待访问数据为结构化数据时,将生成数据路由信息。数据路由信息中可以包含对应的存储空间的地址信息。数据访问请求中可以包含访问对应的存储空间的访问方式信息。通过访问方式信息中的访问方式访问地址信息中存储空间的地址,生成访问结果。
[0087] 存储数据库可以为关系型数据库。待访问数据的存储方式可以为分布式存储的方式,关系型数据库和分布式缓存可以配合使用。通过关系型数据库和分布式缓存的配合来访问数据的方式可以为:若首次访问待访问数据,从关系型数据库中读取待访问数据,将待访问数据存储至分布式缓存中,后续直接从分布式缓存中读取待访问数据。
[0088] 作为一种示例,根据生成的数据路由信息和所述数据访问请求访问对应的存储空间,得到访问结果的步骤之前,还可以包括:
[0089] 根据预设路由规则生成关系型数据库的数据路由信息。
[0090] 预设路由规则可以是动态设定的,系统开发人员通过动态设定路由规则可以进行访问控制、应用更新、应用隔离等处理。在业务系统生成数据访问请求时,可以将待访问数据的数据类型和预设路由规则写入数据访问请求中,则数据访问组件在判定待访问数据为结构化数据之后,根据预设路由规则生成数据路由信息,数据路由信息中包含对应的关系型数据库的地址信息,后续可以将数据路由信息作为访问关系型数据库的依据之一。
[0091] 作为一种示例,根据生成的数据路由信息和所述数据访问请求访问对应的存储空间的步骤可以包括:
[0092] 步骤B10,根据所述数据路由信息确定所述存储空间的地址;
[0093] 步骤B20,获取所述数据访问请求中的业务类型信息,根据所述业务类型信息确定所述存储空间的访问接口;
[0094] 步骤B30,通过所述访问接口访问所述存储空间。
[0095] 在业务数据存储时,不仅可以将数据库和分布式缓存配合使用,还可以对大数据量的数据进行分库分表存储。在分库分表之后,由于数据库和数据表数量众多,可以通过数据路由进行数据访问提高访问效率。业务系统交易过程中,业务类型不同,需要访问的数据也不尽相同。
[0096] 根据数据路由信息确定目标访问数据库或目标分布式缓存的存储地址,获取业务类型信息,由于不同业务类型的数据存储在不同的存储空间中,可以根据业务类型信息确定目标访问数据库或目标分布式缓存对应的数据访问接口。优选地,当待访问数据同时存在于目标访问数据库和目标分布式缓存中时,可以优先访问目标分布式缓存。访问分布式缓存相比于访问数据库具有更快的响应速度。数据库和分布式缓存都可以通过API(Application Programming Interface,应用程序接口)的方式提供数据访问接口。
[0097] 步骤S30,对所述访问结果进行加工,得到最终访问结果,将所述最终访问结果发送至所述业务系统。
[0098] 当数据访问请求涉及多个数据库的综合查询时,预设数据访问组件可以在分布式数据访问层对访问结果进行加工,使加工后的最终访问结果可以被业务系统直接使用。
[0099] 作为一种示例,对所述访问结果进行加工,得到最终访问结果的步骤可以包括:
[0100] 步骤C10,获取所述访问接口传输的加工参数;
[0101] 步骤C20,根据所述加工参数对所述访问结果进行加工,将加工后的访问结果作为所述最终访问结果,其中,所述加工参数至少包括条件查询方式、聚合函数、分页方式和排序方式中的一项。
[0102] 数据库或缓存通过访问接口向数据访问组件传输加工参数,数据访问组件可以在分布式数据访问层中根据加工参数对访问结果进行加工。条件查询方式可以分为条件表达式查询、逻辑表达式查询和模糊查询。聚合函数可以对一组值进行计算返回单一值,常见的聚合函数比如AVG (返回指定组中的平均值,空值被忽略)、COUNT (返回指定组中项目的数量)、MAX (返回指定数据的最大值)、 MIN (返回指定数据的最小值)、SUM (返回指定数据的和,只能用于数字列,空值被忽略)。分页查询可以分为逻辑分页和物理分页。通过排序可以将访问结果按照预设顺序进行排列,预设顺序可以为时间顺序,访问结果中数据标识的大小顺序。
[0103] 作为一种示例,分布式数据访问方法还包括:
[0104] 步骤D10,确定所述存储空间在预设时间段内的访问次数;
[0105] 步骤D20,当所述访问次数超过预设访问次数阈值时,将所述存储空间内的业务数据作为长久缓存数据。
[0106] 在某些特殊时间段,会出现业务办理的高峰期,产生热门业务,业务系统在处理热门业务时需要多次访问相同的业务数据,这些业务数据也随之称为热点数据。业务系统通过数据访问组件访问存储空间中的业务数据时,数据访问组件可以根据存储空间的地址标识不同的存储空间,统计存储空间在预设时间段内的访问次数。预设时间段可以通过业务系统进行设置,比如设置为一周或一个月。预设访问次数阈值也可以根据热门业务的办理量进行设置,在访问次数超过预设访问次数阈值时,将存储空间内的业务数据作为长久缓存数据进行保存,以防止热点数据被删除,提高热点数据的访问效率。对于分布式缓存中访问次数极少的业务数据,可以通过定时删除的方式进行处理,节约存储空间容量,后续通过与分布式缓存配合的存储数据库进行访问。
[0107] 在本实施例中,调用预设数据访问组件接收业务系统发送的数据访问请求,根据所述数据访问请求判断是否需要生成数据路由信息;若需要生成数据路由信息,则根据生成的数据路由信息和所述数据访问请求访问对应的存储空间,得到访问结果,所述存储空间至少包括存储数据库和分布式缓存中的一种;对所述访问结果进行加工,得到最终访问结果,将所述最终访问结果发送至所述业务系统。由数据访问请求和数据路由信息确定待访问的存储空间,可以适应数据分布式存储的特点,为数据访问提供索引,实现数据访问效率的提升,且在将访问结果返回至业务系统前进行结果加工,使业务系统接收到返回的最终访问结果时可以直接使用,从而提升业务系统的交易性能,在业务系统和数据库之间,通过数据访问组件接收业务系统的数据访问请求,将最终访问结果返回至业务系统,数据访问组件可以起到代理的作用,实现业务系统和数据库的解耦,减少业务系统与数据库的交互次数,提升数据访问效率。
[0108] 进一步的,在本申请分布式数据存储方法的第二实施例中,参照图3,该方法包括:
[0109] 步骤S11,接收业务系统发送的数据存储请求,根据所述数据存储请求判断是否对待存储数据进行拆分存储;
[0110] 预设数据访问组件不仅可以为业务系统和数据库之间的数据访问提供支持,还可以对业务系统需要存储的大数据量数据进行拆分,将数据分散存储至数据库中,以分担单个数据库的存储和访问压力。
[0111] 数据存储请求中可以携带拆分存储标记,将拆分存储标记与待存储数据关联,当预设数据访问组件识别到拆分存储标记时,判定对接收到的待存储数据进行拆分存储。
[0112] 对于待访问数据进行拆分面临的事务控制问题,预设数据访问组件也可以在分布式数据访问层进行处理。事务处理需要遵循原子性、一致性、隔离性和持久性的原则,在涉及多个数据库的事务处理方面,可以提供基于两阶段提交的分布式事务处理机制。
[0113] 步骤S12,若判定对所述待存储数据进行拆分存储,则根据预设分片规则对所述待存储数据进行拆分和分库分表存储。
[0114] 分库的方式可以分为垂直分库和水平分库,分表的方式可以分为垂直分表和水平分表。垂直分库是指按照业务将表进行分类,分布到不同的数据库上面,可以解决业务层面的耦合。水平分库是把同一表的数据按拆分规则拆到不同的数据库中,每个库可以放在不同的服务器上,可以解决单库存储量和性能瓶颈。
[0115] 作为一种示例,根据预设分片规则对所述待存储数据进行拆分和分库分表存储的步骤可以包括:
[0116] 步骤E10,根据所述预设分片规则对所述待存储数据进行拆分,确定所述待存储数据的数据标识,将所述数据标识作为对所述待存储数据进行拆分的切分键;
[0117] 步骤E20,根据所述切分键和预设数据库集群中的待选数据库数量确定目标存储数据库;
[0118] 步骤E30,根据所述切分键和所述目标存储数据库中待选数据表的数量确定目标存储数据表,将拆分后的待存储数据存储至所述目标存储数据表。
[0119] 以对待存储数据进行水平切分为例,预设分片规则可以为哈希分片。哈希分片的方法可以分为哈希取模、虚拟桶和一致性哈希。在哈希取模方式中,可以通过哈希函数实现数据分片。待存储数据的数据标识可以有多个,选取不同的数据标识作为切分键(ShardingKey)可以实现不同的水平切分效果。
[0120] 待存储数据作为切分键的数据标识可以包含在数据存储请求中,通过识别数据标识的标签信息确定数据标识。按照数据标识的数值对待存储数据进行拆分。根据哈希分片中的哈希取模方式确定拆分后的待存储数据的存储地址,可以先将待选数据库和每个待选数据库中的待选数据表进行编号,根据ShardingKey对数据标识的数值取模待选数据库数量,得到目标存储数据库地址,再对数据标识的数据目标存储数据库中的待选数据表数量,得到目标存储数据表地址,将该数据标识对应的拆分后的待存储数据存储至目标存储数据库中的目标存储数据表中。
[0121] 确定目标存储数据库和目标存储数据表的过程比如:先对预设数据库集群中的所有待选数据库和待选数据表进行编号,待选数据库的数量为4,编号为db[0,3],每个待选数据库中待选数据表的数量为4,编号为table[0,3],使用待存储数据的order id作为ShardingKey,那么对于order id=100的数据,先对order id进行取模路由,db_index=100%4=0,将会先路由至序号为0的目标存储数据库,在db[0]数据库中进行取模表路由,table_index=100%4=0,再路由至序号为0的目标存储数据表,最终order id=100的数据将存储至db[0]table[0]的数据表中。
[0122] 在本实施例中,通过预设数据访问组件对重量级数据表的数据进行拆分存储,可以分担单个数据库的存储压力,提升系统整体响应速度。
[0123] 本申请实施例还提供一种分布式数据访问装置,所述分布式数据访问装置包括:
[0124] 接收模块,用于调用预设数据访问组件接收业务系统发送的数据访问请求,根据所述数据访问请求判断是否生成数据路由信息;
[0125] 访问模块,用于若生成数据路由信息,则根据所述数据路由信息和所述数据访问请求访问目标访问数据库或目标访问缓存,得到访问结果;
[0126] 加工模块,用于对所述访问结果进行加工,得到最终访问结果,将所述最终访问结果发送至所述业务系统。
[0127] 接收模块,还用于:
[0128] 获取所述数据访问请求中待访问数据;
[0129] 若所述待访问数据为结构化数据,则判定需要生成数据路由信息;
[0130] 若所述待访问数据为非结构化数据,则判定不需要生成数据路由信息。
[0131] 分布式数据访问装置还包括查询模块,用于:
[0132] 通过预设数据仓库工具将所述数据访问请求转化为映射任务;
[0133] 根据所述映射任务查询预设分布式存储系统中的目标非结构化数据。
[0134] 分布式数据访问装置还包括存储模块,用于:
[0135] 收业务系统发送的数据存储请求,根据所述数据存储请求判断是否对待存储数据进行拆分存储;
[0136] 若判定对所述待存储数据进行拆分存储,则根据预设分片规则对所述待存储数据进行拆分和分库分表存储。
[0137] 存储模块,还用于:
[0138] 收业务系统发送的数据存储请求,根据所述数据存储请求判断是否对待存储数据进行拆分存储;
[0139] 若判定对所述待存储数据进行拆分存储,则根据预设分片规则对所述待存储数据进行拆分和分库分表存储。
[0140] 访问模块,还用于:
[0141] 根据所述数据路由信息确定所述存储空间的地址;
[0142] 获取所述数据访问请求中的业务类型信息,根据所述业务类型信息确定所述存储空间的访问接口;
[0143] 通过所述访问接口访问所述存储空间。
[0144] 加工模块,还用于:
[0145] 获取所述访问接口传输的加工参数;
[0146] 根据所述加工参数对所述访问结果进行加工,将加工后的访问结果作为所述最终访问结果,其中,所述加工参数至少包括条件查询方式、聚合函数、分页方式和排序方式中的一项。
[0147] 存储模块,还用于:
[0148] 确定所述存储空间在预设时间段内的访问次数;
[0149] 当所述访问次数超过预设访问次数阈值时,将所述存储空间内的业务数据作为长久缓存数据保存。
[0150] 本申请实施例还提供一种电子设备,所述电子设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的分布式数据访问程序,所述分布式数据访问程序配置为实现如上文所述的分布式数据访问方法的步骤。本申请电子设备的具体实施方式参照上述分布式数据访问方法各实施例,在此不再赘述。
[0151] 本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有分布式数据访问程序,所述分布式数据访问程序被处理器执行时实现如上文所述的分布式数据访问方法的步骤。本申请计算机可读存储介质的具体实施方式参照上述分布式数据访问方法各实施例,在此不再赘述。
[0152] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0153] 上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
[0154] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
[0155] 以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。