数据库数据的存储方法和装置
技术领域
本申请涉及数据处理领域,具体而言,涉及一种数据库数据的存储方法和装置。
背景技术
现有技术中,构造数据库必须遵循一定的规则,在关系数据库中,这种规则就是范式,所谓范式是指:数据库的设计范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,即满足不同的范式。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、Boyce-Codd范式(BCNF)、第四范式(4NF)和第五范式(5NF)。
其中,在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF),并且第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。为实现区分通常需要为数据库表加上一个列,以存储各个实例的唯一标识,这个唯一属性列被称为主关键字或主键、主码。而对于第三范式(3NF)来说,满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。
现有技术中还有一种数据建模方法就是Kimball维度建模。维度:是多维数据集的结构性特性。它们是事实数据表中用来描述数据的分类的有组织层次结构(或级别)。这些分类和级别描述了一些相似的成员集合,用户将基于这些成员集合进行分析。Kimball维度建模是Kimball最先提出的概念。其最简单的描述就是,按照事实表,维度表来构建数据仓库,数据集市。
在TPB级别的大数据背景下构建一套适用于互联网的数据仓库模型时,一般使用非范式关系的理论在数据仓库中构建出一套对应的模型方法,当前数据仓库使用最多的是3NF范式建模方法论或为近3NF范式建模方法,著名的成熟商用范式模型如:IBMFSDM/Teradate银行数仓模型;或者,使用上述的Kimball维度建模。
使用上述方法时,用于在3NF/近3NF的模型中为了减少冗余去掉非关键字信息,通常会导致数据分散存放在多个表中,业务在使用数据的时候会进行复杂的JOIN操作(连接操作)无形中提高了业务使用数据的门槛并增加了计算复杂度;而维度模型使用的星型模型不能确保数据的唯一性,会导致数据不可用,这些缺点都会导致数据存储过程中处理器处理复杂、处理效率低。
其中,计划行为理论(Theory of Planned Behavior,简称TPB)是由Ajzen(1985)所提出。
针对上述的数据存储处理效率低的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种数据库数据的存储方法和装置,以至少解决数据存储处理效率低的技术问题。
根据本申请实施例的一个方面,提供了一种数据库数据的存储方法,该方法包括:获取业务数据中的多个实体对象和各个实体对象的对象属性信息;基于实体对象和对象属性信息确定各个实体对象所属的数据域,并获取各个实体对象与数据域的逻辑关系;按照逻辑关系在数据库中创建宽表,并将各个实体对象的描述数据存储入对应的宽表。
根据本申请实施例的另一方面,还提供了一种数据库数据的存储装置,该装置包括:获取模块,用于获取业务数据中的多个实体对象和各个实体对象的对象属性信息;处理模块,用于基于实体对象和对象属性信息确定各个实体对象所属的数据域,并获取各个实体对象与数据域的逻辑关系;存储模块,用于按照逻辑关系在数据库中创建宽表,并将各个实体对象的描述数据存储入对应的宽表。
采用上述实施例,可以基于业务数据中实体对象和对象属性信息确定不同的实体对象所属的数据域,并确定各个实体对象和数据域之间的逻辑关系,基于该逻辑关系将业务数据中的实体对象的描述数据存入对应的宽表中。通过上述实施例,使用非范式关系和非维度关系存储实体对象的描述数据,可以保证数据的一致性,通过一个宽表存储数据能在直接降低数据使用门槛的同时,减少业务数据的计算复杂度,从而解决了现有技术中数据存储处理效率低的问题,实现了提高数据存储的数据处理效率和数据存储模型的使用率的效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请实施例的一种数据库数据的存储方法的计算机终端的硬件结构框图;
图2是根据本申请实施例的一种数据库数据的存储方法的流程图;
图3是根据本申请实施例的一种数据库数据的存储方法所使用的数据模型的示意图;
图4是根据本申请实施例的一种数据域的示意图;
图5是本申请实施例的第二种数据库数据的存储方法的流程图;
图6是本申请实施例的第三种数据库数据的存储方法的流程图;
图7是本申请实施例的第四种数据库数据的存储方法的流程图;
图8是本申请实施例的一种数据库数据的存储方法所使用数据模型生成过程的示意图;
图9是本申请实施例的一种数据库数据的存储装置的示意图;
图10是本申请实施例的一种可选的数据库数据的存储装置的示意图;以及
图11是本申请实施例的一种计算机终端应用环境的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本申请实施例,还提供了一种数据库的数据存储方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本申请实施例的一种数据库数据的存储方法的计算机终端的硬件结构框图。如图1所示,计算机终端20可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储应用软件的软件程序以及模块,如本申请实施例中的数据库的数据存储方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据库的数据存储。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端20。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端20的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
在上述运行环境下,本申请提供了如图2所示的数据库的数据存储方法。图2是根据本申请实施例的数据库的数据存储方法的流程图。
如图2所示,该方法可以包括如下步骤:
步骤S202:获取业务数据中的多个实体对象和各个实体对象的对象属性信息。
步骤S204:基于实体对象和对象属性信息确定各个实体对象所属的数据域,并获取各个实体对象与数据域的逻辑关系。
步骤S206:按照逻辑关系在数据库中创建宽表,并将各个实体对象的描述数据存储入对应的宽表。
采用上述实施例,可以基于业务数据中实体对象和对象属性信息确定不同的实体对象所属的数据域,并确定各个实体对象和数据域之间的逻辑关系,基于该逻辑关系将业务数据中的实体对象的描述数据存入对应的宽表中。通过上述实施例,使用非范式关系和非维度关系存储实体对象的描述数据,可以保证数据的一致性,通过一个宽表存储数据能在直接降低数据使用门槛的同时,减少业务数据的计算复杂度,从而解决了现有技术中数据存储处理效率低的问题,实现了提高数据存储的数据处理效率和数据存储模型的使用率的效果。
通过上述实施例,使用非范式关系和非维度关系建模,并将业务数据中的实体对象的描述数据存储在宽表中,大大提高了使用非范式关系和非维度关系建模而产出的模型的使用率。
以二蛋登录淘宝网买鞋子为例,实体对象可以是二蛋、淘宝网站、鞋子,实体对象与实体对象之间的动作关系包括:二蛋登录淘宝网站、二蛋通过淘宝网站买鞋子;以实体对象“二蛋”为例,基于实体对象和对象属性信息确定二蛋所属的数据域为客户域中的会员域,将二蛋的描述信息(如,性别:男、年龄:18岁等)存入该客户域中的会员域的宽表中。
在上述实施例中,提供了一种在大数据生态中构建一个适合互联网业务应用的反范式非维度建模的方案,通过上述实施例可以建起一个能适应TPB级海量数据存储,面向不同的业务主题的、集成的、相对稳定的离线数仓平台。
下面结合图3详细介绍本申请上述实施例。如图3所示的数据模型中,包括:数据基础层、数据中间层、数仓支撑域和数据集市层。
其中,可以在数据基础层(ODS层)获取业务数据,如图3中所示,业务数据可以包括:线上DB数据、文件数据、消息数据、日志数据以及外部数据中的至少一种数据,可选地,业务数据还可以包括其他数据,在该实施例不再做举例说明。
在数据基础层获取业务数据之后,基于业务数据中的实体对象和对象属性信息确定各个实体对象所属的位于数据中间层的数据域,并获取各个实体对象与各个数据域的逻辑关系,将各个实体对象的描述数据存储入对应的宽表,以完成数据的反范式非维度的存储。
根据本申请上述实施例,基于实体对象和对象属性信息确定各个实体对象所属的数据域,并获取各个实体对象与数据域的逻辑关系可以包括:确定各个实体对象所属的一级数据域;按照各个实体对象的对象属性信息将各个一级数据域中的实体对象归类至对应的二级数据域,得到归类结果;根据归类结果建立逻辑模型,其中,逻辑模型用于描述实体对象与数据域的逻辑关系。
下面结合图4详细介绍本申请上述实施例,如图4所示,在数据中间层的数据域可以包括:客户(域)、产品(域)、资金(域)、事件(域)以及交易(域)等。其中,客户(域)可以包括:会员(域)、客户关系(域)、卖家(域)、标签(域)等;产品(域)可以包括:贷款产品(域)、基金产品(域)、招财宝(域)、余额宝(域)、保险产品(域)以及商品(域)等;资金(域)可以包括:现金(域)、***(域)以及储蓄卡(域)等;事件(域)可以包括:营销(域)、日志(域)、风险(域)以及网站行为(域)等;交易(域)可以包括:拍下(域)、订单(域)、付款(域)、确认(域)以及退货/退款(域)等。其中,***(域)和储蓄卡(域)在图中未示出。
可选地,对于客户域/事件域/协议域/产品域,可以将所有业务数据按照数据内容和数据域的定义分别划归到大数据域中,各大数据域就是现实世界中所有实体对象的高度抽象和归属,存储入各大数据域中的所有对象及其属性均可以按照实体对象和实体对象之间的关系构建数据域及各个实体对象之间的关系,现实世界中所有实体对象及其属性均能通过有限的大数据域及其所属的二级主题域(即上述实施例中的二级数据域)找到对应的归属。
可选地,可以按照一级数据域(如数据域大类)将实体对象进行分类,以将对应的数据按照一级数据域分类存储,具体地,可以将业务数据抽取成实体对象的主体,然后按照实体对象的对象属性信息(如主要属性)进行归类。例如:业务数据中的客户数据抽象成客户对象和客户属性存放到客户数据域(即上述的一级数据域)中,在“二蛋登录淘宝网买鞋子”的例子中,基于得到的业务数据中实体对象二蛋的对象属性信息(如,性别:男、年龄:18岁)确定该数据属于客户数据,可以将该数据存入客户数据域的宽表中。
上述实施例可以通过如图5所示的方法实现:
步骤S502:获取业务数据中的多个实体对象和各个实体对象的对象属性信息。
其中,步骤S502的实现方法与步骤S202的实现方法一致,在此不再赘述。
步骤S504:确定各个实体对象所属的一级数据域。
具体地,可以根据一级数据域的定义和各个实体对象的对象属性信息将实体对象分类,以确定各个实体对象所属的一级数据域。
步骤S506:按照各个实体对象的对象属性信息将各个一级数据域中的实体对象归类至对应的二级数据域,得到归类结果。
可选地,可以将所有划归到一级数据域中的数据按照对象属性信息归类为二级主题域(即上述实施例中的二级数据域),二级主题域各对象(如会员、客户关系、卖家以及标签等)即为存放在该数据域下的实体对象的归类对应的共性归属。
步骤S508:根据归类结果建立逻辑模型。
其中,逻辑模型用于描述实体对象与数据域的逻辑关系。
可选地,存储入各大数据域中的所有对象及其属性均可以按照实体对象和实体对象之间的关系构建数据域及各个实体对象之间的逻辑关系。
步骤S510:按照逻辑关系在数据库中创建宽表,并将各个实体对象的描述数据存储入对应的宽表。
其中,步骤S510的实现方法与步骤S206的实现方法一致,在此不再赘述。
在本申请的上述实施例中,按照逻辑关系创建宽表,并将各个实体对象的描述数据存储入对应的宽表可以包括:根据逻辑模型所描述的逻辑关系使用宽表设计方法创建宽表;按照逻辑模型将具有层级关系的实体对象的属性数据冗余存储到对应的宽表中;和/或将具有层级关系的实体对象的关系数据采用极限存储的方式存储入宽表。其中,描述数据可以包括属性数据和关系数据。
具体地,可以根据逻辑模型所描述的实体对象与数据域之间的逻辑关系使用宽表设计方法创建宽表,并将具有层级关系的实体对象的属性数据冗余存储到各个实体对象所属的数据域的宽表中。
在上述实施例中,可以在将具有层级关系的实体对象的属性数据冗余存储到其所属的数据域的宽表中之后,将具有层级关系的实体对象的关系数据采用极限存储的方式存储入宽表。其中,描述数据可以包括属性数据,也可以包括关系数据。
其中,关系数据用于描述各个实体对象之间的层级关系。
上述实施例中,冗余存储可以保证数据的一致性,并且采用极限存储的方式,可以通过设定数据的历史生命周期将实体对象之间的关系数据存储为历史拉链表,既能满足对历史数据的需求,又能很大程度的节省存储资源。
可选地,上述实施例中存储描述数据时,实体对象及其属性设计均使用宽表设计,不允许抽象出父子类关系,所有的层次结果均使用可适当冗余的宽表设计,按照实体对象的分类(可以通过上述实施例中的归类结果获得)将对应的有层级关系的属性冗余存放到宽表中;并可以使用极限存储等方式将具有强层级关系的关系数据存放入,以形成明细数据表。
通过上述方式设计和创建出来的表将不存在维度信息,且绝大部分的数据存放在一个宽表中;表和表之间的关系通过外键关联,表内部存在唯一主键同时允许存在冗余数据;所有明细数据均存放在数据中间层,数据集市层只存放主题集市相关的汇总和业务加工出来的数据。
以“二蛋登录淘宝网买东西”为例,若获取到的业务数据中既包括二蛋买男装的数据也包括二蛋买女装的数据,将这两条数据增加时间标签,均保存入同一个宽表中,在这个存储过程中,不对二蛋买男装和女装的数据进行分层次存储的处理。
下面结合图6详细介绍本申请上述实施例,如图6所示,上述实施例可以通过如下步骤实现:
步骤S602:获取业务数据中的多个实体对象和各个实体对象的对象属性信息。
其中,步骤S602的实现方法与步骤S202的实现方法一致,在此不再赘述。
步骤S604:确定各个实体对象所属的一级数据域。
具体地,可以根据一级数据域的定义和各个实体对象的对象属性信息将实体对象分类,以确定各个实体对象所属的一级数据域。
步骤S606:按照各个实体对象的对象属性信息将各个一级数据域中的实体对象归类至对应的二级数据域,得到归类结果。
可选地,可以将所有划归到一级数据域中的数据按照对象属性信息归类为二级主题域(即上述实施例中的二级数据域),二级主题域各对象(如会员、客户关系、卖家以及标签等)即为存放在该数据域下的实体对象的归类对应的共性归属。
步骤S608:根据归类结果建立逻辑模型。
其中,逻辑模型用于描述实体对象与数据域的逻辑关系。
可选地,存储入各大数据域中的所有对象及其属性均可以按照实体对象和实体对象之间的关系构建数据域及各个实体对象之间的逻辑关系。
步骤S610:根据逻辑模型所描述的逻辑关系使用宽表设计方法创建宽表。
可选地,采用宽表设计方法设计宽表,设计的宽表中的行和列之间的关系符合逻辑模型所描述的逻辑关系。
步骤S612:按照逻辑模型将具有层级关系的实体对象的属性数据冗余存储到对应的宽表中。
步骤S614:将具有层级关系的实体对象的关系数据采用极限存储的方式存储入宽表。
其中,描述数据可以包括属性数据和关系数据。
根据本申请上述实施例,获取业务数据中的多个实体对象和各个实体对象的对象属性信息可以包括:对业务数据进行转码,得到转码后的业务数据;从转码后的业务数据中提取实体对象和各个实体对象的对象属性信息。
可选地,从转码后的业务数据中提取实体对象和各个实体对象的对象属性信息包括:
对转码后的业务数据进行去重和校验,得到处理后的业务数据;从处理后的业务数据中提取实体对象和各个实体对象的对象属性信息。
下面结合图7详细介绍本申请实施例,如图7所示,该实施例可以通过如下方法实现:
步骤S702:对业务数据进行转码,得到转码后的业务数据。
可选地,在图3所示的数据基础层对业务数据进行转码,在转码过程中,可以将业务数据中的部分或全部数据转换为代码化的数据,以得到转码后的业务数据。
例如,获取到的“二蛋登录淘宝网买鞋子”的业务数据中包括一条数据:二蛋的基本信息:性别:男、年龄:18岁、学历是否硕士:是。可以将该数据转码为:性别:0、年龄:18岁、学历是否硕士:1。
在该举例说明中,***将业务数据中的部分数据进行了转码。需要说明的是,在图3所示的数据基础层中可以使用直接引用各***的原始业务数据或者集团中间层的数据,该数据基础层保持贴源表结构设计,在该数据基础层不进行数据清洗工作,只进行数据的简单的数据解释转码的工作。
步骤S704:对转码后的业务数据进行去重和校验,得到处理后的业务数据。
步骤S706:从处理后的业务数据中提取实体对象和各个实体对象的对象属性信息。
通过步骤S704和步骤S706可以实现:从转码后的业务数据中提取实体对象和各个实体对象的对象属性信息。
在数据中间层沉淀通用的业务数据,具体地,在该数据中间层根据对应的业务需求将数据基础层(ODS)的表进行数据标准化和统一化(即上述实施例中的去重和校验处理),并将数据按照业务对象为客户、事件、产品等大类数据域进行业务数据归类,并依据归类结果存放明细数据,并且要求所有的数据均是存放相对通用的业务。
可选地,对转码后的业务数据进行去重和校验的操作包括如下处理中的至少之一:
(1)去重:将转码后的业务数据中重复的数据进行归一化,以使得处理后的数据中不存在完全一致的两条数据。
(2)时效校验:校验获取到的业务数据的生成时间(***获取的初始的业务数据的生成时间)是否与当前时间的时间差小于预设阈值,若获取到的业务数据的生成时间与当前时间的时间差小于预设阈值,则校验通过。
(3)可访问性校验:校验转码后的业务数据是否可被访问,若转码后的业务数据可被访问,则校验通过。
(4)完整性校验:校验转码后的业务数据是否完整,若转码后的业务数据完整,则校验通过。
(5)可维护性校验:校验转码后的业务数据是否可维护(是否可以及时更新),若转码后的业务数据可维护,则校验通过。
(6)准确性校验:校验转码后的业务数据是否准确,若转码后的业务数据准确,则校验通过。
步骤S708:基于实体对象和对象属性信息确定各个实体对象所属的数据域,并获取各个实体对象与数据域的逻辑关系。
可选地,步骤S708的实现方法与步骤S204的实现方法一致,在此不再赘述。
步骤S710:按照逻辑关系在数据库中创建宽表,并将各个实体对象的描述数据存储入对应的宽表。
可选地,步骤S710的实现方法与步骤S206的实现方法一致,在此不再赘述。
根据本申请的上述实施例,在将各个实体对象的描述数据存储入对应的宽表之后,该方法还可以包括:
按照用户数据分析请求从宽表中提取待分析数据;汇总待分析数据得到指标数据,其中,指标数据用于描述衡量待分析数据的规格和标准。
可选地,可以在如图3所示的数据集市层按照用户数据分析请求从宽表中提取待分析数据,并汇总待分析数据得到指标数据。
具体地,若出现几个业务过程要求对同一对象数据进行加工得到的数据,应放入数据中间层作为数据中间层通用汇总加工数据层,将数据加工过程固化到数据中间层(EDW-DWS),然后再提供给不同的业务集市调用。
可选地,在数据集市层存放的是根据业务需要(如上述实施例中的用户数据分析请求)进行加工的汇总指标数据,该数据集市层的数据可以从数据中间层汇总加工而来,该数据集市层的数据以业务为向导进行构建。通过使用数据中间层的数据进行汇总得到业务汇总指标(即上述实施例中的指标数据),这个层次只存放业务需要的经过业务加工出来的业务汇总指标。
如图3所示的数据模型中还包括:数仓支撑域,该数仓支撑域用于存储公共数据。
下面结合图8所示的实施例详细介绍本申请。如图8所示:
以二蛋登陆淘宝网店买鞋子为例:使用获取到的业务数据中的实体对象之间的动作关系构建出领域模型,通过构建领域模型可以获取业务数据中的实体对象及对象属性信息。如图8所示的领域模型中包括三个实体对象:二蛋、淘宝网站和鞋子;如图8所示的领域模型中还包括两个动作:登录和买。
在构建出领域模型之后,将实体对象按照以一级数据域及一级数据域的二级主题域进行归类,以将实体对象及对象属性信息归类到对应的数据域下,得到逻辑模型。如图8所示的逻辑模型中:通过领域模型得到的实体对象分别归属于5个数据域:客户域的会员域,事件域的网站行为域,交易域的拍下、付款域,资金域的支付宝余额域,以及产品域的商品域。
根据逻辑模型将对应的实体关系(即上述实施例中的逻辑关系)使用宽表设计得到具体的物理表(即宽表)及宽表关系,以得到对应的物理模型。如图8所示的构建出的物理模型包括5个表:CUST_TABLE、SITE_LOG_TABLE、TRD_ORDER_TABLE、PAYMENT_TABLE、以及PRODUCT_TABLE。
通过上述方式构建出来的物理模型只有客户信息、站点日志、交易全流程、支付、产品这几个宽表,所有业务数据已经在集市层经过业务加工,做到业务数据化,并且这样的数据存储非常简洁一张客户宽表就可以支持80%以上的客户相关的应用。做到了降低数据使用门槛,任何客户相关的信息基本可以在一个客户宽表中得到。这样能减少出业务数据的计算复杂度最终实现高可用低能耗。
在上述实施例中,在领域模型构建过程使用面对对象的00建模概念,然后在逻辑模型和物理模型构建中将对应的对象和对象之间的关系通过实体和实体关系构建出来。在整个模型设计和构建过程中完全不遵守3NF范式,同时模型设计不使用任何维度表,该种建模方式完全不同于传统的建模方式并且适用在TPB级的大数据环境中。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
实施例2
根据本申请实施例,还提供了一种用于实施上述数据库数据的存储方法的数据库数据的存储装置,如图9所示,该装置包括:获取模块10、处理模块30以及存储模块50。
其中,获取模块10用于获取业务数据中的多个实体对象和各个实体对象的对象属性信息;处理模块30用于基于实体对象和对象属性信息确定各个实体对象所属的数据域,并获取各个实体对象与数据域的逻辑关系;存储模块50用于按照逻辑关系在数据库中创建宽表,并将各个实体对象的描述数据存储入对应的宽表。
采用上述实施例,可以基于业务数据中实体对象和对象属性信息确定不同的实体对象所属的数据域,并确定各个实体对象和数据域之间的逻辑关系,基于该逻辑关系将业务数据中的实体对象的描述数据存入对应的宽表中。通过上述实施例,使用非范式关系和非维度关系存储实体对象的描述数据,可以保证数据的一致性,通过一个宽表存储数据能在直接降低数据使用门槛的同时,减少业务数据的计算复杂度,从而解决了现有技术中数据存储处理效率低的问题,实现了提高数据存储的数据处理效率和数据存储模型的使用率的效果。
通过上述实施例,使用非范式关系和非维度关系建模,并将业务数据中的实体对象的描述数据存储在宽表中,大大提高了使用非范式关系和非维度关系建模而产出的模型的使用率。
以二蛋登录淘宝网买鞋子为例,实体对象可以是二蛋、淘宝网站、鞋子,实体对象与实体对象之间的动作关系包括:二蛋登录淘宝网站、二蛋通过淘宝网站买鞋子;以实体对象“二蛋”为例,基于实体对象和对象属性信息确定二蛋所属的数据域为客户域中的会员域,将二蛋的描述信息(如,性别:男、年龄:18岁等)存入该客户域中的会员域的宽表中。
可选地,处理模块可以包括:确定模块,用于确定各个实体对象所属的一级数据域;归类模块,用于按照各个实体对象的对象属性信息将各个一级数据域中的实体对象归类至对应的二级数据域,得到归类结果;建立模块,用于根据归类结果建立逻辑模型,其中,逻辑模型用于描述实体对象与数据域的逻辑关系。
可以在数据基础层(ODS层)获取业务数据,如图3中所示,业务数据可以包括:线上DB数据、文件数据、消息数据、日志数据以及外部数据中的至少一种数据,可选地,业务数据还可以包括其他数据,在该实施例不再做举例说明。
在数据基础层获取业务数据之后,基于业务数据中的实体对象和对象属性信息确定各个实体对象所属的位于数据中间层的数据域,并获取各个实体对象与各个数据域的逻辑关系,将各个实体对象的描述数据存储入对应的宽表,以完成数据的反范式非维度的存储。
可选地,存储模块可以包括:创建模块,用于根据逻辑模型所描述的逻辑关系使用宽表设计装置创建宽表;存储子模块,用于按照逻辑模型将具有层级关系的实体对象的属性数据冗余存储到对应的宽表中;和/或将具有层级关系的实体对象的关系数据采用极限存储的方式存储入宽表。其中,描述数据包括属性数据和关系数据。
可选地,可以按照一级数据域(如数据域大类)将实体对象进行分类,以将对应的数据按照一级数据域分类存储,具体地,可以将业务数据抽取成实体对象的主体,然后按照实体对象的对象属性信息(如主要属性)进行归类。例如:业务数据中的客户数据抽象成客户对象和客户属性存放到客户数据域(即上述的一级数据域)中,在“二蛋登录淘宝网买鞋子”的例子中,基于得到的业务数据中实体对象二蛋的对象属性信息(如,性别:男、年龄:18岁)确定该数据属于客户数据,可以将该数据存入客户数据域的宽表中。
在上述实施例中,可以将所有划归到一级数据域中的数据按照对象属性信息归类为二级主题域(即上述实施例中的二级数据域),二级主题域各对象(如会员、客户关系、卖家以及标签等)即为存放在该数据域下的实体对象的归类对应的共性归属。存储入各大数据域中的所有对象及其属性均可以按照实体对象和实体对象之间的关系构建数据域及各个实体对象之间的逻辑关系。
具体地,可以根据逻辑模型所描述的实体对象与数据域之间的逻辑关系使用宽表设计方法创建宽表,并将具有层级关系的实体对象的属性数据冗余存储到各个实体对象所属的数据域的宽表中。
在上述实施例中,可以在将具有层级关系的实体对象的属性数据冗余存储到其所属的数据域的宽表中之后,将具有层级关系的实体对象的关系数据采用极限存储的方式存储入宽表。其中,描述数据可以包括属性数据,也可以包括关系数据。
其中,关系数据用于描述各个实体对象之间的层级关系。
可选地,上述实施例中存储描述数据时,实体对象及其属性设计均使用宽表设计,不允许抽象出父子类关系,所有的层次结果均使用可适当冗余的宽表设计,按照实体对象的分类(可以通过上述实施例中的归类结果获得)将对应的有层级关系的属性冗余存放到宽表中;并可以使用极限存储等方式将具有强层级关系的关系数据存放入,以形成明细数据表。
在本申请的上述实施例中,获取模块可以包括:转码模块,用于对业务数据进行转码,得到转码后的业务数据;第一提取模块,用于从转码后的业务数据中提取实体对象和各个实体对象的对象属性信息。
可选地,第一提取模块可以包括:去重校验模块,用于对转码后的业务数据进行去重和校验,得到处理后的业务数据;提取子模块,用于从处理后的业务数据中提取实体对象和各个实体对象的对象属性信息。
可选地,在图3所示的数据基础层对业务数据进行转码,在转码过程中,可以将业务数据中的部分或全部数据转换为代码化的数据,以得到转码后的业务数据。
根据本申请的上述实施例,该装置还可以包括:如图10所示的第二提取模块70,用于在将各个实体对象的描述数据存储入对应的宽表之后,按照用户数据分析请求从宽表中提取待分析数据;汇总模块90,用于汇总待分析数据得到指标数据,其中,指标数据用于描述衡量待分析数据的规格和标准。
可选地,可以在如图3所示的数据集市层按照用户数据分析请求从宽表中提取待分析数据,并汇总待分析数据得到指标数据。
在上述实施例中,在领域模型构建过程使用面对对象的00建模概念,然后在逻辑模型和物理模型构建中将对应的对象和对象之间的关系通过实体和实体关系构建出来。在整个模型设计和构建过程中完全不遵守3NF范式,同时模型设计不使用任何维度表,该种建模方式完全不同于传统的建模方式并且适用在TPB级的大数据环境中。
实施例3
本申请的实施例可以提供一种计算机终端,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。
可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。
在本实施例中,上述计算机终端可以执行数据库数据的存储方法中各步骤的程序代码。
可选地,图11是根据本申请实施例的一种计算机终端应用环境的示意图。如图11所示,该计算机终端20可以包括与服务器40通过网络连接,该计算机终端可以包括:一个或多个(图中仅示出一个)处理器、存储器、以及输入装置。
其中,存储器可用于存储软件程序以及模块,如本申请实施例中的安全漏洞检测方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据库数据的存储方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至终端A。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:获取业务数据中的多个实体对象和各个实体对象的对象属性信息;基于实体对象和对象属性信息确定各个实体对象所属的数据域,并获取各个实体对象与数据域的逻辑关系;按照逻辑关系在数据库中创建宽表,并将各个实体对象的描述数据存储入对应的宽表。
采用上述实施例,可以基于业务数据中实体对象和对象属性信息确定不同的实体对象所属的数据域,并确定各个实体对象和数据域之间的逻辑关系,基于该逻辑关系将业务数据中的实体对象的描述数据存入对应的宽表中。通过上述实施例,使用非范式关系和非维度关系存储实体对象的描述数据,可以保证数据的一致性,通过一个宽表存储数据能在直接降低数据使用门槛的同时,减少业务数据的计算复杂度,从而解决了现有技术中数据存储处理效率低的问题,实现了提高数据存储的数据处理效率和数据存储模型的使用率的效果。
通过上述实施例,使用非范式关系和非维度关系建模,并将业务数据中的实体对象的描述数据存储在宽表中,大大提高了使用非范式关系和非维度关系建模而产出的模型的使用率。
可选的,上述处理器还可以执行如下步骤:确定各个实体对象所属的一级数据域;按照各个实体对象的对象属性信息将各个一级数据域中的实体对象归类至对应的二级数据域,得到归类结果;根据归类结果建立逻辑模型,其中,逻辑模型用于描述实体对象与数据域的逻辑关系。
可选的,上述处理器还可以执行如下步骤:根据逻辑模型所描述的逻辑关系使用宽表设计方法创建宽表;按照逻辑模型将具有层级关系的实体对象的属性数据冗余存储到对应的宽表中;和/或将具有层级关系的实体对象的关系数据采用极限存储的方式存储入宽表,其中,描述数据包括属性数据和关系数据。
可选的,上述处理器还可以执行如下步骤:对业务数据进行转码,得到转码后的业务数据;从转码后的业务数据中提取实体对象和各个实体对象的对象属性信息。
可选的,上述处理器还可以执行如下步骤:对转码后的业务数据进行去重和校验,得到处理后的业务数据;从处理后的业务数据中提取实体对象和各个实体对象的对象属性信息。
可选的,上述处理器还可以执行如下步骤:在将各个实体对象的描述数据存储入对应的宽表之后,按照用户数据分析请求从宽表中提取待分析数据;汇总待分析数据得到指标数据,其中,指标数据用于描述衡量待分析数据的规格和标准。
本领域普通技术人员可以理解,图11所示的结构仅为示意,计算机终端也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等终端设备。图11其并不对上述电子装置的结构造成限定。例如,计算机终端20还可包括比图11中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图11所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
实施例4
本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例一所提供的数据库数据的存储方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:获取业务数据中的多个实体对象和各个实体对象的对象属性信息;基于实体对象和对象属性信息确定各个实体对象所属的数据域,并获取各个实体对象与数据域的逻辑关系;按照逻辑关系在数据库中创建宽表,并将各个实体对象的描述数据存储入对应的宽表。
采用上述实施例,可以基于业务数据中实体对象和对象属性信息确定不同的实体对象所属的数据域,并确定各个实体对象和数据域之间的逻辑关系,基于该逻辑关系将业务数据中的实体对象的描述数据存入对应的宽表中。通过上述实施例,使用非范式关系和非维度关系存储实体对象的描述数据,可以保证数据的一致性,通过一个宽表存储数据能在直接降低数据使用门槛的同时,减少业务数据的计算复杂度,从而解决了现有技术中数据存储处理效率低的问题,实现了提高数据存储的数据处理效率和数据存储模型的使用率的效果。
通过上述实施例,使用非范式关系和非维度关系建模,并将业务数据中的实体对象的描述数据存储在宽表中,大大提高了使用非范式关系和非维度关系建模而产出的模型的使用率。
可选地,在本实施例中,存储介质还被设置为存储用于执行以下步骤的程序代码:确定各个实体对象所属的一级数据域;按照各个实体对象的对象属性信息将各个一级数据域中的实体对象归类至对应的二级数据域,得到归类结果;根据归类结果建立逻辑模型,其中,逻辑模型用于描述实体对象与数据域的逻辑关系。
可选地,在本实施例中,存储介质还被设置为存储用于执行以下步骤的程序代码:根据逻辑模型所描述的逻辑关系使用宽表设计方法创建宽表;按照逻辑模型将具有层级关系的实体对象的属性数据冗余存储到对应的宽表中;和/或将具有层级关系的实体对象的关系数据采用极限存储的方式存储入宽表,其中,描述数据包括属性数据和关系数据。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:业务数据进行转码,得到转码后的业务数据;从转码后的业务数据中提取实体对象和各个实体对象的对象属性信息。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:对转码后的业务数据进行去重和校验,得到处理后的业务数据;从处理后的业务数据中提取实体对象和各个实体对象的对象属性信息。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在将各个实体对象的描述数据存储入对应的宽表之后,按照用户数据分析请求从宽表中提取待分析数据;汇总待分析数据得到指标数据,其中,指标数据用于描述衡量待分析数据的规格和标准。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。