CN111367914B - 数据处理的方法、装置、设备及存储介质 - Google Patents
数据处理的方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111367914B CN111367914B CN202010143901.1A CN202010143901A CN111367914B CN 111367914 B CN111367914 B CN 111367914B CN 202010143901 A CN202010143901 A CN 202010143901A CN 111367914 B CN111367914 B CN 111367914B
- Authority
- CN
- China
- Prior art keywords
- association
- data
- processed
- target object
- data table
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种数据处理的方法、装置、设备及存储介质,该方法包括:获取待处理的数据表;获取所述待处理的数据表对应的预定义关联集合,所述预定义关联集合中包含基于第一目标对象的第一关联数据;通过所述预定义关联集合获取所述待处理的数据表与所述第一目标对象的第二关联数据;将所述第二关联数据与所述待处理的数据表进行绑定,得到具有所述第二关联数据的数据表。本申请实施例提供的方法能够克服在没有外键的情况下,现有技术中无法快速有效地实现表与表关联的数据处理的问题。
Description
技术领域
本申请实施例涉及数据处理技术领域,尤其涉及一种数据处理的方法、装置、设备及存储介质。
背景技术
Rails提供了一般表和表关联的支持,通过外键实现,比如,现在有一个帖子表(post)与用户表(user),一个帖子会有多个用户(参与者),则一个用户属于一个帖子,在数据库中通过用户标识(ID)将用户与帖子进行关联。这里的用户标识即为外键;
但是,在没有外键的情况下,对于复杂的数据表之间的关联无法实现,因此,现有技术中提出可以通过循环把每个帖子单独查询一次,在查询多个帖子时,先全部加载一次用户,这样可以实现每个帖子与每个用户之间的关系,但是该方法执行了n+1次重复加载,针对数据处理,效率较低。
因此,在没有外键的情况下,现有技术中无法快速有效地实现表与表关联的数据处理。
发明内容
本申请实施例提供一种数据处理的方法、装置、设备及存储介质,以克服在没有外键的情况下,现有技术中无法快速有效地实现表与表关联的数据处理的问题。
第一方面,本申请实施例提供一种数据处理的方法,包括:
获取待处理的数据表;
获取所述待处理的数据表对应的预定义关联集合,所述预定义关联集合中包含基于第一目标对象的第一关联数据;
通过所述预定义关联集合获取所述待处理的数据表与所述第一目标对象的第二关联数据;
将所述第二关联数据与所述待处理的数据表进行绑定,得到具有所述第二关联数据的数据表。
在一种可能的设计中,所述预定义关联集合中还包括代表所述待处理的数据表与第二目标对象之间关联关系的第三关联数据;所述第一关联数据中包含所述第一目标对象和所述第二目标对象之间的关联关系;
所述通过所述预定义关联集合获取所述待处理的数据表与所述第一目标对象的第二关联数据,包括:
通过所述预定义关联集合中的所述第三关联数据和所述第一关联数据获取待处理的数据表与所述第一目标对象的第二关联数据。
在一种可能的设计中,所述通过所述预定义关联集合获取所述待处理的数据表与所述第一目标对象的第二关联数据之前,还包括:
获取用户选择的关联类型,所述关联类型包括集合类型和单个类型;
所述通过所述预定义关联集合获取所述待处理的数据表与所述第一目标对象的第二关联数据,包括:
判断所述关联类型是否为单个类型;
若是,则通过所述预定义关联集合获取所述待处理的数据表与一个所述第一目标对象的第二关联数据;
若否,则通过所述预定义关联集合获取所述待处理的数据表与两个以上所述第一目标对象的第二关联数据。
在一种可能的设计中,所述通过所述预定义关联集合获取所述待处理的数据表与所述第一目标对象的第二关联数据之后,还包括:
展示所述第二关联数据。
在一种可能的设计中,所述展示所述第二关联数据,包括:
若所述用户选择的关联类型为集合类型,则以列表的形式展示所述第二关联数据对应的两个以上的第二目标对象;
若所述用户选择的关联类型为单个类型,则展示所述第二关联数据对应的一个第二目标对象。
在一种可能的设计中,所述方法还包括:
接收查询所述待处理的数据表关联的第一目标对象的指令;
根据所述指令从所述目标数据表绑定的第二关联数据中获取所述第一目标对象。
在一种可能的设计中,所述待处理的数据表为基于Rails框架的数据表。
第二方面,本申请实施例提供一种数据处理的装置,包括:
第一获取模块,用于获取待处理的数据表;
第二获取模块,用于获取所述待处理的数据表对应的预定义关联集合,所述预定义关联集合中包含基于第一目标对象的第一关联数据;
第三获取模块,用于通过所述预定义关联集合获取所述待处理的数据表与所述第一目标对象的第二关联数据;
绑定模块,用于将所述第二关联数据与所述待处理的数据表进行绑定,得到具有所述第二关联数据的数据表。
第三方面,本申请实施例提供一种数据处理设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计中所述的数据处理的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计中所述的数据处理的方法。
本实施例提供的数据处理的方法、装置、设备及存储介质,首先获取待处理的数据表;然后获取待处理的数据表对应的预定义关联集合,这里的预定义关联集合中包含基于第一目标对象的第一关联数据,再通过预定义关联集合来获取待处理的数据表与所述第一目标对象的第二关联数据,并将第二关联数据与所述待处理的数据表进行绑定,得到具有所述第二关联数据的数据表。因此,本申请通过从包含基于第一目标对象的第一关联数据的预定义关联集合中获取的待处理的数据表与所述第一目标对象之间的关联关系即第二关联数据,然后将所述第二关联数据与所述待处理的数据表进行绑定,通过两次加载循环实现了表与表关联,提高了数据处理的效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的数据处理系统的场景示意图;
图2为本申请实施例提供的数据处理的方法的流程示意图;
图3为本申请另一实施例提供的数据处理的方法的流程示意图;
图4为本申请又一实施例提供的数据处理的方法的流程示意图;
图5为本申请再一实施例提供的数据处理的方法的流程示意图;
图6为本申请实施例提供的数据处理的装置的结构示意图;
图7为本申请实施例提供的数据处理设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例,例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
现有技术中在没有外键的情况下,通过循环把每个帖子单独查询一次,在查询多个帖子时,针对查询的每个帖子,为了查找出与帖子匹配的用户,需先全部加载一次用户,以此类推,直至查询完所有的帖子,这样可以实现每个帖子与每个用户之间的关系,但是该方法执行了n+1次重复加载,针对数据处理,效率较低。为了解决查询性能低,无法快速有效地实现表与表关联的数据处理的问题,本申请实施例提供一种数据处理的方法、装置、设备以及存储介质。
参考图1,图1为本申请实施例提供的数据处理系统的场景示意图。在实际应用中,数据处理系统可以包括终端设备10和服务器20。通过终端设备发布消息,这里发布的消息可以是不公开的,存储至数据库的数据,服务器接收或获取消息即待处理的数据表,这里待处理的数据表为基于Rails框架的数据表。然后对待处理的数据表与目标对象实现关联,现有技术中只能通过外键或是n+1次重复加载查询所有的帖子和针对每个帖子查询所有的用户,而本申请是通过预定义加载的方式,实现表之间的关联。比如,通过预定义关联的查询方式实现表与表之间的关联。具体地,首先确定待处理的数据表是否有预定义关系,即待处理的数据表是否有预定义关联集合,若有预定义关联集合,则获取待处理的数据表对应的预定义关联集合,这里的预定义关联集合中包含基于第一目标对象的第一关联数据,这里的第一关联数据不包含第二关系数据;再通过含有基于第一目标对象的第一关联数据的预定义关联集合来获取待处理的数据表与所述第一目标对象的第二关联数据,并将第二关联数据与所述待处理的数据表进行绑定,得到具有所述第二关联数据的数据表。该系统通过从包含基于第一目标对象的第一关联数据的预定义关联集合中获取的待处理的数据表与所述第一目标对象之间的关联关系即第二关联数据,然后将所述第二关联数据与所述待处理的数据表进行绑定,通过两次加载循环实现了表与表关联,比现有技术少了n-1次调用或加载的循环过程,因此该系统查询性能高,能够快速有效地实现表与表关联的数据处理。
其中,实现数据处理的方法的配置环境可以为:为了实现对rails提供关联支持的一种扩展,可以允许用户进行自定义关联,并通过预定义好的关系进行n+1查询的优化,首先通过定义关联名称(name)、类型(type:单个或集合),预加载器(preloader)和rails内部来注册自定义的关联方法。调用流程可以是实体加载上述自定义的方法,通过类型构建单个或集合类型的构建反射关系类,再加入到实体关联中去。
以用户表和帖子表为例。具体地,1)通过一次循环获取所有帖子的关联的用户邮箱;2)通过一次查询把上一步1)获取到的用户邮箱查询到对应的用户实体,生成对应的用户实体的字典(用户集合);3)再次循环多个帖子,把每个帖子的用户邮箱通过上一步2)用户实体的字典中获取到对应的所有用户实体,并返回具有帖子和用户实体关联数据的数据表。
具体地,如何实现对数据处理的,参见图2所示,图2为本申请实施例提供的数据处理的方法的流程示意图。
参见图2,所述数据处理的方法,包括:
S101、获取待处理的数据表。
本实施例中,实现数据处理的方法的执行主体可以是网络设备,具体地可以是服务器或装有该数据处理插件的终端。在此不作限定。
在实际应用中,以执行主体为服务器为例,待处理的数据表为未形成关联的数据表,比如帖子表或用户表。例如,在某一个场景下,终端设备发布了中奖用户的帖子和用户,这里发布的数据,比如多个帖子标识和多个用户标识是没有关联的,所以需要服务器查询或匹配出每个帖子对应的用户,进而找到获奖用户以使终端设备进行获奖公示。这里可以不仅仅是中奖的场景还可以是发布任意消息的有关场景,在此举例说明,并不做限定。需要注意的,下述实施例以待处理的数据表为帖子表为例进行说明。但是,并不以此作为对待处理的数据表的限定。
S102、获取所述待处理的数据表对应的预定义关联集合。
其中,所述预定义关联集合中包含基于第一目标对象的第一关联数据。
在实际应用中,本实施例中,第一目标对象可以为获奖用户,预定义关联集合中包含基于第一目标对象的第一关联数据,即第一目标对象与其他对象(不包含待处理的数据表)之间的关联关系都可以包含于所述第一关联数据中,比如第一关联数据可以为获奖用户与用户邮箱之间的关联关系。帖子表中存储有多个帖子,一个帖子可能会有多个用户参与,所以一个帖子可能对应多个用户,但是一个用户属于一个帖子,由于没有外键能够使得帖子表和用户表实现关联即帖子和用户之间的关联,需要待处理的数据表对应的预定义关联集合,即获取帖子表对应的预定义关联集合。这里的预定义关联集合中可以包括帖子表或用户表与用户之间的间接关联关系,比如与用户邮箱的关联关系,或是间接关联关系的第二层关联关系,比如,用户邮箱与其他的关联关系。
S103、通过所述预定义关联集合获取所述待处理的数据表与所述第一目标对象的第二关联数据。
本实施例中,第一关联数据是不包含第二关联数据的,由于仅仅通过第一关联数据是无法得到待处理的数据表与第一目标对象之间的关联关系(如帖子表与获奖用户之间的关联关系),因此,需要从预定义关联集合中获取待处理的数据表与所述第一目标对象的第二关联数据,这里的第二关联数据代表待处理的数据表与所述第一目标对象之间的关联关系。
S104、将所述第二关联数据与所述待处理的数据表进行绑定,得到具有所述第二关联数据的数据表。这里的具有所述第二关联数据的数据表可以为目标数据表。
本实施例中,根据获得的待处理的数据表与所述第一目标对象之间的关联关系,将待处理的数据表与该关联关系实现绑定,得到具有所述第二关联数据的数据表。绑定后,若待处理的数据表为帖子表,则通过待处理的数据表以及第二关联数据即可得到与待处理的数据表关联的获奖用户。相应的,若待处理的数据表是获奖用户表,通过待处理的数据表以及第二关联数据即可得到与待处理的数据表关联的帖子。
提供的数据处理的方法,首先获取待处理的数据表;然后获取待处理的数据表对应的预定义关联集合,这里的预定义关联集合中包含基于第一目标对象的第一关联数据,再通过预定义关联集合来获取待处理的数据表与所述第一目标对象的第二关联数据,并将第二关联数据与所述待处理的数据表进行绑定,得到具有所述第二关联数据的数据表。因此,本申请通过从包含基于第一目标对象的第一关联数据的预定义关联集合中获取的待处理的数据表与所述第一目标对象之间的关联关系即第二关联数据,然后将所述第二关联数据与所述待处理的数据表进行绑定,通过两次加载循环实现了表与表关联,提高了数据处理的效率。
在一种可能的设计中,本实施例在上述实施例的基础上,比如,在图2所述实施例的基础上,对S103进行了详细说明。其中,所述预定义关联集合中还包括代表所述待处理的数据表与第二目标对象之间关联关系的第三关联数据;所述第一关联数据中包含所述第一目标对象和所述第二目标对象之间的关联关系。
所述通过所述预定义关联集合获取所述待处理的数据表与所述第一目标对象的第二关联数据,包括:
通过所述预定义关联集合中的所述第三关联数据和所述第一关联数据获取待处理的数据表与所述第一目标对象的第二关联数据。
本实施例中,预定义关联集合中还可以包括第三关联数据,这里的第三关联数据用于表示所述待处理的数据表与第二目标对象之间关联关系,这里的第二目标对象可以为用户邮箱、用户IP、用户ID等。
比如,第二目标对象为用户邮箱,则第一关联数据中包含获奖用户与用户邮箱之间的关联关系,第三关联数据中包含待处理的数据表与用户邮箱的关联关系。通过预定义关联集合中的待处理的数据表与用户邮箱的关联关系以及获奖用户与用户邮箱之间的关联关系,能够得到待处理的数据表与获奖用户之间的关联关系即待处理的数据表与所述第一目标对象的第二关联数据。
在实际应用中,通过获取两个待关联的数据表各自对应的同一对象的关联关系,实现两个待关联的数据表之间的关联。比如建立帖子表和获奖用户表的关联,可以获取帖子表与某一对象之间的关联关系,以及获取获奖用户表与该同一对象之间的关联关系,进而通过两种关联关系,实现帖子表与获奖用户表之间的关联关系,进而得到具有帖子表与获奖用户表之间的关联关系的数据表。因此,通过预定义关联数据的方式,能够在无外键的情况下,快速地实现表与表之间的关联,节约资源。
本实施例中,无需再针对每个帖子依次遍历一次用户表中的所有用户,形成了n次循环,进而查找到与每个帖子匹配的获奖用户,形成关联,最终为n+1次循环,查找性能低,无法快速有效地实现表与表关联的数据处理。因此,本实施例中吗,通过预定义关联数据加载待处理表的方式,不再使用每次加载一个帖子再对应依次加载全部的用户,减少了循环次数,查找性能高,能够快速有效地实现表与表关联的数据处理。
参见图3所示,图3为本申请另一实施例提供的数据处理的方法的流程示意图,本实施例在上述实施例的基础上,比如,在图2所述实施例的基础上,对S103进行了详细说明。
其中,在通过所述预定义关联集合获取所述待处理的数据表与所述第一目标对象的第二关联数据之前,所述方法还包括:获取用户选择的关联类型,所述关联类型包括集合类型和单个类型。
本实施例中,这里的用户不是第一目标对象,而是执行主体的操作者或是输入参数的人员,这里的关联类型可以由用户自己确定,通过参数传入。集合类型返回列表,如[user1,user2];单个类型返回实体,如user1,即使帖子表有多个关联的实体也只返回一个。
具体地,根据上述获取的用户选择的关联类型,所述通过所述预定义关联集合获取所述待处理的数据表与所述第一目标对象的第二关联数据,包括:
S201、判断所述关联类型是否为单个类型;
S202、若是,则通过所述预定义关联集合获取所述待处理的数据表与一个所述第一目标对象的第二关联数据;
S203、若否,则通过所述预定义关联集合获取所述待处理的数据表与两个以上所述第一目标对象的第二关联数据。
本实施例中,首先获取关联类型,确定该关联类型是否为单个类型,若该关联类型是单个类型,则通过所述预定义关联集合获取待处理的数据表与一个第一目标对象的第二关联数据,比如待处理的数据表与user1的关联关系。具体地,若存在多个第一目标对象时,根据第一目标对象产生的时间从中选择最新产生的第一目标对象作为与待处理的数据表存在第二关联数据的第一目标对象。
若该关联类型不是单个类型,即集合类型,则通过所述预定义关联集合获取所述待处理的数据表与两个以上所述第一目标对象的第二关联数据,比如待处理的数据表与user1、user2等多个获奖用户的关联关系。
在一种可能的设计中,本实施例在上述实施例的基础上,对所述数据处理的方法进行了详细说明。
所述通过所述预定义关联集合获取所述待处理的数据表与所述第一目标对象的第二关联数据之后,还包括:展示所述第二关联数据。
本实施例中,为了使得用户能够查询自己是否获奖,或是为了公式,在通过所述预定义关联集合获取所述待处理的数据表与所述第一目标对象的第二关联数据之后,对第二关联数据进行展示,来表示数据的真实可靠以及为用户提供查询获奖方式。
具体地,参见图4所示,图4为本申请又一实施例提供的数据处理的方法的流程示意图,本实施例在上述实施例的基础上,对展示所述第二关联数据进行了详细说明。所述展示所述第二关联数据,包括:
S301、若所述用户选择的关联类型为集合类型,则以列表的形式展示所述第二关联数据对应的两个以上的第二目标对象;
S302、若所述用户选择的关联类型为单个类型,则展示所述第二关联数据对应的一个第二目标对象。
本实施例中,若所述用户选择的关联类型为集合类型,则以列表的形式即如[user1邮箱,user2邮箱,…]展示所述第二关联数据对应的两个以上的第二目标对象;若所述用户选择的关联类型为单个类型,则展示所述第二关联数据对应的一个第二目标对象实体,比如user1邮箱。
在实际应用中,可以通过展示的第二目标对象来通知获奖用户获奖的消息。比如,向第二目标对象发送获奖消息,并指示第二目标对象对应的实体反馈查收信息,保证获奖消息发送成功。
为了实现帖子表和用户表的关联,参见图5所示,图5为本申请再一实施例提供的数据处理的方法的流程示意图,本实施例在上述实施例的基础上,对数据处理的方法进行了详细说明。所述方法还包括:
S401、接收查询所述待处理的数据表关联的第一目标对象的指令;
S402、根据所述指令从所述目标数据表绑定的第二关联数据中获取所述第一目标对象。
本实施例中,在将所述第二关联数据与所述待处理的数据表进行绑定,得到具有所述第二关联数据的数据表之后,可以根据查询指令查找第一目标对象。
具体地,首先接收查询所述待处理的数据表关联的第一目标对象的指令,然后根据该指令从绑定后的数据表中依据待处理的数据表与第一目标对象的第二关联数据查询与该待处理的数据表相关联的第一目标对象。比如,在接收到查询帖子表关联的获奖用户的指令后,根据该指令从绑定后的数据表中依据帖子表与获奖用户的第二关联数据查询与该待处理的数据表相关联的获奖用户。能够快速查询到获奖用户。
其中,在实际应用中,将所述第二关联数据与所述待处理的数据表进行绑定,还可以通过以下方式实现:
比如,将用户邮箱作为第二目标对象,获奖用户为第一目标对象,待处理的数据表为帖子表,则首先将帖子表含有的所有用户邮箱匹配到用户表中,将用户表含有的所有用户邮箱与帖子表含有的所有用户邮箱进行配对,即根据帖子表含有的各个用户邮箱分别在用户表中匹配相同邮箱,将相同邮箱的一对邮箱以及该对邮箱分别对应的帖子和用户作为绑定后的数据表中的一对关联数据,然后将属于同一帖子的多对关联数据作为一组关联数据,最终可以形成多组关联数据,因此上述的关联数据可以为多组数据,可以将生成的多组关联数据存储在预先设置的关联表中,服务器可以将关联表发送至终端设备,以使终端设备可以发布有关帖子与用户的信息,实现了所有帖子的一次循环以及对所有用户的一次循环即通过两次加载循环即可实现对表与表关联,提高了数据处理的效率。
在一种可能的设计中,在生成具有所述第二关联数据的数据表关联数据并上报至所述终端设备以后,如何对关联数据进行处理,本实施例在上述实施例的基础上,例如,在图5所述的实施例的基础上,对数据处理的方法进行了详细说明。所述方法还包括:
触发所述终端设备发布信息事件,所述发布信息事件用于指示终端设备根据所述第二关联数据以及具有所述第二关联数据的数据表向第一目标对象发布目标消息,以使第一目标对象对应的用户端查收所述目标消息;所述目标消息用于表示所述第一目标对象的用户获奖消息。
本实施例中,比如,终端设备或服务器初始发布的帖子表和用户表,是为了公布在帖子表中的用户中奖名单,为了找出中奖用户是在哪个帖子上中奖的这种关联关系,通过服务器执行上述各个实施例所述的数据处理的方法,来实现两个表之间的关联,进而查找出帖子与获奖用户之间的关联关系,进一步地使得终端设备可以直观地公布获奖帖子-用户的名单以及可以及时向每个获奖用户提示该用户获奖的消息,提高效率。
在本申请中,目标消息用于表示所述第一目标对象的用户获奖消息仅为一种应用场景,该目标消息可以多种应用场景的显示或消息,在此对服务器触发的终端设备发布信息事件和目标消息不进行限定,可以适用于多种应用场景,其中,实现的步骤与上述实施例类似,在此不再赘述。
在实际应用中,比如需要查询所有post(帖子)里的award_users(用户邮箱),我们通过插件方式定义关联来实现自定义关联。比如,定义好post(帖子)中award_users(获奖用户)的关系,并在preload(预定义关联集合)里把rails要求返回的数据以集合类型返回或是单个类型返回,这里要求是要返回key为post,value为这个post的award_users实体数据。
具体地的配置以及实现:1)查询所有post的award_users,解析器先通过includes解析到all方法。2)执行post数据的查询,把post的数据集合存储到@records上。3)如果是使用上述插件进行preload定义的,可以通过preload定义的代码块进行逻辑计算,比如案例中定义的preload,通过传入第二步查询好的posts结果集传入,在这个计算过程,目的就是要计算出所有这些post与award_users的关系,如a)通过一次循环获取所有posts的award_users的users_mails(用户邮箱);b)通过一次查询把上一步a)获取到用户邮箱查询到对应的user实体,并存储key为用户邮箱,value为对应的用户实体的字典;c)再次循环posts,把post的award_users_mails通过上一步b)的结果获取到对应的所有user实体,并返回key为post,value为该post对应的所有user实体的字典。4.如果没有定义preload,则需要通过定义方法来实现,这样需要进行n次user的查询。5.对posts和第三部分加载preload数据进行组装,整体返回,这样可以在循环posts的过程中,直接获取对应post的award_users,无须再进行查询。
因此,通过插件方式来实现,解决rails实体关联中,自定义的关联的关系查询方式,并且通过对preload的定义,可以解决查询中的n+1问题,提升查询效率。
为了实现所述数据处理的方法,本实施例提供了一种数据处理的装置。参见图6,图6为本申请实施例提供的数据处理的装置的结构示意图;所述数据处理的装置60,包括:第一获取模块601、第二获取模块602、第三获取模块603、绑定模块604;第一获取模块601,用于获取待处理的数据表;第二获取模块602,用于获取所述待处理的数据表对应的预定义关联集合,所述预定义关联集合中包含基于第一目标对象的第一关联数据;第三获取模块603,用于通过所述预定义关联集合获取所述待处理的数据表与所述第一目标对象的第二关联数据;绑定模块604,用于将所述第二关联数据与所述待处理的数据表进行绑定,得到具有所述第二关联数据的数据表。
本实施例通过设置第一获取模块601、第二获取模块602、第三获取模块603、绑定模块604,用于获取待处理的数据表;然后获取待处理的数据表对应的预定义关联集合,这里的预定义关联集合中包含基于第一目标对象的第一关联数据,再通过预定义关联集合来获取待处理的数据表与所述第一目标对象的第二关联数据,并将第二关联数据与所述待处理的数据表进行绑定,得到具有所述第二关联数据的数据表。因此,本申请通过从包含基于第一目标对象的第一关联数据的预定义关联集合中获取的待处理的数据表与所述第一目标对象之间的关联关系即第二关联数据,然后将所述第二关联数据与所述待处理的数据表进行绑定,通过两次加载循环实现了表与表关联,提高了数据处理的效率。
本实施例提供的装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
在一种可能的设计中,所述预定义关联集合中还包括代表所述待处理的数据表与第二目标对象之间关联关系的第三关联数据;所述第一关联数据中包含所述第一目标对象和所述第二目标对象之间的关联关系。第三获取模块,具体用于:通过所述预定义关联集合中的所述第三关联数据和所述第一关联数据获取待处理的数据表与所述第一目标对象的第二关联数据。
在一种可能的设计中,所述装置还包括:关联类型获取模块;关联类型获取模块,用于在所述通过所述预定义关联集合获取所述待处理的数据表与所述第一目标对象的第二关联数据之前,获取用户选择的关联类型,所述关联类型包括集合类型和单个类型。
第三获取模块,具体用于:判断所述关联类型是否为单个类型;若是,则通过所述预定义关联集合获取所述待处理的数据表与一个所述第一目标对象的第二关联数据;若否,则通过所述预定义关联集合获取所述待处理的数据表与两个以上所述第一目标对象的第二关联数据。
在一种可能的设计中,所述装置还包括:第二关联数据展示模块;第二关联数据展示模块,用于在所述通过所述预定义关联集合获取所述待处理的数据表与所述第一目标对象的第二关联数据之后,展示所述第二关联数据。
在一种可能的设计中,所述第二关联数据展示模块,具体用于:在所述用户选择的关联类型为集合类型时,以列表的形式展示所述第二关联数据对应的两个以上的第二目标对象;在所述用户选择的关联类型为单个类型时,展示所述第二关联数据对应的一个第二目标对象。
在一种可能的设计中,所述装置还包括:查询模块;查询模块,用于:接收查询所述待处理的数据表关联的第一目标对象的指令;根据所述指令从所述待处理的数据表绑定的第二关联数据中获取所述第一目标对象。
在一种可能的设计中,所述待处理的数据表为基于Rails框架的数据表。
为了实现所述数据处理的方法,本实施例提供了一种数据处理设备。图7为本申请实施例提供的数据处理设备的结构示意图。如图7所示,本实施例的数据处理设备70包括:处理器701以及存储器702;其中,存储器702,用于存储计算机执行指令;处理器701,用于执行存储器存储的计算机执行指令,以实现上述实施例中所执行的各个步骤。具体可以上述方法实施例中的相关描述。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上述的数据处理的方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。另外,在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。应理解,上述处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application SpecificIntegrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(PeripheralComponent,PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称:ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (8)
1.一种数据处理的方法,其特征在于,包括:
获取待处理的数据表;
获取所述待处理的数据表对应的预定义关联集合,所述预定义关联集合中包含基于第一目标对象的第一关联数据,所述预定义关联集合中还包括代表所述待处理的数据表与第二目标对象之间关联关系的第三关联数据;所述第一关联数据中包含所述第一目标对象和所述第二目标对象之间的关联关系;
通过所述预定义关联集合中的所述第三关联数据和所述第一关联数据获取待处理的数据表与所述第一目标对象的关联关系的第二关联数据;
将所述第二关联数据与所述待处理的数据表进行绑定,得到具有所述第二关联数据的数据表;
所述通过所述预定义关联集合中的所述第三关联数据和所述第一关联数据获取待处理的数据表与所述第一目标对象的关联关系的第二关联数据之前,还包括:
获取用户选择的关联类型,所述关联类型包括集合类型和单个类型;
所述通过所述预定义关联集合中的所述第三关联数据和所述第一关联数据获取待处理的数据表与所述第一目标对象的关联关系的第二关联数据,包括:
判断所述关联类型是否为单个类型;
若是,则通过所述预定义关联集合获取所述待处理的数据表与一个所述第一目标对象的第二关联数据;
若否,则通过所述预定义关联集合获取所述待处理的数据表与两个以上所述第一目标对象的第二关联数据。
2.根据权利要求1所述的方法,其特征在于,所述通过所述预定义关联集合中的所述第三关联数据和所述第一关联数据获取待处理的数据表与所述第一目标对象的关联关系的第二关联数据之后,还包括:
展示所述第二关联数据。
3.根据权利要求2所述的方法,其特征在于,所述展示所述第二关联数据,包括:
若所述用户选择的关联类型为集合类型,则以列表的形式展示所述第二关联数据对应的两个以上的第二目标对象;
若所述用户选择的关联类型为单个类型,则展示所述第二关联数据对应的一个第二目标对象。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
接收查询所述待处理的数据表关联的第一目标对象的指令;
根据所述指令从所述待处理的数据表绑定的第二关联数据中获取所述第一目标对象。
5.根据权利要求1所述的方法,其特征在于,所述待处理的数据表为基于Rails框架的数据表。
6.一种数据处理的装置,其特征在于,包括:
第一获取模块,用于获取待处理的数据表;
第二获取模块,用于获取所述待处理的数据表对应的预定义关联集合,所述预定义关联集合中包含基于第一目标对象的第一关联数据,所述预定义关联集合中还包括代表所述待处理的数据表与第二目标对象之间关联关系的第三关联数据;所述第一关联数据中包含所述第一目标对象和所述第二目标对象之间的关联关系;
第三获取模块,用于通过所述预定义关联集合中的所述第三关联数据和所述第一关联数据获取待处理的数据表与所述第一目标对象的关联关系的第二关联数据;
绑定模块,用于将所述第二关联数据与所述待处理的数据表进行绑定,得到具有所述第二关联数据的数据表;
关联类型获取模块,用于在所述通过所述预定义关联集合中的所述第三关联数据和所述第一关联数据获取待处理的数据表与所述第一目标对象的关联关系的第二关联数据之前, 获取用户选择的关联类型,所述关联类型包括集合类型和单个类型;
所述第三获取模块,具体用于判断所述关联类型是否为单个类型;若是,则通过所述预定义关联集合获取所述待处理的数据表与一个所述第一目标对象的第二关联数据;若否,则通过所述预定义关联集合获取所述待处理的数据表与两个以上所述第一目标对象的第二关联数据。
7.一种数据处理设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1-5任一项所述的数据处理的方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1-5任一项所述的数据处理的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010143901.1A CN111367914B (zh) | 2020-03-04 | 2020-03-04 | 数据处理的方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010143901.1A CN111367914B (zh) | 2020-03-04 | 2020-03-04 | 数据处理的方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111367914A CN111367914A (zh) | 2020-07-03 |
CN111367914B true CN111367914B (zh) | 2023-09-12 |
Family
ID=71206493
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010143901.1A Active CN111367914B (zh) | 2020-03-04 | 2020-03-04 | 数据处理的方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111367914B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108268586A (zh) * | 2017-09-22 | 2018-07-10 | 广东神马搜索科技有限公司 | 跨多数据表的数据处理方法、装置、介质和计算设备 |
CN109144997A (zh) * | 2018-06-11 | 2019-01-04 | 玖富金科控股集团有限责任公司 | 数据关联方法、装置及存储介质 |
CN109582676A (zh) * | 2018-11-30 | 2019-04-05 | 广州供电局有限公司 | 电力数据处理方法、装置、计算机设备和存储介质 |
CN109766345A (zh) * | 2019-01-10 | 2019-05-17 | 深圳前海微众银行股份有限公司 | 元数据处理方法及装置、设备、可读存储介质 |
-
2020
- 2020-03-04 CN CN202010143901.1A patent/CN111367914B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108268586A (zh) * | 2017-09-22 | 2018-07-10 | 广东神马搜索科技有限公司 | 跨多数据表的数据处理方法、装置、介质和计算设备 |
CN109144997A (zh) * | 2018-06-11 | 2019-01-04 | 玖富金科控股集团有限责任公司 | 数据关联方法、装置及存储介质 |
CN109582676A (zh) * | 2018-11-30 | 2019-04-05 | 广州供电局有限公司 | 电力数据处理方法、装置、计算机设备和存储介质 |
CN109766345A (zh) * | 2019-01-10 | 2019-05-17 | 深圳前海微众银行股份有限公司 | 元数据处理方法及装置、设备、可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111367914A (zh) | 2020-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109918594B (zh) | 一种信息显示方法及装置 | |
CN113704243A (zh) | 数据分析方法、装置、计算机装置及存储介质 | |
CN108536739B (zh) | 元数据敏感信息字段识别方法、装置、设备及存储介质 | |
CN109086456B (zh) | 数据索引方法及装置 | |
CN113268500B (zh) | 业务处理方法、装置及电子设备 | |
CN113704307A (zh) | 数据查询方法、装置、服务器及计算机可读存储介质 | |
CN113849748A (zh) | 信息展示方法、装置、电子设备及可读存储介质 | |
CN110489032B (zh) | 用于电子书的词典查询方法及电子设备 | |
CN111488371A (zh) | 一种数据查询方法和装置 | |
CN111367914B (zh) | 数据处理的方法、装置、设备及存储介质 | |
CN113377876A (zh) | 基于Domino平台的数据分库处理方法、装置及平台 | |
CN112231342A (zh) | 一种多条件分页查询优化方法、系统、终端及存储介质 | |
CN112069175A (zh) | 数据查询的方法、装置及电子设备 | |
CN110580312B (zh) | 数据查询方法、装置及计算机可读存储介质 | |
CN117271571A (zh) | 数据库唯一性约束处理方法、装置、设备及存储介质 | |
CN111507636A (zh) | 业务流程运行状态分析方法及系统 | |
CN111737542B (zh) | 药品实体信息的搜索方法及存储介质 | |
CN116263770A (zh) | 基于数据库的业务数据存储方法、装置、终端设备及介质 | |
CN111228815B (zh) | 处理游戏的配置表的方法、装置、存储介质和系统 | |
CN112434056A (zh) | 一种详情数据的查询方法及装置 | |
US10007696B2 (en) | Feed for expecting entities for address books | |
CN114912004A (zh) | 一种数据展示方法、装置、电子设备及存储介质 | |
CN116662621A (zh) | 一种数据查询方法、装置、计算机设备及存储介质 | |
CN117688011A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN117668015A (zh) | 数据查询方法、装置、电子设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |