数据存储装置的制作方法

文档序号:23651809发布日期:2021-01-15 13:48阅读:68来源:国知局
本发明实施例涉及通信领域,具体而言,涉及一种数据存储装置。
背景技术
::目前大部分数据存储在kafka,rabbitmq,es,csv文件,或者mysql等数据源中。大规模并行处理器(massivelyparallelprocessor,简称为mpp)数据库作为数据仓库的用途,用户需要将kafka,es等数据需要导入到mpp数据库中,并且利用mpp数据库进行统一查询以及更新操作等。但现有的mpp数据库导入方案,数据导入性能较差,与第三方的耦合性也比较差。针对上述技术问题,相关技术中尚未提出有效的解决方案。技术实现要素:本发明实施例提供了一种数据存储装置,以至少解决相关技术中数据存储的问题。根据本发明的一个实施例,提供了一种数据存储装置,包括:外部表模块,与外部数据源模块连接,用于从上述外部数据源模块获取待处理数据,还用于对上述待处理数据执行数据分布操作,以得到目标数据;缓存单元,与上述外部表模块连接,用于缓存上述目标数据;数据库,与上述缓存单元连接,用于从上述缓存单元中获取上述目标数据,并存储上述目标数据。根据本发明的另一个实施例,提供了一种数据存储方法,包括:从外部数据源模块处获取待处理数据;对上述待处理数据执行数据分布操作,得到目标数据;将上述目标数据存储至缓存单元中,以指示数据库从上述缓存单元中获取上述目标数据。根据本发明的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。通过本发明,由于外部表模块与外部数据源模块连接,从外部数据源模块获取待处理数据,并对待处理数据执行数据分布操作,得到目标数据;缓存单元缓存目标数据;数据库从缓存单元中获取目标数据,并存储目标数据。缓存单元与数据库中的计算节点一一对应,计算节点用于从缓存单元中获取目标数据,并将目标数据写入到数据库中。能够将数据库与各种各样的外部数据源进行解耦,不需要为每个外部数据源定义一种外部表插件。并且易于扩展新的数据源,仅在外部表服务中增加新数据源的数据导入方法即可。在拉取数据后,直接按照数据库的分布方式将数据保存到各个缓存中,不需要再进行数据的分布操作,节省了网络的开销。因此,可以解决相关技术中的数据存储问题,达到提高数据存储性能的效果。附图说明图1是根据本发明实施例的整体结构示意图;图2是根据本发明实施例的处理数据的示意图;图3是根据本发明实施例的初始化的示意图;图4是根据本发明实施例的获取数据的示意图;图5是根据本发明实施例的多个外部表服务的架构图;图6是本发明实施例的一种数据存储方法的移动终端的硬件结构框图;图7是根据本发明实施例的数据存储方法的流程图。具体实施方式下文中将参考附图并结合实施例来详细说明本发明的实施例。需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。在本实施例中提供了一种数据存储装置,包括:外部表模块,外部表模块与外部数据源模块连接,用于从外部数据源模块获取待处理数据,并对待处理数据执行数据分布操作,以得到目标数据;缓存单元,缓存单元与外部表模块连接,用于缓存目标数据;数据库,数据库与缓存单元连接,用于从缓存单元中获取目标数据,并存储目标数据;其中,缓存单元与数据库中的计算节点一一对应,计算节点用于从缓存单元中获取目标数据,并将目标数据写入到数据库中。可选地,本实施例包括但不限于应用于大规模并行处理(massivelyparallelprocessor,简称为mpp)的场景中。在该场景中,在数据库非共享集群中,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上,每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服务。非共享数据库集群有完全的可伸缩性、高可用、高性能、优秀的性价比、资源共享等优势。例如greenplum等就属于这种产品。协调节点(master):负责将数据与任务分配给计算节点,并汇总计算节点的计算结果,最终返回结果给用户;计算节点(segment):数据存储和真正执行计算任务的节点;分布键:用于指示数据库表中的数据存储到哪个节点上;外部数据源:kafka,rabbitmq,es,csv文件,mysql等数据源。可选地,本实施例中的整体模块示意图如图1所示,在本实施例中,外部表模块主要用于与外部数据源模块以及计算节点segment模块交互,同时需要对拉取到的待处理数据进行相关的处理,可使得segment拉取到数据后不需要经过必须的数据分布操作。可选地,segment模块是一个独立的数据库,每个segment存储一部分数据,主要用于执行协调节点master节点发送过来的任务。同时在本实施例中用于从外部表模块拉取目标数据,并将目标数据写入到数据库中。可选地,master节点对应着分布式数据库的主节点,主要用于接受客户端连接及提交的结构查询语言(structuredquerylanguage,简称为sql)请求,进行词法语法解析以及生成执行计划树,并将任务发送到各个segment节点进行查询或者数据导入导出,同时master负责管理segment节点,并且用于汇聚最终的返回结果。可选地,外部数据源模块,对应着外部数据的存储,包括各种各样的数据源,比如:kafka,rabbitmq,es,mysql,csv文件等。通过本发明,由于外部表模块与外部数据源模块连接,从外部数据源模块获取待处理数据,并对待处理数据执行数据分布操作,得到目标数据;缓存单元缓存目标数据;数据库从缓存单元中获取目标数据,并存储目标数据。缓存单元与数据库中的计算节点一一对应,计算节点用于从缓存单元中获取目标数据,并将目标数据写入到数据库中。能够将数据库与各种各样的外部数据源进行解耦,不需要为每个外部数据源定义一种外部表插件。并且易于扩展新的数据源,仅在外部表服务中增加新数据源的数据导入方法即可。在拉取数据后,直接按照数据库的分布方式将数据保存到各个缓存中,不需要再进行数据的分布操作,节省了网络的开销。因此,可以解决相关技术中的数据存储问题,达到提高数据存储性能的效果。在一个示例性实施例中,上述装置还包括:应用控制模块,应用控制模块与外部表模块连接,用于配置外部表模块,其中,配置外部表模块的配置参数包括以下至少之一:服务协议,ip地址、端口号、数据访问参数,分布函数,分布键。可选地,在本实施例中,配置外部表模块的方法包括:createreadableexternaltabler_extserver(idint,dev_idtext)location(extprotocol://172.0.0.1:38900/key?exttype=’kafka'&&extip=’172.10.10.2’&&extport=9092&&partitionkey=’id’&&hashfunc=’funca’)。其中,location中的配置:extprotocol为外部表服务的协议,后面带上mpp数据库需要访问外部表服务的ip地址和端口号,key后面需要带上外部表服务访问外部数据源需要的一些参数,不同类型的数据源参数可能不一样,例子中包括了外部数据源类型为kafka,访问kafka还需要ip地址和端口号等。同时由于外部表服务需要知道导入表的分布键,以及分布函数,因此这两个信息也需要通过location信息传到外部表服务中。在一个示例性实施例中,上述装置还包括:应用控制模块,应用控制模块与外部表模块连接,用于初始化外部表模块,其中,应用控制模块用于通过执行预设查询语句初始化外部表模块。可选地,在本实施例中,如图3所示,应用控制模块首先需要执行一个初始化外部表模块与外部数据源模块连接的sql语句,该语句可以通过一个自定义的数据库函数执行,master节点进行解析处理后,将请求发送到外部表模块,外部表模块收到请求后,解析连接外部数据源模块需要的一些参数,并且调用相关的接口连接外部数据源模块。并且保存传入的分布键和hash分布函数。外部表模块建立与外部数据源模块连接的sql语句为:selectinit_extserver(r_extserver)。在一个示例性实施例中,外部表模块,还用于从数据库中的协调节点处接收数据获取请求,并用于基于数据获取请求从外部数据源模块获取待处理数据,其中,协调节点用于响应用户的数据请求;外部表模块,还用于利用哈希函数对待处理数据执行数据分布操作,以得到目标数据(如图2所示)。可选地,如图4所示,应用控制模块发送导入数据的sql命令,该sql语句为insertintotableselect*fromr_extserver,master接收到导入数据的请求后,生成执行计划,并将导入数据的任务发送给各个segment节点,segment接收到请求后发送消息到外部表模块,并等待从对应的buffer中获取数据。可选地,外部表模块接收到拉取数据的请求后,调用相关接口从外部数据源模块进行拉取数据操作,并且对待处理数据进行处理。可选地,本实施例根据创建外部表模块时传入的分布字段进行hash操作,该hash函数需要跟数据库的hash分布函数保持一致,由初始化外部表模块时传递到外部表模块,同时buckets的个数需要跟segment的个数保持一致,使得每个segment对应其中的一个buffer。外部表模块对数据进行hash操作后,将数据保存到对应的buffer中,同时segment从对应的buffer获取数据并保存到数据库中,当buffer中的数据写满后,暂停数据的写入。由于segment获取到的数据已经进行了分布处理,从而不再需要经过master节点进行数据分布操作。可选地,上述外部表模块只有一个,为了提高并发导入性能,也支持多个外部表模块进入导入数据。多个外部表服务的架构如图5所示。需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。可选地,本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图6是本发明实施例的一种数据存储方法的移动终端的硬件结构框图。如图6所示,移动终端可以包括一个或多个(图6中仅示出一个)处理器602(处理器602可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器604,其中,上述移动终端还可以包括用于通信功能的传输设备606以及输入输出设备608。本领域普通技术人员可以理解,图6所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图6中所示更多或者更少的组件,或者具有与图6所示不同的配置。存储器604可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的数据存储方法对应的计算机程序,处理器602通过运行存储在存储器604内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器604可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器604可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。传输装置606用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输装置606包括一个网络适配器(networkinterfacecontroller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置606可以为射频(radiofrequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。在本实施例中提供了一种数据存储方法,图7是根据本发明实施例的数据存储方法的流程图,如图7所示,该流程包括如下步骤:步骤s702,从外部数据源模块处获取待处理数据;步骤s704,对待处理数据执行数据分布操作,得到目标数据;步骤s706,将目标数据存储至缓存单元中,以指示数据库从缓存单元中获取目标数据。其中,缓存单元与数据库中的计算节点一一对应,计算节点用于从缓存单元中获取目标数据,并将目标数据写入到数据库中。其中,上述步骤的执行主体可以为终端等,但不限于此。通过上述步骤,由于外部表模块与外部数据源模块连接,从外部数据源模块获取待处理数据,并对待处理数据执行数据分布操作,得到目标数据;缓存单元缓存目标数据;数据库从缓存单元中获取目标数据,并存储目标数据。缓存单元与数据库中的计算节点一一对应,计算节点用于从缓存单元中获取目标数据,并将目标数据写入到数据库中。能够将数据库与各种各样的外部数据源进行解耦,不需要为每个外部数据源定义一种外部表插件。并且易于扩展新的数据源,仅在外部表服务中增加新数据源的数据导入方法即可。在拉取数据后,直接按照数据库的分布方式将数据保存到各个缓存中,不需要再进行数据的分布操作,节省了网络的开销。因此,可以解决相关技术中的数据存储问题,达到提高数据存储性能的效果。在一个示例性实施例中,从外部数据源模块处获取待处理数据,包括:s1,从数据库中的协调节点处接收数据获取请求;s2,基于数据获取请求从外部数据源模块获取待处理数据,其中,协调节点用于响应用户的数据请求。在一个示例性实施例中,对待处理数据执行数据分布操作,得到目标数据,包括:利用哈希函数对待处理数据执行数据分布操作,以得到目标数据。在一个示例性实施例中,从外部数据源模块处获取待处理数据之前,方法还包括:接收应用控制模块的初始化配置,其中,配置参数包括以下至少之一:服务协议,ip地址、端口号、数据访问参数,分布函数,分布键。综上所述,本实施例利用外部表模块用于连接数据库与外部数据源,将数据库与外部数据源进行解耦。并对导入的数据按照数据hash分布的方式进行处理,segment读取数据后,不再需要进行数据的重分布操作。此外,在数据入数据库之前,就可按照自定义的规则进行处理,例如以某个字段进行随机化处理,以某个字段进行分布等,可以减少在数据存储到数据库中,需要再进行处理的开销。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁盘、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ram)、移动硬盘、磁盘或者光盘等各种可以存储计算机程序的介质。本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1