CN117349321A - 一种文档数据库多表连接查询方法及装置 - Google Patents

一种文档数据库多表连接查询方法及装置 Download PDF

Info

Publication number
CN117349321A
CN117349321A CN202311643055.XA CN202311643055A CN117349321A CN 117349321 A CN117349321 A CN 117349321A CN 202311643055 A CN202311643055 A CN 202311643055A CN 117349321 A CN117349321 A CN 117349321A
Authority
CN
China
Prior art keywords
query
data
reference table
node
distributed cluster
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.)
Granted
Application number
CN202311643055.XA
Other languages
English (en)
Other versions
CN117349321B (zh
Inventor
孟江华
姜栋琛
董鸿毅
王致茹
李磊
陈群
刘海龙
崔文辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kmerit Suzhou Information Science & Technology Co ltd
Taicang Yangtze River Delta Research Institute of Northwestern Polytechnical University
Original Assignee
Kmerit Suzhou Information Science & Technology Co ltd
Taicang Yangtze River Delta Research Institute of Northwestern Polytechnical University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Kmerit Suzhou Information Science & Technology Co ltd, Taicang Yangtze River Delta Research Institute of Northwestern Polytechnical University filed Critical Kmerit Suzhou Information Science & Technology Co ltd
Priority to CN202311643055.XA priority Critical patent/CN117349321B/zh
Publication of CN117349321A publication Critical patent/CN117349321A/zh
Application granted granted Critical
Publication of CN117349321B publication Critical patent/CN117349321B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (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

一种文档数据库多表连接查询方法及装置
技术领域
本发明涉及数据处理技术领域,尤其涉及一种文档数据库多表连接查询方法及装置。
背景技术
在进行数据查询和读取时,文档数据库作为一种非关系型数据库管理系统,由于采用了不同于关系型数据库的数据模型和查询语言,无法使用关系型数据库中的多表连接操作,且在数据以文档形成存储的文档数据库中,由于各个文档不存在预定义的模式与固定的键值关系,也导致文档数据库无法进行多表连接操作。
文档数据库提供了以下两种数据查询与读取功能:采用嵌套文档和数据的存储方法将相关数据嵌套在一个文档中,以在一个文档中表示多个表之间的关系;通过在文档中存储其他文档的引用,来建立文档之间的关联关系,以进行数据的查询和聚合。
但以上两种方法仍存在着以下问题:当较多的表存在关联时,嵌套文档和数据的方法需要在多个文档中重复存储相同数据,增加了存储空间的占用率,且为了保持数据的一致性在数据更新时需要进行更多的更新操作,操作繁琐、时间成本高;在采用文档引用的方法时,进行查询时需要根据外键或引用字段进行其他表的数据的调用,产生了额外的查询开销,且分布式集群环境中数据分布在不同节点时,节点之间数据的传输导致了进一步的网络开销,降低了查询性能。因此,目前亟需一种文档数据库的数据查询方法以解决现有技术中存在的至少一个问题。
发明内容
有鉴于此,本发明实施例提供一种文档数据库多表连接查询方法及装置,通过将连接键作为引用表的分片键,具有数值接近的分片键的文档位于相同分片,将分片平均分布至不同的节点中,从而使得在进行查询时,分布式集群中的每个节点只需要对本地的数据进行查询,提高了数据读取效率,并通过查询指令多线程并行执行,提高了数据查询效率。
为实现上述目的,根据本发明实施例的一个方面,提供了一种文档数据库多表连接查询方法。
本发明实施例的一种文档数据库多表连接查询方法包括:
基于数据表的连接关系确定连接模式;
将上述连接模式中的数据表转换为引用表,采用连接键作为分片键,对上述引用表进行分片;
将分片后的引用表分布在分布式集群中的每个节点中;
将查询指令分布至上述分布式集群中的节点上,并基于查询指令进行数据查询;
汇总上述分布式集群中的每个节点的查询结果,生成总查询结果并进行反馈。
可选地,在上述将分片后的引用表分布在分布式集群中的每个节点中之后,上述方法还包括:
采用目标配置数据库对上述每个引用表和上述分布式集群中的每个节点的分片进行配置信息的记录,并获取最大线程数。
可选地,上述采用目标配置数据库对上述每个引用表和上述分布式集群中的每个节点的分片进行配置信息的记录,并获取最大线程数,包括:
采用目标配置数据库对上述每个引用表和上述分布式集群中的每个节点的分片进行配置信息的记录;
基于上述目标配置数据库获取上述每个引用表的数据量;
比较上述每个引用表的数据量,并获取数据量最大的目标引用表;
获取上述目标引用表的分片信息;
根据上述分片信息确定最大线程数。
可选地,上述将查询指令分布至上述分布式集群中的节点上,并基于查询指令进行数据查询,包括:
基于上述最大线程数,将上述查询指令分布到上述分布式集群中的节点上,并基于查询指令进行数据查询,以使接收到查询指令的节点对本节点内引用表及分片的数据进行查询。
可选地,上述方法还包括:
在进行数据查询时,基于每个引用表的数据量和连接顺序进行当前查询结果的存入缓存操作。
可选地,上述将分片后的引用表分布在分布式集群中的每个节点中,包括:
获取上述引用表的数据量;
将上述引用表的数据量与第一预设数据量阈值进行对比;
响应于上述引用表的数据量大于上述第一预设数据量阈值,将上述引用表的分片平均分布在上述分布式集群中的每个节点中。
可选地,上述将分片后的引用表分布在分布式集群中的每个节点中,还包括:
响应于上述引用表的数据量小于上述第一预设数据量阈值,将上述引用表复制并分发至上述分布式集群中的每个节点中。
为实现上述目的,根据本发明实施例的又一方面,提供了一种文档数据库多表连接查询装置。
本发明实施例的一种文档数据库多表连接查询装置包括:确定模块,用于基于数据表的连接关系确定连接模式;
转换模块,用于将上述连接模式中的数据表转换为引用表,采用连接键作为分片键,对上述引用表进行分片;
分布模块,用于将分片后的引用表分布在分布式集群中的每个节点中;
查询模块,用于将查询指令分布至上述分布式集群中的节点上,并基于查询指令进行数据查询;
汇总模块,用于汇总上述分布式集群中的每个节点的查询结果,生成总查询结果并进行反馈。
为实现上述目的,根据本发明实施例的又一方面,提供了一种用于文档数据库多表连接查询的电子设备。
本发明实施例的一种文档数据库多表连接查询的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当上述一个或多个程序被上述一个或多个处理器执行,使得上述一个或多个处理器实现本发明实施例的一种文档数据库多表连接查询方法。
为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读存储介质。
本发明实施例的一种计算机可读存储介质,其上存储有计算机程序,上述程序被处理器执行时实现本发明实施例的一种文档数据库多表连接查询方法。
上述发明中的一个实施例具有如下优点或有益效果:本发明通过将连接键作为引用表的分片键,避免了嵌套文档重复存储数据的问题,解决了采用随机生成的数据表id作为分片键不能反映文档顺序的问题,由于连接键的有序性,在进行引用表分片分布时,具有数值接近的分片键的文档位于相同分片,将分片平均分布至不同的节点中,从而使得在进行查询时,分布式集群中的每个节点只需要对本地的数据进行查询,提高了数据读取效率,这样,通过将数据分布在不同的节点中,不同的节点同时进行本地数据查询,最后汇总查询结果,实现了查询本地化与数据查询的并行处理,减少了不同节点的数据传输引起的网络延迟,提高了查询效率。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的文档数据库多表连接查询方法的流程示意图;
图2是根据本发明实施例的连接表的连接模式示意图;
图3是根据本发明实施例的引用表结构的示意图;
图4是根据本发明实施例的基于查询指令从不同服务器进行数据读取的示意图;
图5是根据本发明实施例的文档数据库多表连接查询装置的主要模块的示意图;
图6是本发明实施例可以应用于其中的示例性系统架构图;
图7是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
需要指出的是,在不冲突的情况下,本发明的实施例以及实施例中的技术特征可以相互结合。
需要说明的是,本发明的技术方案中,所涉及的用户个人信息的采集、收集、更新、分析、处理、使用、传输、存储等方面,均符合相关法律法规的规定,被用于合法的用途,且不违背公序良俗。对用户个人信息采取必要措施,防止对用户个人信息数据的非法访问,维护用户个人信息安全、网络安全和国家安全。
图1是根据本发明实施例的文档数据库多表连接查询方法的主要步骤的示意图。
如图1所示,本发明实施例的文档数据库多表连接查询方法主要包括以下步骤:
步骤S101,基于数据表的连接关系确定连接模式;
步骤S102,将上述连接模式中的数据表转换为引用表,采用连接键作为分片键,对上述引用表进行分片;
步骤S103,将分片后的引用表分布在分布式集群中的每个节点中;
步骤S104,将查询指令分布至上述分布式集群中的节点上,并基于查询指令进行数据查询;
步骤S105,汇总上述分布式集群中的每个节点的查询结果,生成总查询结果并进行反馈。
具体地,在文档数据库中,数据是以数据表为单位进行组织的,根据实际业务场景中应用的存放基础数据的表的结构、数据字典等可以创建数据表,每个数据表中可以包括不同的数据量、字段与数据类型,表征应用程序中的各种实体的相关属性与关联关系,每个实体具有记录自身数据的一个数据表。
获取数据表之间的连接关系。数据表之间的连接关系表征实体之间的联系。
根据数据表的连接关系可以确定数据表之间的连接模式,表征数据表之间连接的确定性顺序。为了确保数据的稳定性和一致性,以及由于成本的约束,数据表的连接关系一般不做更改,在执行连接操作时,连接条件与连接字段不会发生变化,不受时间或数据变化影响,因而数据表之间的连接模式属于一种固定的连接模式。如图2所示,存在四张数据表Table_A、Table_B、Table_C和Table_D,每个表中具有不同的字段,Table_A和Table_B之间具有连接关系,Table_A和Table_C之间具有连接关系,Table_B和Table_D之间具有连接关系,其中,Table_A和Table_B的连接条件为a1=b1,因此,在Table_A和Table_B的连接关系中,对于Table_A来说,连接键为字段a1。
将已经确定好连接模式的数据表转换为引用表的形式存储至文档数据库中,在相互存在连接关系的引用表之间采用引用字段进行引用。作为示例,如图3所示,在Table_A存在对Table_B和Table_C的引用时,可以将Table_B和Table_C的id即B_id和C_id设置为引用字段以实现Table_A对Table_B和Table_C的引用;在Table_B存在对Table_D的引用时,可以将Table_D的id即D_id设置为引用字段以实现Table_B对Table_D的引用。
将连接键作为分片键,将引用表中的数据分配到不同的分片(shard)中,以避免采用数据表id作为分片键进行分片。其中,分片操作是将数据集划分为数据块并分配至不同的分片的过程。作为示例,在Table_A中包含100万个文档时,可以将其分成8个分片,分片结构可以是:shard5中存储a1的值为1-5520的文档;shard6中存储a1的值为5521-11053的文档;shard7中存储a1的值为11054-16539的文档;shard3中存储a1的值为16540-22009的文档;shard0中存储a1的值为22010-27483的文档;shard1中存储a1的值为27484-32989的文档;shard4中存储a1的值为32990-38516的文档;shard2中存储a1的值为38517-1000000的文档。其中,每个shard表示一个分片,通过对分片键进行升序排列,将具有与分片键数值相近的文档存储在一个分片中。这里,文档是文档数据库的最小单位,每个文档相当于引用表中的一条数据。
作为另一示例,当将一个引用表Table_X中的100个文档分片成四个分片时,分片键为x1,x1的数值为1-100的随机数,可以将Table_X分为shard1:1-25、shard2:26-50、shard3:51-75、shard4:76-100四个分片,并将四个分片分布在分布式集群的不同节点中,这时,具有与分片键数值相近的文档可以存储在一个分片中,如,当x1为15时,数值相近的文档与15一同分布在第一个分片shard1中。在这种情况下,在进行数据查询时,可以将循环条件为0<x1<26,实现每个节点只需要对本地数据进行查询,避免了跨分片的数据传输与网络延迟,可以更快获取所需数据。
在一种可选的实施例中,在上述将分片后的引用表分布在分布式集群中的每个节点中之后,上述方法还包括:
采用目标配置数据库对上述每个引用表和上述分布式集群中的每个节点的分片进行配置信息的记录,并获取最大线程数。
具体地,文档数据库可以通过其自身的驱动程序与存储有分片的分布式集群的节点进行连接,以文档数据库中的目标配置数据库对每个引用表和分布式集群中的每个节点的分片,以及连接关系进行配置信息的记录。
在一种可选的实施例中,上述采用目标配置数据库对上述每个引用表和上述分布式集群中的每个节点的分片进行配置信息的记录,并获取最大线程数,包括:
采用目标配置数据库对上述每个引用表和上述分布式集群中的每个节点的分片进行配置信息的记录;
基于上述目标配置数据库获取上述每个引用表的数据量;
比较上述每个引用表的数据量,并获取数据量最大的目标引用表;
获取上述目标引用表的分片信息;
根据上述分片信息确定最大线程数。
进一步地,文档数据库中的目标配置数据库可以是config数据库。config数据库是文档数据库中用于存储配置信息的系统数据库,用于管理和存储分片与引用表的配置数据,采用config数据库可以实现对于多表结构的记录与描述。其中,config数据库中包括记录数据块信息的chunks表和记录多表连接的引用表信息的collections表。
基于collections表获取多表连接的引用表中数据量最大的引用表,确定该数据量最大的引用表的全局唯一标识符(Universally Unique Identifier ,UUID),遍历chunks表以获取所有包含上述引用表UUID字段的分片的id,将上述id的shard中的数据块进行多线程划分后存入该shard的数据列表中。
根据数据块的多线程划分情况获取数据列表的数据条数,由于上述数据列表是数据量最大的引用表的数据列表,因此将上述数据条数作为最大线程数,即最大并行度。这里,可以通过size()方法获取数据列表的数据条数,其中,size()在编程中是用于描述数据列表中元素数量的方法。在进行数据查询时,根据最大线程数,通过循环迭代将每个线程依次分布至分布式集群的不同节点中,实现线程数的平均分配。
更进一步地,在进行数据查询的过程中,线程指定了读取值域范围,从而使得在执行每个线程的过程中,可以读取每个节点本地的分片中数值相近的文档。如图4所示,将Table_A的分片分别存储在不同的服务器中,每个分片中存有与a1数值相近的文档,将执行查询指令的线程平均分配至不同的服务器中,每个服务器对本地的shard进行读取,从而避免了跨节点导致的数据传输延迟与网络延迟。
在一种可选的实施例中,上述将查询指令分布至上述分布式集群中的节点上,并基于查询指令进行数据查询,包括:
基于上述最大线程数,将上述查询指令分布到上述分布式集群中的节点上,并基于查询指令进行数据查询,以使接收到查询指令的节点对本节点内引用表及分片的数据进行查询。
在确定线程数后,将执行查询指令的线程分布至分布式集群的节点中,以进行数据查询。这里,在执行查询指令进行多线程划分时,每个查询指令的线程数均等于最大线程数,在接收到查询指令后,根据最大线程数可以通过循环迭代将上述查询指令的线程平均分布在分布式集群的不同节点中,实现了并行度的自动划分,避免了需要人工反复指定并行度。
在一种可选的实施例中,上述方法还包括:
在进行数据查询时,基于每个引用表的数据量和连接顺序进行当前查询结果的存入缓存操作。
这里,在进行数据查询时,可以将数据量小于第二预设数量阈值且连接顺序排序位于预设连接顺序排序之后的引用表或分片的当前查询结果存入缓存,实现多线程数据共享,以提高查询效率。
在一种可选的实施例中,上述将分片后的引用表分布在分布式集群中的每个节点中,包括:
获取上述引用表的数据量;
将上述引用表的数据量与第一预设数据量阈值进行对比;
响应于上述引用表的数据量大于上述第一预设数据量阈值,将上述引用表的分片平均分布在上述分布式集群中的每个节点中。
在一种可选的实施例中,上述将分片后的引用表分布在分布式集群中的每个节点中,还包括:
响应于上述引用表的数据量小于上述第一预设数据量阈值,将上述引用表复制并分发至上述分布式集群中的每个节点中。
通过识别引用表的数据量,并将数据量与第一预设数据量阈值进行对比,对数据量大于第一预设数据量阈值的引用表进行分片,将分片平均分布在分布式集群的不同节点中;对数据量小于第一预设数据量阈值的引用表进行复制,形成复制集合,将复制集合分发至分布式集群的每个节点中,以避免跨服务器进行多表连接操作。这里,第一预设数据量阈值可以根据服务器性能与配置确定,在此不做限定。
进一步地,将数据量大于第一预设数据量阈值的引用表分为目标分片数量的分片,将目标数量的分片平均分发至不同的节点中进行存储,以实现在执行查询指令时,分布式集群中的不同服务器可以并行查询的功能。
根据本发明实施例的技术方案,通过将连接键作为引用表的分片键,避免了嵌套文档重复存储数据的问题,解决了采用随机生成的数据表id作为分片键不能反映文档顺序的问题,由于连接键的有序性,在进行引用表分片分布时,具有数值接近的分片键的文档位于相同分片,将分片平均分布至不同的节点中,从而使得在进行查询时,分布式集群中的每个节点只需要对本地的数据进行查询,提高了数据读取效率,这样,通过将数据分布在不同的节点中,不同的节点同时进行本地数据查询,最后汇总查询结果,实现了查询本地化与数据查询的并行处理,减少了不同节点的数据传输引起的网络延迟,提高了查询效率。
图5是根据本发明实施例的文档数据库多表连接查询装置的主要模块的示意图。
如图5所示,本发明实施例的文档数据库多表连接查询装置500包括:确定模块501,用于基于数据表的连接关系确定连接模式;转换模块502,用于将上述连接模式中的数据表转换为引用表,采用连接键作为分片键,对上述引用表进行分片;分布模块503,用于将分片后的引用表分布在分布式集群中的每个节点中;查询模块504,用于将查询指令分布至上述分布式集群中的节点上,并基于查询指令进行数据查询;汇总模块505,用于汇总上述分布式集群中的每个节点的查询结果,生成总查询结果并进行反馈。
在本发明一种可选的实施例中,在分布模块503后,上述装置还包括:获取模块,用于采用目标配置数据库对上述每个引用表和上述分布式集群中的每个节点的分片进行配置信息的记录,并获取最大线程数。
在本发明一种可选的实施例中,上述采用目标配置数据库对上述每个引用表和上述分布式集群中的每个节点的分片进行配置信息的记录,并获取最大线程数,包括:采用目标配置数据库对上述每个引用表和上述分布式集群中的每个节点的分片进行配置信息的记录;基于上述目标配置数据库获取上述每个引用表的数据量;比较上述每个引用表的数据量,并获取数据量最大的目标引用表;获取上述目标引用表的分片信息;根据上述分片信息确定最大线程数。
在本发明一种可选的实施例中,上述查询模块504还用于:基于上述最大线程数,将上述查询指令分布到上述分布式集群中的节点上,并基于查询指令进行数据查询,以使接收到查询指令的节点对本节点内引用表及分片的数据进行查询。
在本发明一种可选的实施例中,上述装置还包括:共享模块,用于在进行数据查询时,基于每个引用表的数据量和连接顺序进行当前查询结果的存入缓存操作。
在本发明一种可选的实施例中,上述分布模块503还用于:获取上述引用表的数据量;将上述引用表的数据量与第一预设数据量阈值进行对比;响应于上述引用表的数据量大于上述第一预设数据量阈值,将上述引用表的分片平均分布在上述分布式集群中的每个节点中。
在本发明一种可选的实施例中,上述分布模块503还用于:响应于上述引用表的数据量小于上述第一预设数据量阈值,将上述引用表复制并分发至上述分布式集群中的每个节点中。
根据本发明实施例的技术方案,通过将连接键作为引用表的分片键,避免了嵌套文档重复存储数据的问题,解决了采用随机生成的数据表id作为分片键不能反映文档顺序的问题,由于连接键的有序性,在进行引用表分片分布时,具有数值接近的分片键的文档位于相同分片,将分片平均分布至不同的节点中,从而使得在进行查询时,分布式集群中的每个节点只需要对本地的数据进行查询,提高了数据读取效率,这样,通过将数据分布在不同的节点中,不同的节点同时进行本地数据查询,最后汇总查询结果,实现了查询本地化与数据查询的并行处理,减少了不同节点的数据传输引起的网络延迟,提高了查询效率。
图6示出了可以应用本发明实施例的文档数据库多表连接查询方法或文档数据库多表连接查询装置的示例性系统架构600。
如图6所示,系统架构600可以包括终端设备601、602、603,网络604和服务器605。网络604用以在终端设备601、602、603和服务器605之间提供通信链路的介质。网络604可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备601、602、603通过网络604与服务器605交互,以接收或发送数据等。终端设备601、602、603上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备601、602、603可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器605可以是提供各种服务的服务器,例如对用户利用终端设备601、602、603所发送的查询指令提供支持的后台管理服务器。对引用表进行分片并分布至不同的后台管理服务器之后,后台管理服务器可以基于查询指令进行数据查询等处理,并将处理结果(例如查询结果)反馈给终端设备。
需要说明的是,本发明实施例所提供的文档数据库多表连接查询方法一般由服务器605执行,相应地,文档数据库多表连接查询装置一般设置于服务器605中。
应该理解,图6中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图7,其示出了适于用来实现本发明实施例的终端设备的计算机系统700的结构示意图。图7示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,计算机系统700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有系统700操作所需的各种程序和数据。CPU701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)第一接口705也连接至总线704。
以下部件连接至I/O第一接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络第一接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O第一接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(CPU)701执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括确定模块、转换模块、分布模块、查询模块和汇总模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,确定模块还可以被描述为“基于数据表的连接关系确定连接模式的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:基于数据表的连接关系确定连接模式;将上述连接模式中的数据表转换为引用表,采用连接键作为分片键,对上述引用表进行分片;将分片后的引用表分布在分布式集群中的每个节点中;将查询指令分布至上述分布式集群中的节点上,并基于查询指令进行数据查询;汇总上述分布式集群中的每个节点的查询结果,生成总查询结果并进行反馈。
根据本发明实施例的技术方案,通过将连接键作为引用表的分片键,避免了嵌套文档重复存储数据的问题,解决了采用随机生成的数据表id作为分片键不能反映文档顺序的问题,由于连接键的有序性,在进行引用表分片分布时,具有数值接近的分片键的文档位于相同分片,将分片平均分布至不同的节点中,从而使得在进行查询时,分布式集群中的每个节点只需要对本地的数据进行查询,提高了数据读取效率,这样,通过将数据分布在不同的节点中,不同的节点同时进行本地数据查询,最后汇总查询结果,实现了查询本地化与数据查询的并行处理,减少了不同节点的数据传输引起的网络延迟,提高了查询效率。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (10)

1.一种文档数据库多表连接查询方法,其特征在于,包括:
基于数据表的连接关系确定连接模式;
将所述连接模式中的数据表转换为引用表,采用连接键作为分片键,对所述引用表进行分片;
将分片后的引用表分布在分布式集群中的每个节点中;
将查询指令分布至所述分布式集群中的节点上,并基于查询指令进行数据查询;
汇总所述分布式集群中的每个节点的查询结果,生成总查询结果并进行反馈。
2.根据权利要求1所述的文档数据库多表连接查询方法,其特征在于,在所述将分片后的引用表分布在分布式集群中的每个节点中之后,所述方法还包括:
采用目标配置数据库对所述每个引用表和所述分布式集群中的每个节点的分片进行配置信息的记录,并获取最大线程数。
3.根据权利要求2所述的文档数据库多表连接查询方法,其特征在于,所述采用目标配置数据库对所述每个引用表和所述分布式集群中的每个节点的分片进行配置信息的记录,并获取最大线程数,包括:
采用目标配置数据库对所述每个引用表和所述分布式集群中的每个节点的分片进行配置信息的记录;
基于所述目标配置数据库获取所述每个引用表的数据量;
比较所述每个引用表的数据量,并获取数据量最大的目标引用表;
获取所述目标引用表的分片信息;
根据所述分片信息确定最大线程数。
4.根据权利要求3所述的文档数据库多表连接查询方法,其特征在于,所述将查询指令分布至所述分布式集群中的节点上,并基于查询指令进行数据查询,包括:
基于所述最大线程数,将所述查询指令分布到所述分布式集群中的节点上,并基于查询指令进行数据查询,以使接收到查询指令的节点对本节点内引用表及分片的数据进行查询。
5.根据权利要求1所述的文档数据库多表连接查询方法,其特征在于,所述方法还包括:
在进行数据查询时,基于每个引用表的数据量和连接顺序进行当前查询结果的存入缓存操作。
6.根据权利要求1所述的文档数据库多表连接查询方法,其特征在于,所述将分片后的引用表分布在分布式集群中的每个节点中,包括:
获取所述引用表的数据量;
将所述引用表的数据量与第一预设数据量阈值进行对比;
响应于所述引用表的数据量大于所述第一预设数据量阈值,将所述引用表的分片平均分布在所述分布式集群中的每个节点中。
7.根据权利要求6所述的文档数据库多表连接查询方法,其特征在于,所述将分片后的引用表分布在分布式集群中的每个节点中,还包括:
响应于所述引用表的数据量小于所述第一预设数据量阈值,将所述引用表复制并分发至所述分布式集群中的每个节点中。
8.一种文档数据库多表连接查询装置,其特征在于,包括:
确定模块,用于基于数据表的连接关系确定连接模式;
转换模块,用于将所述连接模式中的数据表转换为引用表,采用连接键作为分片键,对所述引用表进行分片;
分布模块,用于将分片后的引用表分布在分布式集群中的每个节点中;
查询模块,用于将查询指令分布至所述分布式集群中的节点上,并基于查询指令进行数据查询;
汇总模块,用于汇总所述分布式集群中的每个节点的查询结果,生成总查询结果并进行反馈。
9.一种用于文档数据库多表连接查询的电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-7中任一所述的方法。
CN202311643055.XA 2023-12-04 2023-12-04 一种文档数据库多表连接查询方法及装置 Active CN117349321B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311643055.XA CN117349321B (zh) 2023-12-04 2023-12-04 一种文档数据库多表连接查询方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311643055.XA CN117349321B (zh) 2023-12-04 2023-12-04 一种文档数据库多表连接查询方法及装置

Publications (2)

Publication Number Publication Date
CN117349321A true CN117349321A (zh) 2024-01-05
CN117349321B CN117349321B (zh) 2024-03-05

Family

ID=89371424

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311643055.XA Active CN117349321B (zh) 2023-12-04 2023-12-04 一种文档数据库多表连接查询方法及装置

Country Status (1)

Country Link
CN (1) CN117349321B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102779185A (zh) * 2012-06-29 2012-11-14 浙江大学 一种高可用分布式全文索引方法
US20130332484A1 (en) * 2012-06-06 2013-12-12 Rackspace Us, Inc. Data Management and Indexing Across a Distributed Database
CN106611064A (zh) * 2017-01-03 2017-05-03 北京华胜信泰数据技术有限公司 分布式关系数据库的数据处理方法和装置
CN110134800A (zh) * 2019-04-17 2019-08-16 深圳壹账通智能科技有限公司 一种文档关系可视化处理方法及装置
CN113641706A (zh) * 2020-05-11 2021-11-12 北京沃东天骏信息技术有限公司 数据查询的方法和装置
CN114372174A (zh) * 2022-01-13 2022-04-19 集美大学 一种xml文档分布式查询方法及系统
CN114443663A (zh) * 2022-01-27 2022-05-06 中国建设银行股份有限公司 数据表处理方法、装置、设备及介质
CN114547253A (zh) * 2022-03-03 2022-05-27 北京伽睿智能科技集团有限公司 一种基于知识库应用的语义搜索方法
CN116578609A (zh) * 2023-05-10 2023-08-11 山东浪潮新基建科技有限公司 一种基于倒排索引的分布式搜索方法及装置
CN116775712A (zh) * 2023-07-05 2023-09-19 京东科技信息技术有限公司 联表查询方法、装置、电子设备、分布式系统和存储介质
CN116955413A (zh) * 2023-07-25 2023-10-27 北京火山引擎科技有限公司 基于线上分析处理的数据查询方法、装置、介质及设备

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130332484A1 (en) * 2012-06-06 2013-12-12 Rackspace Us, Inc. Data Management and Indexing Across a Distributed Database
CN102779185A (zh) * 2012-06-29 2012-11-14 浙江大学 一种高可用分布式全文索引方法
CN106611064A (zh) * 2017-01-03 2017-05-03 北京华胜信泰数据技术有限公司 分布式关系数据库的数据处理方法和装置
CN110134800A (zh) * 2019-04-17 2019-08-16 深圳壹账通智能科技有限公司 一种文档关系可视化处理方法及装置
CN113641706A (zh) * 2020-05-11 2021-11-12 北京沃东天骏信息技术有限公司 数据查询的方法和装置
CN114372174A (zh) * 2022-01-13 2022-04-19 集美大学 一种xml文档分布式查询方法及系统
CN114443663A (zh) * 2022-01-27 2022-05-06 中国建设银行股份有限公司 数据表处理方法、装置、设备及介质
CN114547253A (zh) * 2022-03-03 2022-05-27 北京伽睿智能科技集团有限公司 一种基于知识库应用的语义搜索方法
CN116578609A (zh) * 2023-05-10 2023-08-11 山东浪潮新基建科技有限公司 一种基于倒排索引的分布式搜索方法及装置
CN116775712A (zh) * 2023-07-05 2023-09-19 京东科技信息技术有限公司 联表查询方法、装置、电子设备、分布式系统和存储介质
CN116955413A (zh) * 2023-07-25 2023-10-27 北京火山引擎科技有限公司 基于线上分析处理的数据查询方法、装置、介质及设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
叶炜: "分布式数据库中间件中的查询优化", 《中国优秀硕士学位论文全文数据库信息科技辑》 *

Also Published As

Publication number Publication date
CN117349321B (zh) 2024-03-05

Similar Documents

Publication Publication Date Title
US9298774B2 (en) Changing the compression level of query plans
CN110019211A (zh) 关联索引的方法、装置和系统
US9984081B2 (en) Workload aware data placement for join-based query processing in a cluster
CN111797091A (zh) 数据库中数据查询的方法、装置、电子设备和存储介质
CN110909022A (zh) 一种数据查询方法和装置
CN112925859A (zh) 数据存储方法和装置
CN109947736B (zh) 实时计算的方法和系统
CN113312355A (zh) 一种数据管理的方法和装置
CN117349321B (zh) 一种文档数据库多表连接查询方法及装置
CN112783914B (zh) 优化语句的方法和装置
CN111723089A (zh) 一种基于列式存储格式处理数据的方法和装置
CN112115206A (zh) 一种处理对象存储元数据的方法和装置
CN111459980A (zh) 监控数据的存储和查询方法及装置
CN113297222A (zh) 报表数据的获取方法、装置、电子设备和存储介质
CN113760966A (zh) 基于异构数据库系统的数据处理方法和装置
CN108733668B (zh) 用于查询数据的方法和装置
CN112711572A (zh) 适用于分库分表的在线扩容方法和装置
CN112988857A (zh) 一种业务数据的处理方法和装置
CN112632016A (zh) 一种文件编辑方法、装置
CN115994145B (zh) 一种处理数据的方法和装置
CN117478535B (zh) 一种日志存储的方法和装置
CN113760972B (zh) 一种数据查找方法和装置
US11550793B1 (en) Systems and methods for spilling data for hash joins
CN113268488B (zh) 数据持久化的方法和装置
CN110334114B (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