CN111221827A - 基于图形处理器的数据库表连接方法、装置、计算机设备和存储介质 - Google Patents
基于图形处理器的数据库表连接方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN111221827A CN111221827A CN202010041890.6A CN202010041890A CN111221827A CN 111221827 A CN111221827 A CN 111221827A CN 202010041890 A CN202010041890 A CN 202010041890A CN 111221827 A CN111221827 A CN 111221827A
- Authority
- CN
- China
- Prior art keywords
- target
- database table
- hash
- key value
- value
- 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
Links
Images
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
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种基于图形处理器的数据库表连接方法、装置、计算机设备和存储介质。所述方法包括:获取第一数据库表和第二数据库表;获取所述第一数据库表的第一目标哈希表,并获取第一目标哈希表对应的位置指针数组和第一目标哈希表的目标位置数组;根据所述位置指针数组和所述目标位置数组,确定与第二数据库表进行连接的键值详情表;根据所述第一数据库表、第二数据库表以及所述键值详情表,确定目标连接表;其中,所述目标连接表中包括第一数据库表与第二数据库表进行连接的各个连接键值,以及每个连接键值分别在第一数据库表与第二数据库表中的位置。采用本方法能够提高表连接过程的快速性和准确性。
Description
技术领域
本申请涉及表连接技术领域,特别是涉及一种基于图形处理器的数据库表连接方法、装置、计算机设备和存储介质。
背景技术
随着科技的发展和人们生活质量的提高,用户可以利用智能手机上的应用软件完成打车、约车,比如打车软件,利用打车软件几乎可以实现随时随地打车、约车的目的,为用户的出行带来了便利。
关于用户使用打车软件打车的过程,数据库里的大表中记录了当前所有在线车辆信息,包括车辆实时位置、以及车辆是否载客等,数据库里的小表中记录了设定时间段(比如5秒)内接收到的用户打车请求,打车请求中包括有用户的定位位置,传统方法中对大表和小表进行关联操作时可以找出用户周围设定距离(比如3公里)内空载的车辆,使用中央处理器(CPU,central processing unit)进行两个表的连接操作时计算每个表的哈希表,或者使用图形处理器(Graphics Processing Units,GPU)进行两个表的连接操作时对两个表都要分别进行相关处理(比如排序处理),以此得到两个表的一次关联结果,也就是车客匹配结果,车客匹配成功了,说明用户使用打车软件打车成功。
传统方法中使用CPU计算每个表的哈希表,由于CPU计算能力较慢导致得到每个表的哈希表的速度较慢,使用GPU进行两个表的连接操作时由于要对大表进行排序处理,也会导致两个表的关联效率低,从而导致得到车客匹配结果的速度很慢。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高表连接速度的基于图形处理器的数据库表连接方法、装置、计算机设备和存储介质。
一种基于图形处理器的数据库表连接方法,所述方法包括:
获取第一数据库表和第二数据库表;其中,第一数据库表中包括I个键值,第二数据库表中包括K个键值,I、K均为正整数;
获取所述第一数据库表的第一目标哈希表,并获取第一目标哈希表对应的位置指针数组和第一目标哈希表的目标位置数组;其中,所述位置指针数组表征不同哈希值的首次出现位置,所述目标位置数组表征哈希值相同时对应键值在第一数据库表中的位置;
根据所述位置指针数组和所述目标位置数组,确定与第二数据库表进行连接的键值详情表;其中,所述键值详情表表征第二数据库表中每个键值在所述第一数据库表中出现的次数以及所述键值在所述第一数据库表中的首次位置;
根据所述第一数据库表、第二数据库表以及所述键值详情表,确定目标连接表;其中,所述目标连接表中包括第一数据库表与第二数据库表进行连接的各个连接键值,以及每个连接键值分别在第一数据库表与第二数据库表中的位置。
在其中一个实施例中,所述获取所述第一数据库表的第一目标哈希表,并获取第一目标哈希表对应的位置指针数组和第一目标哈希表的目标位置数组,包括:
确定所述第一数据库表中每个键值的哈希值,并对得到的各个哈希值进行哈希桶处理,得到M个哈希桶;其中,M为小于I的正整数;
对所述M个哈希桶进行排序处理,得到由排序后的M个哈希桶构成的第一目标哈希表;
将第一目标哈希表中每个哈希桶的首个哈希值在所述第一目标哈希表中的位置序列,确定为所述位置指针数组;
根据所述第一目标哈希表对所述第一数据库表中的I个键值进行排序处理,得到第一目标数据库表;
当第一目标数据库表中第i个键值和第i+1个键值不同、第一目标哈希表中第i个哈希值和第i+1个哈希值相同时,将第i+1个键值在第一目标数据库表中的位置,确定为所述目标位置数组中第i-1个位置的元素;其中,i=1、2、……、I;
当第一目标数据库表中第i个键值和第i+1个键值相同、第i+1个键值和第i+2个键值不同、且第一目标哈希表中第i个哈希值至第i+2个哈希值相同时,将第i+2个键值在第一目标数据库表中的位置,分别作为所述目标位置数组中第i-1个位置和第i个位置的元素;
当第一目标数据库表中第i个键值和第i+1个键值不同且第一目标哈希表中第i个哈希值和第i+1个哈希值不同时,确定所述目标位置数组中第i-1个位置的元素为空;
令i的值分别取1至I,分别执行所述确定所述目标位置数组中第0个位置的元素至第I-1个位置的元素的步骤;直至得到所述目标位置数组中的I个元素。
在其中一个实施例中,所述确定所述第一数据库表中每个键值的哈希值,包括:
获取图形处理器核心个数Q,并使用Q个图形处理器核心分别同步计算第一数据库表中I个键值的哈希值;其中,Q<I。
在其中一个实施例中,所述键值详情表包括K个键值详情时,所述根据所述位置指针数据和所述目标位置数据,确定与第二数据库表进行连接的键值详情表,包括:
获取第二数据库表的第二目标哈希表;
当第一目标哈希表中存在与第二目标哈希表中的第k个哈希值相同的目标哈希值时,判断所述目标哈希值在位置指针数组中的对应位置处的第一键值是否与第二数据库表中的第k个键值相同;
若相同,将所述第一目标数据库表中所述第一键值的个数和每个所述第一键值的位置,确定为第k个键值详情,并将k+1作为新的k,继续执行所述判断所述目标哈希值在位置指针数组中的对应位置处的第一键值是否与第二数据库表中的第k个键值相同的步骤,直至k=K为止;
若不相同,判断所述目标哈希值在所述目标位置数组中的对应位置处的第二键值是否与所述第k个键值相同;
当所述第二键值与所述第k个键值不相同时,则确定第k个键值详情为空,并将k+1作为新的k,并继续执行所述判断所述目标哈希值在位置指针数组中的对应位置处的第一键值是否与第二数据库表中的第k个键值相同的步骤,直至直至k=K为止;其中,k=1、2、……、K;
当所述第二键值与所述第k个键值相同时,则将所述第一目标数据库表中所述第二键值的个数和每个所述第二键值的位置,确定为第k个键值详情,并将k+1作为新的k,并继续执行所述判断所述目标哈希值在位置指针数组中的对应位置处的第一键值是否与第二数据库表中的第k个键值相同的步骤,直至k=K为止。
在其中一个实施例中,在所述获取第二数据库表的第二目标哈希表的步骤之后,所述方法还包括:
当第一目标哈希表中不存在与第二目标哈希表中的第k个哈希值相同的目标哈希值时,确定所述键值详情表中第k个键值详情为空。
在其中一个实施例中,所述根据所述第一数据库表、第二数据库表以及所述键值详情表,确定目标连接表,包括:
将所述键值详情表中至少出现一次的各个键值,确定为第一目标数据库表与第二数据库表进行连接的各个连接键值;其中,所述第一目标数据库表包括根据所述第一目标哈希表对所述第一数据库表中的I个键值进行排序处理后得到的数据库表;
根据所述连接键值、每个所述连接键值分别在第一目标数据库表中的第一位置以及在第二数据库表中的第二位置,生成所述目标连接表。
在其中一个实施例中,所述方法还包括:
将所述键值详情表中第1个键值至第k个键值在第一目标数据库表中出现的次数的总和,作为次数统计表中第k个位置的元素;
令k的值分别取1至K,分别得到次数统计表中第1个位置的元素至第K-1个位置的元素;其中,所述次数统计表中第0个位置的元素为0,k=1、2、……、K,K表示第二数据库表中包括的键值数量;
将所述次数统计表中第K-1个位置的元素,作为所述目标连接表中的连接键值总个数。
在其中一个实施例中,所述第二数据库表的确定过程包括:
获取数据库中的第二初始数据库表;
对所述第二初始数据库表进行分割处理,得到m个数据块;
对所述m个数据块进行筛选,以确定出目标数据块,并将所述目标数据块确定为第二数据库表。
一种数据库表连接装置,所述装置包括:
第一获取模块,用于获取第一数据库表和第二数据库表;其中,第一数据库表中包括I个键值,第二数据库表中包括K个键值,I、K均为正整数;
第二获取模块,用于获取所述第一数据库表的第一目标哈希表,并获取第一目标哈希表对应的位置指针数组和第一目标哈希表的目标位置数组;其中,所述位置指针数组表征不同哈希值的首次出现位置,所述目标位置数组表征哈希值相同时对应键值在第一数据库表中的位置;
第一确定模块,用于根据所述位置指针数组和所述目标位置数组,确定与第二数据库表进行连接的键值详情表;其中,所述键值详情表表征第二数据库表中每个键值在所述第一数据库表中出现的次数以及所述键值在所述第一数据库表中的首次位置;
第二确定模块,用于根据所述第一数据库表、第二数据库表以及所述键值详情表,确定目标连接表;其中,所述目标连接表中包括第一数据库表与第二数据库表进行连接的各个连接键值,以及每个连接键值分别在第一数据库表与第二数据库表中的位置。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取第一数据库表和第二数据库表;其中,第一数据库表中包括I个键值,第二数据库表中包括K个键值,I、K均为正整数;
获取所述第一数据库表的第一目标哈希表,并获取第一目标哈希表对应的位置指针数组和第一目标哈希表的目标位置数组;其中,所述位置指针数组表征不同哈希值的首次出现位置,所述目标位置数组表征哈希值相同时对应键值在第一数据库表中的位置;
根据所述位置指针数组和所述目标位置数组,确定与第二数据库表进行连接的键值详情表;其中,所述键值详情表表征第二数据库表中每个键值在所述第一数据库表中出现的次数以及所述键值在所述第一数据库表中的首次位置;
根据所述第一数据库表、第二数据库表以及所述键值详情表,确定目标连接表;其中,所述目标连接表中包括第一数据库表与第二数据库表进行连接的各个连接键值,以及每个连接键值分别在第一数据库表与第二数据库表中的位置。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取第一数据库表和第二数据库表;其中,第一数据库表中包括I个键值,第二数据库表中包括K个键值,I、K均为正整数;
获取所述第一数据库表的第一目标哈希表,并获取第一目标哈希表对应的位置指针数组和第一目标哈希表的目标位置数组;其中,所述位置指针数组表征不同哈希值的首次出现位置,所述目标位置数组表征哈希值相同时对应键值在第一数据库表中的位置;
根据所述位置指针数组和所述目标位置数组,确定与第二数据库表进行连接的键值详情表;其中,所述键值详情表表征第二数据库表中每个键值在所述第一数据库表中出现的次数以及所述键值在所述第一数据库表中的首次位置;
根据所述第一数据库表、第二数据库表以及所述键值详情表,确定目标连接表;其中,所述目标连接表中包括第一数据库表与第二数据库表进行连接的各个连接键值,以及每个连接键值分别在第一数据库表与第二数据库表中的位置。
上述基于图形处理器的数据库表连接方法、装置、计算机设备和存储介质,其中所述基于图形处理器的数据库表连接方法首先获取第一数据库表和第二数据库表,然后获取所述第一数据库表的第一目标哈希表,以及获取第一目标哈希表对应的位置指针数组和第一目标哈希表的目标位置数组;由于所述位置指针数组表征不同哈希值的首次出现位置,所述目标位置数组表征哈希值相同时对应键值在第一数据库表中的位置,因此本方法只需对第一数据库表进行相应处理、并不需要如传统方法中需要对两个表都进行处理导致的表连接过程复杂且繁琐的问题,提高了表连接的简单易实现性;进一步的,根据所述位置指针数组和所述目标位置数组,确定与第二数据库表进行连接的键值详情表后,根据所述第一数据库表、第二数据库表以及所述键值详情表确定目标连接表,由于所述键值详情表表征第二数据库表中每个键值在所述第一数据库表中出现的次数以及所述键值在所述第一数据库表中的首次位置,且所述目标连接表中包括第一数据库表与第二数据库表进行连接的各个连接键值,以及每个连接键值分别在第一数据库表与第二数据库表中的位置,因此采用本申请方法能够实现通过增加第一数据库表的处理量、避免对第二数据库表的处理得到关联第一数据库表和第二数据库表的目标连接表的目的,不仅提高了表连接过程的快速性和准确性,也提高了计算机设备的智能性和可靠性。
附图说明
图1为一个实施例中基于图形处理器的数据库表连接方法的流程示意图;
图2为再一实施例中基于图形处理器的数据库表连接方法的流程示意图;
图3为另一实施例中基于图形处理器的数据库表连接方法的流程示意图;
图4为又一实施例中基于图形处理器的数据库表连接方法的流程示意图;
图5为又一实施例中基于图形处理器的数据库表连接方法的流程示意图;
图6为一个实施例中基于图形处理器的数据库表连接装置的结构框图;
图7为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的基于图形处理器的数据库表连接方法,其执行主体可以是基于图形处理器的数据库表连接装置,所述基于图形处理器的数据库表连接装置可以通过软件、硬件或者软硬件结合的方式实现成为计算机设备的部分或者全部。可选的,该计算机设备可以为个人计算机(Personal Computer,PC)、便携式设备、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备、服务器等具有数据处理功能的电子设备,例如平板电脑、手机等等,还可以是云端或者远程服务器,本申请实施例对计算机设备的具体形式并不做限定。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。当然,输入装置和显示屏也可以不属于计算机设备的一部分,可以是计算机设备的外接设备。
需要说明的是,下述方法实施例的执行主体可以是上述计算机设备的部分或者全部。下述方法实施例以执行主体为计算机设备为例进行说明。
在一个实施例中,如图1所示,提供了一种基于图形处理器的数据库表连接方法,包括以下步骤:
步骤S11,获取第一数据库表和第二数据库表;其中,第一数据库表中包括I个键值,第二数据库表中包括K个键值,I、K均为正整数。
其中,第一数据库表和第二数据库表中键值的数据类型可以是基本数据类型,基本数据类型可以是整型、浮点型、逻辑型、字符型、长整形、双精度类型中的至少一种,并且可以是文字数据、语音数据、视频数据、图表数据。
具体地,计算机设备可以从数据库中获取需要进行连接操作的两个数据库表,并根据存储容量的不同将所述两个数据库表中存储容量小的数据库表确定为小表,所述小表可以为所述第一数据库表,且小表的存储容量小可以载入GPU显存,将存储容量大的数据库表确定为第二初始数据库表,第二初始数据库表的存储容量远远大于第一数据库表的存储容量;其中,所述存储容量可以根据大表和小表中包括的键值总个数确定。
比如,第一数据库表中可以是设定时间段(比如5秒)内接收到I个用户的打车请求,每个打车请求中携带有用户的定位位置,且每个打车请求可以作为第一数据库表中的一个键值,第二初始数据库表中可以是当前所有在线车辆的标识信息,每个标识信息中携带车辆实时位置以及车辆是否载客等其他信息,且每个标识信息可以是所述第二初始数据库表中的一个键值。
当计算机设备确定第二初始数据库表的存储容量过大不足载入GPU显存中时,可以认为第二初始数据库表中重复的键值不多或者没有重复键值,也可以认为第二初始数据库表中重复的键值较多引起的存储容量大于小表的存储容量,此时可以先对第二初始数据库表进行分割处理,分割成m个数据块,每个数据块的存储容量可以相同,也可以不同,当每个数据块的存储容量相同且都能载入GPU显存中时,可以任选一个数据块作为第二数据库表;如果每个数据块的存储容量不相同,则可以在m个数据块中筛选出能够载入GPU显存的至少一个目标数据块,当所述目标数据块只有一个时可以将该个目标数据块作为第二数据库表;当所述目标数据块有多个时,可以任选其中一个目标数据块作为第二数据库表,也可以选取存储容量较小的目标数据库作为第二数据库表,本实施例对此不做限定;其中,m为正整数。
并且,计算机设备确定出的第一数据库表包括I个键值,第二数据库表包括K个键值,当第二初始数据库表中重复的键值不多或者没有重复键值时,可以认为K的取值大于I的取值,当第二初始数据库表中重复的键值较多时可以认为K的取值和I的取值相同。
步骤S12,获取所述第一数据库表的第一目标哈希表,并获取第一目标哈希表对应的位置指针数组和第一目标哈希表的目标位置数组;其中,所述位置指针数组表征不同哈希值的首次出现位置,所述目标位置数组表征哈希值相同时对应键值在第一数据库表中的位置。
具体地,所述第一目标哈希表可以包括第一数据库表中每个键值的哈希值,所述位置指针数组可以包括第一目标哈希表中不同哈希值的首次出现位置,并且每个首次出现位置以指针形式指向第一目标哈希表中对应哈希值;所述目标位置数组包括第一目标哈希表中两个哈希值相同且两个哈希值对应的两个键值不同时,两个键值中的后一个键值在第一数据库表中的位置;其中,所述两个哈希值可以是第一目标哈希表中的第1个和第2个哈希值、第2个和第3个哈希值、……、第I-1个和第I个哈希值。
步骤S13,根据所述位置指针数组和所述目标位置数组,确定与第二数据库表进行连接的键值详情表;其中,所述键值详情表表征第二数据库表中每个键值在所述第一数据库表中出现的次数以及所述键值在所述第一数据库表中的首次位置。
具体地,计算机设备可以根据第一目标哈希表对应的位置指针数组和第一目标哈希表的目标位置数组,确定与第二数据库表进行连接的键值详情表。由于所述键值详情表表征第二数据库表中每个键值在所述第一数据库表中出现的次数以及所述键值在所述第一数据库表中的首次位置,那么根据所述键值详情表可以确定第一数据库表与第二数据库表中的相同键值以及每个相同键值在第一数据库中的出现次数、首次位置,以便于后续能够实现第一数据库表和第二数据库表之间的相同键值的快速配对;其中,所述键值详情表中包括的键值详情个数与第二数据库表中的键值个数相同且一一对应。
步骤S14,根据所述第一数据库表、第二数据库表以及所述键值详情表,确定目标连接表;其中,所述目标连接表中包括第一数据库表与第二数据库表进行连接的各个连接键值,以及每个连接键值分别在第一数据库表与第二数据库表中的位置。
具体地,在计算机设备确定出包括第一数据库表与第二数据库表中的相同键值以及每个相同键值在第一数据库中的出现次数、首次位置的所述键值详情表时,可以确定第一数据库表和第二数据库表进行连接的各个连接键值,每个所述相同键值可以是每个所述连接键值。
在实际处理过程中,由于每个连接键值在第一数据库表和第二数据库表中均存在,因此可以将每个连接键值在第一数据库表的位置和第二数据库表中位置作为对应连接键值的位置标签,以便于对第一数据库表和第二数据库表进行连接时可以根据每个连接键值和其位置标签进行对第一数据库表和第二数据库表进行快速连接,提高了表连接的效率。
上述基于图形处理器的数据库表连接方法中,计算机设备首先获取第一数据库表和第二数据库表,然后获取所述第一数据库表的第一目标哈希表,以及获取第一目标哈希表对应的位置指针数组和第一目标哈希表的目标位置数组;由于所述位置指针数组表征不同哈希值的首次出现位置,所述目标位置数组表征哈希值相同时对应键值在第一数据库表中的位置。
因此本方法只需对第一数据库表进行相应处理、并不需要如传统方法中需要对两个表都进行处理导致的表连接过程复杂且繁琐的问题,提高了表连接的简单易实现性。进一步的,根据所述位置指针数组和所述目标位置数组,确定与第二数据库表进行连接的键值详情表后,根据所述第一数据库表、第二数据库表以及所述键值详情表确定目标连接表,由于所述键值详情表表征第二数据库表中每个键值在所述第一数据库表中出现的次数以及所述键值在所述第一数据库表中的首次位置,且所述目标连接表中包括第一数据库表与第二数据库表进行连接的各个连接键值,以及每个连接键值分别在第一数据库表与第二数据库表中的位置。
因此当用户需要使用计算机设备上的打车软件打车时,计算机设备获取数据库中记录当前在线的K个车辆信息的第二数据库表和记录接收到的I个用户的打车请求的第一数据库表,只需对I个用户的打车请求进行不同处理得到位置指针数组和目标位置数组时即可与第二数据库表中的每个打车请求进行关联匹配,并不需要对第二数据库表进行处理即可得到表征关联成功的目标连接表,以此提高了计算机设备关联两个数据库表的关联效率。
并且本申请方法是通过GPU显存实现关联过程的。因此能够避免使用CPU关联两个数据库表时速度慢的问题,使得计算机设备获取两个数据库表的关联结果的速度更快,并且本申请方法通过对存储容量小的第一数据库表进行处理、不对存储容量大的第二数据库表进行处理即可实现两个数据库表之间的关联结果,从而快速得到两个数据表关联成功的目标连接表,使得用户使用计算机设备上的打车软件打车时的效率更高、花费的时间更少。
在一个实施例中,如图2所示,步骤S12包括:
步骤S121,确定所述第一数据库表中每个键值的哈希值,并对得到的各个哈希值进行哈希桶处理,得到M个哈希桶;其中,M为小于I的正整数。
具体地,计算机设备在确定出第一数据库表中I个键值对应的I个哈希值时,可以先对所述I个哈希值进行哈希桶处理,所述哈希桶处理可以是存放相同哈希值但发生冲突的不同键值的处理,所述冲突可以是不同的键值通过计算得到了相同的哈希值;以此实现对I个哈希值进行哈希桶处理后得到M个哈希桶的目的。
在实际处理过程中,当第一数据库表如表1所示时,表2可以为表1中每个键值的哈希值,表3可以为对表2进行哈希桶处理后得到的M个哈希桶;其中,表1中包括10个键值,表2中包括10个哈希值,表3包括6个哈希桶。
表1
B1 | c | A1 | f | r | B2 | A2 | d | w | B1 |
表2
1 | 2 | 0 | 3 | 4 | 1 | 0 | 2 | 5 | 1 |
表3
1 | 1 | 1 | 2 | 2 | 0 | 0 | 3 | 4 | 5 |
步骤S122,对所述M个哈希桶进行排序处理,得到由排序后的M个哈希桶构成的第一目标哈希表。
具体的,当计算机设备确定出第一数据库表中I个键值的I个哈希值对应的M个哈希桶时,可以对所述M个哈希桶进行从小到大排序,从而得到由从小到大排序后的M个哈希桶构成的第一目标哈希表;也可以对所述M个哈希桶进行从大到小排序,此时所述第一目标哈希表则是由从到小排序后的M个哈希桶构成的;此处不限定M个哈希桶的排序方式。
在实际处理过程中,当M个哈希桶如表3所示时,那么所述第一目标哈希表可以如表4所示。
表4
0 | 0 | 1 | 1 | 1 | 2 | 2 | 3 | 4 | 5 |
步骤S123,将第一目标哈希表中每个哈希桶的首个哈希值在所述第一目标哈希表中的位置序列,确定为所述位置指针数组。
具体地,当所述第一目标哈希表是由从小到大排序后的M个哈希桶构成时,可以将每个哈希桶的首个哈希值在第一目标哈希表中的位置,确定为所述位置序列中的其中一个位置。
在实际处理过程中,当计算机设备确定出所述第一目标哈希表如表4所示时,那么由表4所示的第一目标哈希表确定出的位置指针数组可以如表5(1)所示,表5(2)表征位置指针数组中的每个位置指向第一目标哈希表中对应哈希桶的首个哈希值。
表5(1)
0 | 2 | 5 | 7 | 8 | 9 |
表5(2)
步骤S124,根据所述第一目标哈希表对所述第一数据库表中的I个键值进行排序,得到第一目标数据库表。
具体地,在计算机设备确定出所述第一目标哈希表时,可以根据所述第一目标哈希表中I个哈希值各自对应的键值顺序对所述第一数据库表中I个键值重新进行排序,得到排序后的数据库表,并将排序后数据库表作为第一目标数据库表;其中,所述第一目标数据库表中的键值个数与第一数据库表中的键值个数相同。
在实际处理过程中,当第一数据库表如表1所示、第一目标哈希表如表4所示时,所述第一目标数据库表可以如表6所示。
表6
A1 | A2 | B1 | B1 | B2 | c | d | f | r | w |
步骤S125,当第一目标数据库表中第i个键值和第i+1个键值不同、第一目标哈希表中第i个哈希值和第i+1个哈希值相同时,将第i+1个键值在第一目标数据库表中的位置,确定为所述目标位置数组中第i-1个位置的元素;其中,i=1、2、……、I。
具体地,以表4所示的第一目标哈希表和表6所示的第一目标数据库表为例进行说明,当i的取值为1时,计算机设备确定第一目标数据库表中第1个键值A1和第2个键值A2不同,第一目标哈希表中第1个哈希值0和第2个哈希值0相同时,可以将第2个键值A2在第一目标数据库中的位置1,作为所述目标位置数组中第0个位置的元素。
步骤S126,当第一数据库表中第i个键值和第i+1个键值相同、第i+1个键值和第i+2个键值不同、且第一目标哈希表中第i个哈希值至第i+2个哈希值相同时,将第i+2个键值在第一目标数据库表中的位置,分别作为所述目标位置数组中第i-1个位置和第i个位置的元素。
具体地,此处还是以表4所示的第一目标哈希表和表6所示的第一目标数据库表为例进行说明,当i的取值为3时,计算机设备确定第一目标数据库表中第3个键值B1和第4个键值B1相同、第4个键值B1和第5个键值B2不同、且第一目标哈希表中第3个哈希值至第5个哈希值都为1时,可以将第5个键值B2在第一目标数据库中的位置4,分别作为所述目标位置数组中第2个位置和第3个位置的元素。以此实现在同一个哈希桶中寻找与第二数据库表中相同键值的过程中减少比较的次数,比如第二数据库表中的某个哈希值对应的键值与第一目标数据库表中第3个键值B1不同时,就可以不用再与第一目标数据库表中第4个键值B1比较,而是直接与第一目标数据库表中第5个键值B2进行比较。
步骤S127,当第一目标数据库表中第i个键值和第i+1个键值不同且第一目标哈希表中第i个哈希值和第i+1个哈希值不同时,确定所述目标位置数组中第i-1个位置的元素为空。
具体地,还是以表4所示的第一目标哈希表和表6所示的第一目标数据库表为例进行说明,当i的取值为2时,计算机设备确定第一目标数据库中第2个键值A2和第3个键值B1不同且第一目标哈希表中第2个哈希值0和第3个哈希值1不同时,可以确定所述目标位置数组中第1个位置的元素为空。
步骤S128,令i的值分别取1至I,分别执行所述确定所述目标位置数组中第0个位置的元素至第I-1个位置的元素的步骤;直至得到所述目标位置数组中的I个元素。
具体地,计算机设备可以根据步骤S125、步骤126或步骤127确定目标位置数组中元素的方法遍历第一目标数据库表中的I个键值,直到得到目标位置数组中的I个元素,所述I个元素的I个位置分别为第0个位置、第1个位置、……、第I-1个位置。
在实际处理过程中,根据表4所示的第一目标哈希表和表6所示的第一目标数据库表可以确定出如表7所示的目标位置数组;其中,所述“^”表示空。
表7
1 | ^ | 4 | 4 | ^ | 6 | ^ | ^ | ^ | ^ |
本实施例中,通过对确定出的第一数据库表中每个键值的哈希值进行哈希桶处理以及排序处理,得到所述第一目标哈希表,并将第一目标哈希表中每个哈希桶的首个哈希值在所述第一目标哈希表中的位置序列确定为所述位置指针数组,以此实现后续确定第一目标哈希表中存在与第二数据库表中某一键值的哈希值相同的相同哈希值时能够快速定位所述相同哈希值的位置,降低了比对次数。
然后,根据第一目标哈希表对第一数据库表中的I个键值进行排序处理得到第一目标数据库表时,进一步根据第一目标哈希表中的其中一个哈希桶对应的两个键值不同或者三个键值中两前两个键值相同、后两个键值不同,以及根据第一目标哈希表中两个不同的哈希桶、且每个哈希桶中均包括一个哈希值以及两个不同的哈希桶对应所述第一目标数据库表中的两个键值不同,确定出所述目标位置数组中一个不为空的元素或者两个不为空的元素或者为空的元素。以此实现在同一个哈希桶中寻找与第二数据库表中相同键值的过程中减少比较的次数,从而实现准确确定第二数据库表中能与第一目标数据库表进行匹配的键值数量,减少了GPU内存的浪费,从而提高了表连接过程的效率和可靠性,使得用户使用计算机设备上的打车软件打车时花费时间更少、效率更高。
在一个实施例中,步骤S121中所述确定所述第一数据库表中每个键值的哈希值,可以通过以下过程实现:
获取图形处理器核心个数Q,并使用Q个图形处理器核心分别同步计算第一数据库表中I个键值的哈希值;其中,Q<I。
具体地,计算机设备获取Q个GPU核心时,可以根据Q个GPU核心对第一数据库表中的I个键值进行键值块分割,得到Q个键值块,此时计算机设备每并行计算一次哈希值,可以并行计算Q个键值块中每个键值块的其中一个键值的哈希值,当计算机设备并行计算I/Q次哈希值时,可以计算得到I个哈希值,所述I个哈希值为所述第一数据库表中I个键值的哈希值。
在实际处理过程中,当第一数据库表包括200个键值、且计算机设备确定GPU核心为10个时,可以得到10个键值块,每个键值块包括20个键值,此时计算机设备每执行一次哈希值计算,可以是并行计算每个键值块中一个键值的哈希值,以得到10个哈希值;当计算机设备执行20次哈希值计算时,即可得到200个键值的200个哈希值。
在本实施例中,计算机设备通过GPU核心的数量并行计算第一数据库中I个键值的I个哈希值,避免了传统方法中使用CPU计算每个键值的哈希值时导致的哈希值运算过程慢的问题,充分利用GPU计算能力高于CPU计算能力的优势确定第一数据库表中I个键值的哈希值,提高了哈希值计算的快速性和可靠性,从而也能够提高用户使用计算机设备上的打车软件成功打到车的效率。
在一个实施例中,如图3所示,当所述键值详情表包括K个键值详情时,步骤S13包括:
步骤S131,获取第二数据库表的第二目标哈希表。
具体地,计算机设备在计算第二数据库表中K个键值的哈希值时,可以与确定第一数据库表中I个哈希值的并行计算方法相同,也是使用Q个GPU核心并行计算第二数据库表中K个键值的哈希值,计算机设备使用Q个GPU核心并行计算哈希值的过程能够使得GPU显存的存储带宽得以有效利用,从而能够提高获取第二目标哈希表的速率,然后将计算得到的K个哈希值作为所述第二数据库表的第二目标哈希表。
并且,当计算机设备获取到第二数据库表的第二目标哈希表时,可以将第二目标哈希表与第一目标哈希表进行比较,以确定第一目标哈希表中存在与第二目标哈希表中第k个哈希值相同的目标哈希值时确定出第二数据库表中第k个键值对应的键值详情。
在实际处理过程中,当计算机接收到打车请求时,可以从数据库中获取包括当前在线所有车辆的标识信息的第二初始数据库表,当第二初始数据库表中没有重复键值时,对该第二初始数据库表进行分割处理,得到m个数据块,当m个数据块各自的存储容量都足够载入GPU显存时,从m个数据块中选取一个数据块作为第二数据库表,所述第二数据库表可以如表8所示,对表8所示的第二数据库表并行计算哈希值后可以得到如表9所示的第二目标哈希表。
表8
g | h | c | A2 | B2 | A1 | d | g | j | B1 | l | d | r | s | t |
表9
7 | 8 | 2 | 0 | 1 | 0 | 2 | 7 | 8 | 1 | 9 | 2 | 4 | 5 | 6 |
步骤S132,当第一目标哈希表中存在与第二目标哈希表中的第k个哈希值相同的目标哈希值时,判断所述目标哈希值在位置指针数组中的对应位置处的第一键值是否与第二数据库表中的第k个键值相同;其中,k=1、2、……、K。
具体地,当计算机设备确定第一目标哈希表中存在与第二目标哈希表中的第k个哈希值相同的目标哈希值时,进一步判断所述目标哈希值在位置指针数组中的对应位置处的第一键值是否与第二数据库表中的第k个键值相同;其中,所述第一键值可以是第一目标数据库中所述对应位置处的键值。
在实际处理过程中,当计算机设备确定所述第二数据库表如表8所示、所述第二目标哈希表如表9所示、所述位置指针数组如表5(1)和表5(2)所示、所述第一目标数据库表如表6所示时,如果k的取值为3,那么第二目标哈希表中第3个哈希值为2,并确定第一目标哈希表中存在哈希值为2的目标哈希值,哈希值为2的目标哈希值在位置指针数组中的位置为5,然后判断第一目标数据库表中位置为5处的键值c与第二数据库表中第3个键值c相同时进入步骤S133;其中,第一键值可以是所述第一目标数据库表中位置为5处的键值c。
反之,当k的取值为4时,那么第二目标哈希表中第4个哈希值为0,并确定第一目标哈希表中存在哈希值为0的目标哈希值,哈希值为0的目标哈希值在位置指针数组中的位置为0,然后判断第一目标数据库表中位置为0处的键值A1与第二数据库表中第4个键值A2不相同时进入步骤S134。
步骤S133,若相同,将所述第一目标数据库表中所述第一键值的个数和每个所述第一键值的位置,确定为第k个键值详情,并将k+1作为新的k,返回步骤S132。
具体地,当计算机设备确定出所述第一键值与第二数据库表中的第k个键值相同时,可以将第一目标数据库表中所述第一键值的个数以及每个所述第一键值的位置,确定为第k个键值详情。
在实际处理过程中,当计算机设备确定所述第二数据库表如表8所示、所述第二目标哈希表如表9所示、所述位置指针数组如表5(1)和表5(2)所示、所述第一目标数据库表如表6所示以及如果k的取值为3时,可以确定第一目标数据库表中位置为5处的键值c与第二数据库表中第3个键值c相同,此时可以将键值c在第一目标数据库表中的个数1以及键值c在第一目标数据库中的位置5,确定为第3个键值详情;当键值详情不为空时,说明第一数据库表与第二数据库表中存在进行匹配或管理的键值对。
步骤S134,若不相同,判断所述目标哈希值在所述目标位置数组中的对应位置处的第二键值是否与所述第k个键值相同。
具体地,当计算机设备确定出所述第一键值与第二数据库表中的第k个键值不相同时,可以进一步判断所述目标哈希值在所述目标位置数组中的对应位置处的第二键值是否与所述第k个键值相同。
在实际处理过程中,当计算机设备确定所述第二数据库表如表8所示、所述第二目标哈希表如表9所示、所述目标位置数组如表7所示、所述第一目标数据库表如表6所示以及如果k的取值为4时,第二目标哈希表中第4个哈希值为0,并且第一目标哈希表中存在哈希值为0的目标哈希值,当判断第一目标数据库表中位置为0处的键值A1与第二数据库表中第4个键值A2不相同时,可以进一步判断哈希值为0的目标哈希值在所述目标位置数组中的对应位置为1,然后确定第一目标数据库表中位置为1处的键值为A2,A2即为哈希值为0的目标哈希值在所述目标位置数组中的对应位置处的第二键值;然后判断第二键值A2与第二数据库表中第4个键值A2相同时进入步骤S136;反之,当判断出第二键值与第二数据库中的第k个键值不同时进入步骤S135。
步骤S135,当所述第二键值与所述第k个键值不相同时,则确定第k个键值详情为空,并将k+1作为新的k,返回步骤S132;直至直至k=K为止;其中,k=1、2、……、K。
具体地,当计算机设备确定所述第二数据库表如表8所示、所述第二目标哈希表如表9所示、所述目标位置数组如表7所示、所述第一目标数据库表如表6所示以及如果k的取值为14时,第二目标哈希表中第14个哈希值为5,并确定第一目标哈希表中存在哈希值为5的目标哈希值,哈希值为5的目标哈希值在位置指针数组中的位置为9,然后判断第一目标数据库中位置为9处的键值w与第二数据库表中第14个键值s不同时,判断哈希值为5的目标哈希值在所述位置指针数组中的对应位置为“^”,进一步确定第一目标数据库中位置为“^”处的键值也为“^”,那么此时判定第14个键值详情为空,并将14+1作为新的k,返回步骤S132。
步骤S136,当所述第二键值与所述第k个键值相同时,则将所述第一目标数据库表中所述第二键值的个数和每个所述第二键值的位置,确定为第k个键值详情,并将k+1作为新的k,返回步骤S132;直至k=K为止。
具体地,当计算机设备确定所述第二数据库表如表8所示、所述第二目标哈希表如表9所示、所述目标位置数组如表7所示、所述第一目标数据库表如表6所示以及如果k的取值为4时,第二目标哈希表中第4个哈希值为0,并且第一目标哈希表中存在哈希值为0的目标哈希值,当判断第一目标数据库表中位置为0处的键值A1与第二数据库表中第4个键值A2不相同时,可以进一步判断哈希值为0的目标哈希值在所述目标位置数组中的对应位置为1,然后确定第一目标数据库表中位置为1处的键值为A2,A2即为哈希值为0的目标哈希值在所述目标位置数组中的对应位置处的第二键值;然后判断第二键值A2与第二数据库表中第4个键值A2相同时,将所述第一目标数据库表中第二键值A2的个数和每个第二键值A2的位置,确定为第4个键值详情,并将4+1作为新的k,返回步骤S132;直至k=K为止时得到的K个键值详情可以如表10所示。
表10
0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 2 | 0 | 1 | 1 | 0 | 0 |
^ | ^ | 5 | 1 | 4 | 0 | 6 | ^ | ^ | 2 | ^ | 6 | 8 | ^ | ^ |
在本实施例中,计算机设备在确定出第二数据库表的第二目标哈希表时,通过扫描第二目标哈希表中的哈希值在第一目标哈希表中存在时得到的目标哈希值的扫描结果判断第二数据库表中的键值与目标哈希值在所述位置指针数组中的对应位置处的第一键值是否相同,相同时确定出键值详情,不相同时进一步判断目标哈希值在所述目标位置数组中的对应位置处的第二键值是否与第二数据库表中的键值相同,相同时也能确定出键值详情,不相同时确定键值详情为空,以此方式遍历第二目标哈希表中的K个哈希值,直至得到K个键值详情,实现了不需要对第二数据库表进行排序等其它处理、只需确定第二数据库表的第二目标哈希表就能够连接第一数据库表和第二数据库表的目的,避免了传统方法连接两个数据库表时需要对两个数据库表都进行排序等其它处理导致的表连接过程慢、效率很低的问题,提高了表连接的效率,从而提高了计算机设备的智能性和灵活多样性,使得用户使用计算机设备上的打车软件打车的时间成本降低,提高了打车效率。
在一个实施例中,在步骤步骤S131之后,所述方法还包括:
当第一目标哈希表中不存在与第二目标哈希表中的第k个哈希值相同的目标哈希值时,确定所述键值详情表中第k个键值详情为空。
具体地,当计算机设备在扫描第二目标哈希表中的每个哈希值时确定其中一个哈希值在第一目标哈希表中不存在时,说明第二数据库表中与该个哈希值对应的键值在第一数据库表中没有可以匹配或者关联的键值,此时可以确定该个哈希值对应的键值详情为空;当键值详情为空时,说明第一数据库表与第二数据库表中不存在进行匹配或管理的键值对。
在实际处理过程中,当第二目标哈希表如表9所示、第一目标哈希表如表4所示时,当计算机设备扫描第二目标哈希表中的第1个哈希值7时,确定第一目标哈希表中不存在哈希值7,此时计算机设备可以确定第1个键值详情为空;同理,当计算机设备扫描第二目标哈希表中的第2个哈希值8时,确定第一目标哈希表中不存在哈希值8,此时计算机设备也可以确定第2个键值详情为空。
在本实施例中,计算机设备对第二目标哈希表中的每个哈希值进行扫描且扫描到其中一个哈希值不在第一目标哈希表中不存在时,确定对应键值详情为空,以此确定第一数据库表和第二数据库表中不能够关联或者匹配的键值对,从而提高了表连接的可靠性和快速性。
在一个实施例中,如图4所示,步骤S14包括:
步骤S141,将所述键值详情表中至少出现一次的各个键值,确定为第一目标数据库表与第二数据库表进行连接的各个连接键值;其中,所述第一目标数据库表包括根据所述第一目标哈希表对所述第一数据库表中的I个键值进行排序处理后得到的数据库表。
具体地,当计算机设备确定出所述键值详情表如表10所示、第二数据库表如表8所示时,由于表10中不为空的键值详情对应第二数据库中出现一次的各个键值为键值c、键值A2、键值B2、键值A1、键值d、键值d以及键值r,出现两次的键值为键值B1,因此可以确定第一目标数据库表与第二数据库表进行连接的各个连接键值分别为键值c、键值A2、键值B2、键值A1、键值d、键值B1、键值B1、键值d以及键值r。
步骤S142,根据所述连接键值、每个所述连接键值分别在第一目标数据库表中的第一位置以及在第二数据库表中的第二位置,生成所述目标连接表。
具体地,当计算机设备确定第一目标数据库表与第二数据库表进行连接的各个连接键值分别为键值c、键值A2、键值B2、键值A1、键值d、键值B1、键值B1、键值d以及键值r时,可以根据各个连接键值分别在第一目标数据库表中的第一位置以及在第二数据库表中的第二位置,生成如表11所示的所述目标连接表;其中,第一键值可以是连接键值在第一目标数据库表中的位置,第二键值可以是连接键值在第二数据库表中的位置。
表11
c | A2 | B2 | A1 | d | B1 | B1 | d | r |
5,2 | 1,3 | 4,4 | 0,5 | 6,6 | 2,9 | 3,9 | 6,11 | 8,12 |
在实际处理过程中,当所述连接键值为c时,将c在第一目标数据库表中的第一位置为5,c在第二数据库表中的第二位置2作为所述目标连接表中的一个目标连接对;当所述连接键值为B1时,由于B1在第一目标数据库表中出现了2次,那么,将B1在第一目标数据库表中的第一位置为2、B1在第二数据库表中的第二位置为9作为所述目标连接表中的一个目标连接对,并且将B1在第一目标数据库表中的第一位置为3、B1在第二数据库表中的第二位置为9作为所述目标连接表中的另一个目标连接对。
在本实施例中,计算机设备通过所述键值详情表确定第一目标数据库表与第二数据库表进行连接的各个连接键值,并进一步通过确定各个连接键值分别在第一目标数据库表中的第一位置和在第二数据库表中的第二键值生成所述目标连接表,以此实现通过所述键值详情表确定第一数据库表和第二数据库表中能够进行匹配或连接的各个键值对,提高了表连接过程的快速性和可靠性。
在一个实施例中,如图5所示,所述方法还包括:
步骤S21,将所述键值详情表中第1个键值至第k个键值在第一目标数据库表中出现的次数的总和,作为次数统计表中第k个位置的元素。
具体地,当计算机设备确定出所述键值详情表如表10所示时,所述键值详情表的第一行为第二数据库表中各个键值在第一目标数据库表中出现的次数,所述键值详情表的第二行为第二数据库表中的键值在第一目标数据库出现的位置,那么,当k的取值为2时,可以将所述键值详情表中第1个键值至第2个键值在第一目标数据库中出现的次数的总和0,作为所述次数统计表中第2个位置的元素0;同理,当k的取值为3时,可以将所述键值详情表中第1个键值至第3个键值在第一目标数据库中出现的次数的总和1,作为所述次数统计表中第3个位置的元素1。
步骤S22,令k的值分别取1至K,分别得到次数统计表中第1个位置的元素至第K-1个位置的元素;其中,所述次数统计表中第0个位置的元素为0,k=1、2、……、K,K表示第二数据库表中包括的键值数量。
具体地,计算机设备通过扫描得到所述键值详情表中第1个键值至第1个键值在第一目标数据库表中出现的次数的总和,直至所述键值详情表中第1个键值至第K个键值在第一目标数据库表中出现的次数的总和,生成所述次数统计表中第1个位置至第K-1个位置的元素;并且当所述键值详情表如表10所示、所述次数统计表中第0个位置的元素为0时生成的所述次数统计表可以如表12所示。
表12
0 | 0 | 0 | 1 | 2 | 3 | 4 | 5 | 5 | 5 | 7 | 7 | 8 | 9 | 9 |
步骤S23,将所述次数统计表中第K-1个位置的元素,作为所述目标连接表中的连接键值总个数。
具体地,当计算机设备根据如表10所示的所述键值详情表确定出如表12所示的次数统计表时,可以将所述次数统计表中最后一个位置(也即第K-1个位置)的元素9,作为所述目标连接表中的连接键值总个数。
在本实施例中,计算机设备通过所述键值详情表中第1个键值至第1个键值在第一目标数据库表中出现的次数的总和,直至所述键值详情表中第1个键值至第K个键值在第一目标数据库表中出现的次数的总和,确定次数统计表中第1个位置至第K-1个位置的元素,并根据第K-1个位置的元素确定所述键值详情表确定所述目标连接表中的连接键值总个数,以此实现在对第一数据库表和第二数据库表进行连接之前能够预先确定可匹配或关联的连接键值总个数,减少了GPU内存的浪费,提高了表连接操作的效率,从而使得用户使用计算机设备上的打车软件成功打到车的效率和可靠性更高。
应该理解的是,虽然图1-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-5中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图6所示,提供了一种基于图形处理器的数据库表连接装置,包括:第一获取模块11、第二获取模块12、第一确定模块13和第二确定模块14,其中:
第一获取模块11,用于获取第一数据库表和第二数据库表;其中,第一数据库表中包括I个键值,第二数据库表中包括K个键值,I、K均为正整数。
第二获取模块12,用于获取所述第一数据库表的第一目标哈希表,并获取第一目标哈希表对应的位置指针数组和第一目标哈希表的目标位置数组;其中,所述位置指针数组表征不同哈希值的首次出现位置,所述目标位置数组表征哈希值相同时对应键值在第一数据库表中的位置。
第一确定模块13,用于根据所述位置指针数组和所述目标位置数组,确定与第二数据库表进行连接的键值详情表;其中,所述键值详情表表征第二数据库表中每个键值在所述第一数据库表中出现的次数以及所述键值在所述第一数据库表中的首次位置。
第二确定模块14,用于根据所述第一数据库表、第二数据库表以及所述键值详情表,确定目标连接表;其中,所述目标连接表中包括第一数据库表与第二数据库表进行连接的各个连接键值,以及每个连接键值分别在第一数据库表与第二数据库表中的位置。
第二获取模块12具体可以包括:第一获取单元121、第二获取单元122、第一确定单元123、第三获取单元124、第二确定单元125、第三确定单元126、第四确定单元127、第四获取单元128。
具体地,第一获取单元121,可以用于确定所述第一数据库表中每个键值的哈希值,并对得到的各个哈希值进行哈希桶处理,得到M个哈希桶;其中,M为小于I的正整数;
第二获取单元122,可以用于对所述M个哈希桶进行排序处理,得到由排序后的M个哈希桶构成的第一目标哈希表;
第一确定单元123,可以用于将第一目标哈希表中每个哈希桶的首个哈希值在所述第一目标哈希表中的位置序列,确定为所述位置指针数组;
第三获取单元124,可以用于根据所述第一目标哈希表对所述第一数据库表中的I个键值进行排序处理,得到第一目标数据库表;
第二确定单元125,可以用于当第一目标数据库表中第i个键值和第i+1个键值不同、第一目标哈希表中第i个哈希值和第i+1个哈希值相同时,将第i+1个键值在第一目标数据库表中的位置,确定为所述目标位置数组中第i-1个位置的元素;其中,i=1、2、……、I;
第三确定单元126,可以用于当第一目标数据库表中第i个键值和第i+1个键值相同、第i+1个键值和第i+2个键值不同、且第一目标哈希表中第i个哈希值至第i+2个哈希值相同时,将第i+2个键值在第一目标数据库表中的位置,分别作为所述目标位置数组中第i-1个位置和第i个位置的元素;
第四确定单元127,可以用于当第一目标数据库表中第i个键值和第i+1个键值不同且第一目标哈希表中第i个哈希值和第i+1个哈希值不同时,确定所述目标位置数组中第i-1个位置的元素为空;
第四获取单元128,可以用于令i的值分别取1至I,分别执行所述确定所述目标位置数组中第0个位置的元素至第I-1个位置的元素的步骤;直至得到所述目标位置数组中的I个元素。
第一获取单元121,还可以用于获取图形处理器核心个数Q,并使用Q个图形处理器核心分别同步计算第一数据库表中I个键值的哈希值;其中,Q<I。
第一确定模块13,具体可以包括:第五获取单元131、第一判断单元132、第五确定单元133、第二判断单元134、第六确定单元135、第七确定单元136。
具体地,第五获取单元131,可以用于获取第二数据库表的第二目标哈希表;
第一判断单元132,可以用于当第一目标哈希表中存在与第二目标哈希表中的第k个哈希值相同的目标哈希值时,判断所述目标哈希值在位置指针数组中的对应位置处的第一键值是否与第二数据库表中的第k个键值相同;
第五确定单元133,可以用于若相同,将所述第一目标数据库表中所述第一键值的个数和每个所述第一键值的位置,确定为第k个键值详情,并将k+1作为新的k,继续执行所述判断所述目标哈希值在位置指针数组中的对应位置处的第一键值是否与第二数据库表中的第k个键值相同的步骤,直至k=K为止;
第二判断单元134,可以用于若不相同,判断所述目标哈希值在所述目标位置数组中的对应位置处的第二键值是否与所述第k个键值相同;
第六确定单元135,可以用于当所述第二键值与所述第k个键值不相同时,则确定第k个键值详情为空,并将k+1作为新的k,并继续执行所述判断所述目标哈希值在位置指针数组中的对应位置处的第一键值是否与第二数据库表中的第k个键值相同的步骤,直至直至k=K为止;其中,k=1、2、……、K;
第七确定单元136,可以用于当所述第二键值与所述第k个键值相同时,则将所述第一目标数据库表中所述第二键值的个数和每个所述第二键值的位置,确定为第k个键值详情,并将k+1作为新的k,并继续执行所述判断所述目标哈希值在位置指针数组中的对应位置处的第一键值是否与第二数据库表中的第k个键值相同的步骤,直至k=K为止。
第一确定模块13还可以包括第一处理单元1301,第一处理单元1301,可以用于当第一目标哈希表中不存在与第二目标哈希表中的第k个哈希值相同的目标哈希值时,确定所述键值详情表中第k个键值详情为空。
第二确定模块14,具体可以包括:第八确定单元141和生成单元142。
具体地,第八确定单元141,可以用于将所述键值详情表中至少出现一次的各个键值,确定为第一目标数据库表与第二数据库表进行连接的各个连接键值;其中,所述第一目标数据库表包括根据所述第一目标哈希表对所述第一数据库表中的I个键值进行排序处理后得到的数据库表;
生成单元142,可以用于根据所述连接键值、每个所述连接键值分别在第一目标数据库表中的第一位置以及在第二数据库表中的第二位置,生成所述目标连接表。
所述基于图形处理器的数据库表连接装置,还可以包括:处理模块15、遍历模块16和第三确定模块17。
具体地,处理模块15,可以用于将所述键值详情表中第1个键值至第k个键值在第一目标数据库表中出现的次数的总和,作为次数统计表中第k个位置的元素;
遍历模块16,可以用于令k的值分别取1至K,分别得到次数统计表中第1个位置的元素至第K-1个位置的元素;其中,所述次数统计表中第0个位置的元素为0,k=1、2、……、K,K表示第二数据库表中包括的键值数量;
第三确定模块17,可以用于将所述次数统计表中第K-1个位置的元素,作为所述目标连接表中的连接键值总个数。
所述基于图形处理器的数据库表连接装置,还可以包括:第三获取模块18、第四确定模块19和第五确定模块110。
具体地,第三获取模块18,可以用于获取数据库中的第二初始数据库表;
第四确定模块19,可以用于对所述第二初始数据库表进行分割处理,得到m个数据块;
第五确定模块110,可以用于对所述m个数据块进行筛选,以确定出目标数据块,并将所述目标数据块确定为第二数据库表。
关于基于图形处理器的数据库表连接装置的具体限定可以参见上文中对于基于图形处理器的数据库表连接方法的限定,在此不再赘述。上述基于图形处理器的数据库表连接装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种基于图形处理器的数据库表连接方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取第一数据库表和第二数据库表;其中,第一数据库表中包括I个键值,第二数据库表中包括K个键值,I、K均为正整数;
获取所述第一数据库表的第一目标哈希表,并获取第一目标哈希表对应的位置指针数组和第一目标哈希表的目标位置数组;其中,所述位置指针数组表征不同哈希值的首次出现位置,所述目标位置数组表征哈希值相同时对应键值在第一数据库表中的位置;
根据所述位置指针数组和所述目标位置数组,确定与第二数据库表进行连接的键值详情表;其中,所述键值详情表表征第二数据库表中每个键值在所述第一数据库表中出现的次数以及所述键值在所述第一数据库表中的首次位置;
根据所述第一数据库表、第二数据库表以及所述键值详情表,确定目标连接表;其中,所述目标连接表中包括第一数据库表与第二数据库表进行连接的各个连接键值,以及每个连接键值分别在第一数据库表与第二数据库表中的位置。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
确定所述第一数据库表中每个键值的哈希值,并对得到的各个哈希值进行哈希桶处理,得到M个哈希桶;其中,M为小于I的正整数;
对所述M个哈希桶进行排序处理,得到由排序后的M个哈希桶构成的第一目标哈希表;
将第一目标哈希表中每个哈希桶的首个哈希值在所述第一目标哈希表中的位置序列,确定为所述位置指针数组;
根据所述第一目标哈希表对所述第一数据库表中的I个键值进行排序处理,得到第一目标数据库表;
当第一目标数据库表中第i个键值和第i+1个键值不同、第一目标哈希表中第i个哈希值和第i+1个哈希值相同时,将第i+1个键值在第一目标数据库表中的位置,确定为所述目标位置数组中第i-1个位置的元素;其中,i=1、2、……、I;
当第一目标数据库表中第i个键值和第i+1个键值相同、第i+1个键值和第i+2个键值不同、且第一目标哈希表中第i个哈希值至第i+2个哈希值相同时,将第i+2个键值在第一目标数据库表中的位置,分别作为所述目标位置数组中第i-1个位置和第i个位置的元素;
当第一目标数据库表中第i个键值和第i+1个键值不同且第一目标哈希表中第i个哈希值和第i+1个哈希值不同时,确定所述目标位置数组中第i-1个位置的元素为空;
令i的值分别取1至I,分别执行所述确定所述目标位置数组中第0个位置的元素至第I-1个位置的元素的步骤;直至得到所述目标位置数组中的I个元素。在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取图形处理器核心个数Q,并使用Q个图形处理器核心分别同步计算第一数据库表中I个键值的哈希值;其中,Q<I。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取第二数据库表的第二目标哈希表;
当第一目标哈希表中存在与第二目标哈希表中的第k个哈希值相同的目标哈希值时,判断所述目标哈希值在位置指针数组中的对应位置处的第一键值是否与第二数据库表中的第k个键值相同;
若相同,将所述第一目标数据库表中所述第一键值的个数和每个所述第一键值的位置,确定为第k个键值详情,并将k+1作为新的k,继续执行所述判断所述目标哈希值在位置指针数组中的对应位置处的第一键值是否与第二数据库表中的第k个键值相同的步骤,直至k=K为止;
若不相同,判断所述目标哈希值在所述目标位置数组中的对应位置处的第二键值是否与所述第k个键值相同;
当所述第二键值与所述第k个键值不相同时,则确定第k个键值详情为空,并将k+1作为新的k,并继续执行所述判断所述目标哈希值在位置指针数组中的对应位置处的第一键值是否与第二数据库表中的第k个键值相同的步骤,直至直至k=K为止;其中,k=1、2、……、K;
当所述第二键值与所述第k个键值相同时,则将所述第一目标数据库表中所述第二键值的个数和每个所述第二键值的位置,确定为第k个键值详情,并将k+1作为新的k,并继续执行所述判断所述目标哈希值在位置指针数组中的对应位置处的第一键值是否与第二数据库表中的第k个键值相同的步骤,直至k=K为止。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
当第一目标哈希表中不存在与第二目标哈希表中的第k个哈希值相同的目标哈希值时,确定所述键值详情表中第k个键值详情为空。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
将所述键值详情表中至少出现一次的各个键值,确定为第一目标数据库表与第二数据库表进行连接的各个连接键值;其中,所述第一目标数据库表包括根据所述第一目标哈希表对所述第一数据库表中的I个键值进行排序处理后得到的数据库表;
根据所述连接键值、每个所述连接键值分别在第一目标数据库表中的第一位置以及在第二数据库表中的第二位置,生成所述目标连接表。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
将所述键值详情表中第1个键值至第k个键值在第一目标数据库表中出现的次数的总和,作为次数统计表中第k个位置的元素;
令k的值分别取1至K,分别得到次数统计表中第1个位置的元素至第K-1个位置的元素;其中,所述次数统计表中第0个位置的元素为0,k=1、2、……、K,K表示第二数据库表中包括的键值数量;
将所述次数统计表中第K-1个位置的元素,作为所述目标连接表中的连接键值总个数。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取数据库中的第二初始数据库表;
对所述第二初始数据库表进行分割处理,得到m个数据块;
对所述m个数据块进行筛选,以确定出目标数据块,并将所述目标数据块确定为第二数据库表。
应当清楚的是,本申请实施例中处理器执行计算机程序的过程,与上述方法中各个步骤的执行过程一致,具体可参见上文中的描述。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取第一数据库表和第二数据库表;其中,第一数据库表中包括I个键值,第二数据库表中包括K个键值,I、K均为正整数;
获取所述第一数据库表的第一目标哈希表,并获取第一目标哈希表对应的位置指针数组和第一目标哈希表的目标位置数组;其中,所述位置指针数组表征不同哈希值的首次出现位置,所述目标位置数组表征哈希值相同时对应键值在第一数据库表中的位置;
根据所述位置指针数组和所述目标位置数组,确定与第二数据库表进行连接的键值详情表;其中,所述键值详情表表征第二数据库表中每个键值在所述第一数据库表中出现的次数以及所述键值在所述第一数据库表中的首次位置;
根据所述第一数据库表、第二数据库表以及所述键值详情表,确定目标连接表;其中,所述目标连接表中包括第一数据库表与第二数据库表进行连接的各个连接键值,以及每个连接键值分别在第一数据库表与第二数据库表中的位置。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
确定所述第一数据库表中每个键值的哈希值,并对得到的各个哈希值进行哈希桶处理,得到M个哈希桶;其中,M为小于I的正整数;
对所述M个哈希桶进行排序处理,得到由排序后的M个哈希桶构成的第一目标哈希表;
将第一目标哈希表中每个哈希桶的首个哈希值在所述第一目标哈希表中的位置序列,确定为所述位置指针数组;
根据所述第一目标哈希表对所述第一数据库表中的I个键值进行排序处理,得到第一目标数据库表;
当第一目标数据库表中第i个键值和第i+1个键值不同、第一目标哈希表中第i个哈希值和第i+1个哈希值相同时,将第i+1个键值在第一目标数据库表中的位置,确定为所述目标位置数组中第i-1个位置的元素;其中,i=1、2、……、I;
当第一目标数据库表中第i个键值和第i+1个键值相同、第i+1个键值和第i+2个键值不同、且第一目标哈希表中第i个哈希值至第i+2个哈希值相同时,将第i+2个键值在第一目标数据库表中的位置,分别作为所述目标位置数组中第i-1个位置和第i个位置的元素;
当第一目标数据库表中第i个键值和第i+1个键值不同且第一目标哈希表中第i个哈希值和第i+1个哈希值不同时,确定所述目标位置数组中第i-1个位置的元素为空;
令i的值分别取1至I,分别执行所述确定所述目标位置数组中第0个位置的元素至第I-1个位置的元素的步骤;直至得到所述目标位置数组中的I个元素。在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取图形处理器核心个数Q,并使用Q个图形处理器核心分别同步计算第一数据库表中I个键值的哈希值;其中,Q<I。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取第二数据库表的第二目标哈希表;
当第一目标哈希表中存在与第二目标哈希表中的第k个哈希值相同的目标哈希值时,判断所述目标哈希值在位置指针数组中的对应位置处的第一键值是否与第二数据库表中的第k个键值相同;
若相同,将所述第一目标数据库表中所述第一键值的个数和每个所述第一键值的位置,确定为第k个键值详情,并将k+1作为新的k,继续执行所述判断所述目标哈希值在位置指针数组中的对应位置处的第一键值是否与第二数据库表中的第k个键值相同的步骤,直至k=K为止;
若不相同,判断所述目标哈希值在所述目标位置数组中的对应位置处的第二键值是否与所述第k个键值相同;
当所述第二键值与所述第k个键值不相同时,则确定第k个键值详情为空,并将k+1作为新的k,并继续执行所述判断所述目标哈希值在位置指针数组中的对应位置处的第一键值是否与第二数据库表中的第k个键值相同的步骤,直至直至k=K为止;其中,k=1、2、……、K;
当所述第二键值与所述第k个键值相同时,则将所述第一目标数据库表中所述第二键值的个数和每个所述第二键值的位置,确定为第k个键值详情,并将k+1作为新的k,并继续执行所述判断所述目标哈希值在位置指针数组中的对应位置处的第一键值是否与第二数据库表中的第k个键值相同的步骤,直至k=K为止。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
当第一目标哈希表中不存在与第二目标哈希表中的第k个哈希值相同的目标哈希值时,确定所述键值详情表中第k个键值详情为空。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
将所述键值详情表中至少出现一次的各个键值,确定为第一目标数据库表与第二数据库表进行连接的各个连接键值;其中,所述第一目标数据库表包括根据所述第一目标哈希表对所述第一数据库表中的I个键值进行排序处理后得到的数据库表;
根据所述连接键值、每个所述连接键值分别在第一目标数据库表中的第一位置以及在第二数据库表中的第二位置,生成所述目标连接表。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
将所述键值详情表中第1个键值至第k个键值在第一目标数据库表中出现的次数的总和,作为次数统计表中第k个位置的元素;
令k的值分别取1至K,分别得到次数统计表中第1个位置的元素至第K-1个位置的元素;其中,所述次数统计表中第0个位置的元素为0,k=1、2、……、K,K表示第二数据库表中包括的键值数量;
将所述次数统计表中第K-1个位置的元素,作为所述目标连接表中的连接键值总个数。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取数据库中的第二初始数据库表;
对所述第二初始数据库表进行分割处理,得到m个数据块;
对所述m个数据块进行筛选,以确定出目标数据块,并将所述目标数据块确定为第二数据库表。
应当清楚的是,本申请实施例中处理器执行计算机程序的过程,与上述方法中各个步骤的执行过程一致,具体可参见上文中的描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (11)
1.一种基于图形处理器的数据库表连接方法,其特征在于,所述方法包括:
获取第一数据库表和第二数据库表;其中,第一数据库表中包括I个键值,第二数据库表中包括K个键值,I、K均为正整数;
获取所述第一数据库表的第一目标哈希表,并获取第一目标哈希表对应的位置指针数组和第一目标哈希表的目标位置数组;其中,所述位置指针数组表征不同哈希值的首次出现位置,所述目标位置数组表征哈希值相同时对应键值在第一数据库表中的位置;
根据所述位置指针数组和所述目标位置数组,确定与第二数据库表进行连接的键值详情表;其中,所述键值详情表表征第二数据库表中每个键值在所述第一数据库表中出现的次数以及所述键值在所述第一数据库表中的首次位置;
根据所述第一数据库表、第二数据库表以及所述键值详情表,确定目标连接表;其中,所述目标连接表中包括第一数据库表与第二数据库表进行连接的各个连接键值,以及每个连接键值分别在第一数据库表与第二数据库表中的位置。
2.根据权利要求1所述的方法,其特征在于,所述获取所述第一数据库表的第一目标哈希表,并获取第一目标哈希表对应的位置指针数组和第一目标哈希表的目标位置数组,包括:
确定所述第一数据库表中每个键值的哈希值,并对得到的各个哈希值进行哈希桶处理,得到M个哈希桶;其中,M为小于I的正整数;
对所述M个哈希桶进行排序处理,得到由排序后的M个哈希桶构成的第一目标哈希表;
将第一目标哈希表中每个哈希桶的首个哈希值在所述第一目标哈希表中的位置序列,确定为所述位置指针数组;
根据所述第一目标哈希表对所述第一数据库表中的I个键值进行排序处理,得到第一目标数据库表;
当第一目标数据库表中第i个键值和第i+1个键值不同、第一目标哈希表中第i个哈希值和第i+1个哈希值相同时,将第i+1个键值在第一目标数据库表中的位置,确定为所述目标位置数组中第i-1个位置的元素;其中,i=1、2、……、I;
当第一目标数据库表中第i个键值和第i+1个键值相同、第i+1个键值和第i+2个键值不同、且第一目标哈希表中第i个哈希值至第i+2个哈希值相同时,将第i+2个键值在第一目标数据库表中的位置,分别作为所述目标位置数组中第i-1个位置和第i个位置的元素;
当第一目标数据库表中第i个键值和第i+1个键值不同且第一目标哈希表中第i个哈希值和第i+1个哈希值不同时,确定所述目标位置数组中第i-1个位置的元素为空;
令i的值分别取1至I,分别执行所述确定所述目标位置数组中第0个位置的元素至第I-1个位置的元素的步骤;直至得到所述目标位置数组中的I个元素。
3.根据权利要求2所述的方法,其特征在于,所述确定所述第一数据库表中每个键值的哈希值,包括:
获取图形处理器核心个数Q,并使用Q个图形处理器核心分别同步计算第一数据库表中I个键值的哈希值;其中,Q<I。
4.根据权利要求2所述的方法,其特征在于,所述键值详情表包括K个键值详情时,所述根据所述位置指针数据和所述目标位置数据,确定与第二数据库表进行连接的键值详情表,包括:
获取第二数据库表的第二目标哈希表;
当第一目标哈希表中存在与第二目标哈希表中的第k个哈希值相同的目标哈希值时,判断所述目标哈希值在位置指针数组中的对应位置处的第一键值是否与第二数据库表中的第k个键值相同;
若相同,将所述第一目标数据库表中所述第一键值的个数和每个所述第一键值的位置,确定为第k个键值详情,并将k+1作为新的k,继续执行所述判断所述目标哈希值在位置指针数组中的对应位置处的第一键值是否与第二数据库表中的第k个键值相同的步骤,直至k=K为止;
若不相同,判断所述目标哈希值在所述目标位置数组中的对应位置处的第二键值是否与所述第k个键值相同;
当所述第二键值与所述第k个键值不相同时,则确定第k个键值详情为空,并将k+1作为新的k,并继续执行所述判断所述目标哈希值在位置指针数组中的对应位置处的第一键值是否与第二数据库表中的第k个键值相同的步骤,直至直至k=K为止;其中,k=1、2、……、K;
当所述第二键值与所述第k个键值相同时,则将所述第一目标数据库表中所述第二键值的个数和每个所述第二键值的位置,确定为第k个键值详情,并将k+1作为新的k,并继续执行所述判断所述目标哈希值在位置指针数组中的对应位置处的第一键值是否与第二数据库表中的第k个键值相同的步骤,直至k=K为止。
5.根据权利要求4所述的方法,其特征在于,在所述获取第二数据库表的第二目标哈希表的步骤之后,所述方法还包括:
当第一目标哈希表中不存在与第二目标哈希表中的第k个哈希值相同的目标哈希值时,确定所述键值详情表中第k个键值详情为空。
6.根据权利要求1所述的方法,其特征在于,所述根据所述第一数据库表、第二数据库表以及所述键值详情表,确定目标连接表,包括:
将所述键值详情表中至少出现一次的各个键值,确定为第一目标数据库表与第二数据库表进行连接的各个连接键值;其中,所述第一目标数据库表包括根据所述第一目标哈希表对所述第一数据库表中的I个键值进行排序处理后得到的数据库表;
根据所述连接键值、每个所述连接键值分别在第一目标数据库表中的第一位置以及在第二数据库表中的第二位置,生成所述目标连接表。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
将所述键值详情表中第1个键值至第k个键值在第一目标数据库表中出现的次数的总和,作为次数统计表中第k个位置的元素;
令k的值分别取1至K,分别得到次数统计表中第1个位置的元素至第K-1个位置的元素;其中,所述次数统计表中第0个位置的元素为0,k=1、2、……、K,K表示第二数据库表中包括的键值数量;
将所述次数统计表中第K-1个位置的元素,作为所述目标连接表中的连接键值总个数。
8.根据权利要求1所述的方法,其特征在于,所述第二数据库表的确定过程包括:
获取数据库中的第二初始数据库表;
对所述第二初始数据库表进行分割处理,得到m个数据块;
对所述m个数据块进行筛选,以确定出目标数据块,并将所述目标数据块确定为第二数据库表。
9.一种数据库表连接装置,其特征在于,所述装置包括:
第一获取模块,用于获取第一数据库表和第二数据库表;其中,第一数据库表中包括I个键值,第二数据库表中包括K个键值,I、K均为正整数;
第二获取模块,用于获取所述第一数据库表的第一目标哈希表,并获取第一目标哈希表对应的位置指针数组和第一目标哈希表的目标位置数组;其中,所述位置指针数组表征不同哈希值的首次出现位置,所述目标位置数组表征哈希值相同时对应键值在第一数据库表中的位置;
第一确定模块,用于根据所述位置指针数组和所述目标位置数组,确定与第二数据库表进行连接的键值详情表;其中,所述键值详情表表征第二数据库表中每个键值在所述第一数据库表中出现的次数以及所述键值在所述第一数据库表中的首次位置;
第二确定模块,用于根据所述第一数据库表、第二数据库表以及所述键值详情表,确定目标连接表;其中,所述目标连接表中包括第一数据库表与第二数据库表进行连接的各个连接键值,以及每个连接键值分别在第一数据库表与第二数据库表中的位置。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010041890.6A CN111221827B (zh) | 2020-01-15 | 2020-01-15 | 基于图形处理器的数据库表连接方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010041890.6A CN111221827B (zh) | 2020-01-15 | 2020-01-15 | 基于图形处理器的数据库表连接方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111221827A true CN111221827A (zh) | 2020-06-02 |
CN111221827B CN111221827B (zh) | 2023-05-26 |
Family
ID=70811554
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010041890.6A Active CN111221827B (zh) | 2020-01-15 | 2020-01-15 | 基于图形处理器的数据库表连接方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111221827B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035578A (zh) * | 2020-11-06 | 2020-12-04 | 北京谷数科技股份有限公司 | 基于众核处理器的数据并行处理方法及装置 |
US20210334409A1 (en) * | 2020-04-27 | 2021-10-28 | International Business Machines Corporation | Integrity verification in cloud key-value stores |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160196302A1 (en) * | 2015-01-07 | 2016-07-07 | International Business Machines Corporation | Technology for join processing |
US20170091271A1 (en) * | 2015-09-24 | 2017-03-30 | International Business Machines Corporation | Technology to reduce cost of concatenation for hash array |
US20170255675A1 (en) * | 2015-10-15 | 2017-09-07 | Oracle International Corporation | Using shared dictionaries on join columns to improve performance of joins in relational databases |
CN108549688A (zh) * | 2018-04-11 | 2018-09-18 | 上海达梦数据库有限公司 | 一种数据操作的优化方法、装置、设备和存储介质 |
CN109508334A (zh) * | 2018-11-23 | 2019-03-22 | 中科驭数(北京)科技有限公司 | 针对区块链数据库的数据压缩方法、访问方法和系统 |
US20190095442A1 (en) * | 2017-09-26 | 2019-03-28 | Intel Corporation | Techniques to enable early detection of search misses to accelerate hash look-ups |
CN109952569A (zh) * | 2016-09-16 | 2019-06-28 | 甲骨文国际公司 | 用于基于字典的连接和聚合的技术 |
US20190303482A1 (en) * | 2018-04-03 | 2019-10-03 | Oracle International Corporation | Limited memory and statistics resilient hash join execution |
CN110309143A (zh) * | 2018-03-21 | 2019-10-08 | 华为技术有限公司 | 数据相似度确定方法、装置及处理设备 |
-
2020
- 2020-01-15 CN CN202010041890.6A patent/CN111221827B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160196302A1 (en) * | 2015-01-07 | 2016-07-07 | International Business Machines Corporation | Technology for join processing |
US20170091271A1 (en) * | 2015-09-24 | 2017-03-30 | International Business Machines Corporation | Technology to reduce cost of concatenation for hash array |
US20170255675A1 (en) * | 2015-10-15 | 2017-09-07 | Oracle International Corporation | Using shared dictionaries on join columns to improve performance of joins in relational databases |
CN109952569A (zh) * | 2016-09-16 | 2019-06-28 | 甲骨文国际公司 | 用于基于字典的连接和聚合的技术 |
US20190095442A1 (en) * | 2017-09-26 | 2019-03-28 | Intel Corporation | Techniques to enable early detection of search misses to accelerate hash look-ups |
CN110309143A (zh) * | 2018-03-21 | 2019-10-08 | 华为技术有限公司 | 数据相似度确定方法、装置及处理设备 |
US20190303482A1 (en) * | 2018-04-03 | 2019-10-03 | Oracle International Corporation | Limited memory and statistics resilient hash join execution |
CN108549688A (zh) * | 2018-04-11 | 2018-09-18 | 上海达梦数据库有限公司 | 一种数据操作的优化方法、装置、设备和存储介质 |
CN109508334A (zh) * | 2018-11-23 | 2019-03-22 | 中科驭数(北京)科技有限公司 | 针对区块链数据库的数据压缩方法、访问方法和系统 |
Non-Patent Citations (1)
Title |
---|
方祝和: ""内存数据库中多表连接的性能优化"", 《中国博士学位论文全文数据库(电子期刊)》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210334409A1 (en) * | 2020-04-27 | 2021-10-28 | International Business Machines Corporation | Integrity verification in cloud key-value stores |
US11645424B2 (en) * | 2020-04-27 | 2023-05-09 | International Business Machines Corporation | Integrity verification in cloud key-value stores |
CN112035578A (zh) * | 2020-11-06 | 2020-12-04 | 北京谷数科技股份有限公司 | 基于众核处理器的数据并行处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111221827B (zh) | 2023-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110348562B (zh) | 神经网络的量化策略确定方法、图像识别方法和装置 | |
CN110493333B (zh) | 一种目标位置点的确定方法、装置、设备及存储介质 | |
US9286312B2 (en) | Data coreset compression | |
CN113326126A (zh) | 任务处理方法、任务调度方法、装置及计算机设备 | |
CN112132279A (zh) | 卷积神经网络模型压缩方法、装置、设备及存储介质 | |
CN111221827A (zh) | 基于图形处理器的数据库表连接方法、装置、计算机设备和存储介质 | |
CN111275358A (zh) | 派单匹配方法、装置、设备及存储介质 | |
CN115344692A (zh) | 聚类方法、装置、计算机设备和存储介质 | |
CN110135428B (zh) | 图像分割处理方法和装置 | |
CN115438804A (zh) | 预测模型训练方法、装置、设备以及图像预测方法 | |
CN116662876A (zh) | 多模态认知决策方法、系统、装置、设备及存储介质 | |
US20130185238A1 (en) | Splitting device, splitting method, and recording medium | |
CN115859016A (zh) | 基于处理器的运算方法、装置、计算机设备及存储介质 | |
CN115797267A (zh) | 图像质量评估方法、系统、电子设备和存储介质 | |
CN112217585B (zh) | 信号路径的确定方法、装置、计算机设备和存储介质 | |
CN115935060A (zh) | 网点布局位置筛选方法、装置和计算机设备 | |
US20220343146A1 (en) | Method and system for temporal graph neural network acceleration | |
CN112101284A (zh) | 图像识别方法、图像识别模型的训练方法、装置及系统 | |
CN113743448A (zh) | 模型训练数据获取方法、模型训练方法和装置 | |
CN115100286B (zh) | 无人机采集视点确定方法、装置、计算机设备和存储介质 | |
CN117290741B (zh) | 车辆聚类方法、装置、计算机设备和存储介质 | |
CN113360102B (zh) | 打印文件的生成方法、装置、计算机设备和存储介质 | |
CN113391850B (zh) | 基于边云协同的任务调度方法、装置、设备及存储介质 | |
CN117314036A (zh) | 工单分配方法、装置、设备、存储介质和程序产品 | |
CN111448575A (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 |