CN111506670B - 一种数据处理方法、装置及设备 - Google Patents
一种数据处理方法、装置及设备 Download PDFInfo
- Publication number
- CN111506670B CN111506670B CN201910099172.1A CN201910099172A CN111506670B CN 111506670 B CN111506670 B CN 111506670B CN 201910099172 A CN201910099172 A CN 201910099172A CN 111506670 B CN111506670 B CN 111506670B
- Authority
- CN
- China
- Prior art keywords
- data
- determining
- external address
- available external
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据处理方法、装置及设备,该方法包括:获取连接请求,连接请求用于将第一数据表与第二数据表进行连接;针对第一数据表的第一数据行,确定第一数据行对应的第一特征值,确定与第一特征值对应的第一可用外部地址,并在第一可用外部地址对应的逻辑芯片的存储位置存储第一数据行;针对第二数据表的第二数据行,确定第二数据行对应的第二特征值,确定与第二特征值对应的第二可用外部地址,并从第二可用外部地址对应的逻辑芯片的存储位置读取第一数据行;根据第二数据行与读取的第一数据行进行连接操作。通过本申请的技术方案,节省CPU的资源,节约计算时间。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种数据处理方法、装置及设备。
背景技术
数据库(如关系数据库、Hbase数据库等)通常以数据表的形式存储数据,每个数据表可以包括多行数据,每行数据包括键值(即key)和载荷(即payload)。连接(join)操作是数据库的一种常见操作,用于按照某个条件(如连接条件等),将一个数据表中的行与另一个数据表中的行连接起来,形成一个新数据行。
例如,数据库可以包括数据表A和数据表B,假设需要对数据表A和数据表B进行连接操作,数据表A的第一行包括键值1和载荷A1,数据表B的第三行包括键值1和载荷B3,则将数据表A的第一行与数据表B的第三行连接起来,形成一个新数据行,这个新数据行包括键值1、载荷A1和载荷B3。
为了实现上述连接操作,则针对数据表A中的每行数据,以第一行数据为例,即键值1和载荷A1,CPU(Central Processing Unit,中央处理器)判断键值1与数据表B的第一行数据的键值是否相同,如果相同,则将二者进行连接,如果不同,则判断键值1与数据表B的第二行数据的键值是否相同,以此类推,一直到从数据表B中查询到与键值1匹配的数据,并将二者进行连接。
显然,在上述方式中,针对数据表A中的每行数据,均需要遍历数据表B中的每行数据,并比较二者的键值是否相同,上述操作需要消耗CPU的大量资源,CPU的工作量非常大,而且,上述操作需要消耗大量的计算时间。
发明内容
本申请提供一种数据处理方法,所述方法包括:
获取连接请求,所述连接请求用于将第一数据表与第二数据表进行连接;
针对所述第一数据表的第一数据行,确定所述第一数据行对应的第一特征值,确定与所述第一特征值对应的第一可用外部地址,并在所述第一可用外部地址对应的逻辑芯片的存储位置存储所述第一数据行;
针对所述第二数据表的第二数据行,确定所述第二数据行对应的第二特征值,确定与所述第二特征值对应的第二可用外部地址,并从所述第二可用外部地址对应的逻辑芯片的存储位置读取第一数据行;
根据所述第二数据行与读取的第一数据行进行连接操作。
本申请提供一种数据处理方法,应用于逻辑芯片,所述方法包括:
获取连接请求,所述连接请求用于将第一数据表与第二数据表进行连接;
若所述第一数据表的数据行数量小于逻辑芯片的承载数量上限,将所述第一数据表确定为待加载的数据表,将所述第二数据表确定为待探测的数据表;
针对所述第一数据表的第一数据行,确定所述第一数据行对应的第一特征值,确定与所述第一特征值对应的第一可用外部地址,并在所述第一可用外部地址对应的逻辑芯片的存储位置存储所述第一数据行;
针对所述第二数据表的第二数据行,确定所述第二数据行对应的第二特征值,确定与所述第二特征值对应的第二可用外部地址,并从所述第二可用外部地址对应的逻辑芯片的存储位置读取第一数据行;
根据所述第二数据行与读取的第一数据行进行连接操作。
本申请提供一种数据处理方法,应用于逻辑芯片,所述方法包括:
获取连接请求,所述连接请求用于将第一数据表与第二数据表进行连接;
将所述第一数据表的第一数据行存储到所述逻辑芯片的存储位置;
从所述第二数据表读取第二数据行,并从所述逻辑芯片的存储位置读取第一数据行,根据所述第二数据行与读取的第一数据行进行连接操作。
本申请提供一种数据处理方法,所述方法包括:
获取连接请求,所述连接请求用于将第一数据表与第二数据表进行连接;
针对所述第一数据表的第一数据行,确定所述第一数据行对应的第一特征值,从位图数据结构中确定与所述第一特征值对应的第一位置;根据所述第一位置确定与所述第一特征值对应的第一可用外部地址,并在所述第一可用外部地址对应的逻辑芯片的存储位置存储所述第一数据行;
针对所述第二数据表的第二数据行,确定所述第二数据行对应的第二特征值,从位图数据结构中确定与所述第一特征值对应的起始位置和结束位置;根据所述起始位置和所述结束位置确定与所述第二特征值对应的第二可用外部地址,并从所述第二可用外部地址对应的逻辑芯片的存储位置读取第一数据行;
根据所述第二数据行与读取的第一数据行进行连接操作。
本申请提供一种数据处理装置,所述装置包括:
获取模块,用于获取连接请求,其中,所述连接请求用于将第一数据表与第二数据表进行连接;
加载模块,用于针对所述第一数据表的第一数据行,确定所述第一数据行对应的第一特征值,确定与所述第一特征值对应的第一可用外部地址,并在所述第一可用外部地址对应的逻辑芯片的存储位置存储所述第一数据行;
探测模块,用于针对所述第二数据表的第二数据行,确定所述第二数据行对应的第二特征值,确定与所述第二特征值对应的第二可用外部地址,并从所述第二可用外部地址对应的逻辑芯片的存储位置读取第一数据行;根据所述第二数据行与读取的第一数据行进行连接操作。
本申请提供一种数据处理设备,包括:
逻辑芯片和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述逻辑芯片和执行所述计算机指令时进行如下处理:
获取连接请求,所述连接请求用于将第一数据表与第二数据表进行连接;
针对所述第一数据表的第一数据行,确定所述第一数据行对应的第一特征值,确定与所述第一特征值对应的第一可用外部地址,并在所述第一可用外部地址对应的逻辑芯片的存储位置存储所述第一数据行;
针对所述第二数据表的第二数据行,确定所述第二数据行对应的第二特征值,确定与所述第二特征值对应的第二可用外部地址,并从所述第二可用外部地址对应的逻辑芯片的存储位置读取第一数据行;
根据所述第二数据行与读取的第一数据行进行连接操作。
基于上述技术方案,本申请实施例中,在需要将第一数据表与第二数据表进行连接时,由逻辑芯片对第一数据表的第一数据行与第二数据表的第二数据行进行连接,避免CPU对第一数据行与第二数据行进行连接,节省CPU的资源。充分利用逻辑芯片的硬件资源,最大化发挥逻辑芯片的性能,能够快速对数据行进行连接操作,有效加速了表连接的计算,节约计算时间,提高计算效率。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其它的附图。
图1是本申请一种实施方式中的数据处理方法的流程图;
图2是本申请一种实施方式中的应用场景示意图;
图3A-图3C是本申请一种实施方式中的数据处理方法的流程图;
图4是本申请一种实施方式中的数据处理装置的结构图;
图5是本申请一种实施方式中的数据处理设备的硬件结构图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请实施例中提出一种数据处理方法,该数据处理方法可以应用于任意设备的逻辑芯片,该逻辑芯片可以如FPGA(Field Programmable Gate Array,现场可编程门阵列)芯片、ASIC(Application Specific Integrated Circuits,专用集成电路)芯片、CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)芯片等。参见图1所示,为该方法的流程图,该方法可以包括:
步骤101,获取连接请求,该连接请求用于将第一数据表与第二数据表进行连接。其中,该第一数据表的数据行数量可以小于该第二数据表的数据行数量;或者,该第一数据表的数据行数量可以大于该第二数据表的数据行数量;或者,该第一数据表的数据行数量可以等于该第二数据表的数据行数量。
其中,该第一数据表的数据行数量小于该逻辑芯片的承载数量上限。
步骤102,针对第一数据表的第一数据行,确定第一数据行对应的第一特征值,确定与第一特征值对应的第一可用外部地址,并在第一可用外部地址对应的逻辑芯片的存储位置(如逻辑芯片的外部存储空间)存储该第一数据行。
在一个例子中,针对第一数据表的每个第一数据行,确定该第一数据行对应的第一特征值,可以包括但不限于:采用预设算法对该第一数据行的键值进行处理,得到第一特征值。其中,预设算法可以包括但不限于hash算法。
在一个例子中,确定与第一特征值对应的第一可用外部地址,可以包括但不限于:从数据结构中确定与第一特征值对应的第一位置。若该第一位置为第一标识(如0),则可以根据第一位置确定第一可用外部地址,并将第一位置修改为第二标识。或者,若该第一位置为第二标识(如1),则可以从该数据结构的第一位置开始,向指定方向(如向后或者向前)遍历首个为第一标识的第二位置,根据第二位置确定第一可用外部地址,并将第二位置修改为第二标识。
其中,根据第一位置确定第一可用外部地址,可以包括:根据第一位置和地址放大系数确定第一可用外部地址。根据第二位置确定第一可用外部地址,可以包括:根据第二位置和地址放大系数确定第一可用外部地址。
步骤103,针对第二数据表的第二数据行,确定第二数据行对应的第二特征值,确定与第二特征值对应的第二可用外部地址,并从第二可用外部地址对应的逻辑芯片的存储位置(如逻辑芯片的外部存储空间)读取第一数据行。
在一个例子中,针对第二数据表的每个第二数据行,确定该第二数据行对应的第二特征值,可以包括但不限于:采用预设算法对该第二数据行的键值进行处理,得到第二特征值。其中,预设算法可以包括但不限于hash算法。
在一个例子中,确定与第二特征值对应的第二可用外部地址,可以包括但不限于:从数据结构中确定与第二特征值对应的起始位置,并从该数据结构的起始位置开始,向指定方向(如向后或者向前)遍历出首个为第一标识(如0)的第三位置,并将该第三位置前面的第一个位置确定为结束位置。进一步的,可以根据该起始位置和该结束位置确定第二可用外部地址。
其中,根据该起始位置和该结束位置确定第二可用外部地址,可以包括但不限于:根据起始位置和地址放大系数确定起始可用外部地址;根据结束位置和地址放大系数确定结束可用外部地址;将起始可用外部地址与结束可用外部地址之间的可用外部地址,确定为与第二特征值对应的第二可用外部地址。
步骤104,根据第二数据行与读取的第一数据行进行连接操作。
具体的,针对第二数据表的每个第二数据行,采用步骤103的方式读取第一数据行,并根据该第二数据行与读取的第一数据行进行连接操作。
例如,若该第二数据行的键值与读取的第一数据行的键值相同,则可以将该第二数据行与该读取的第一数据行合并,并输出合并后的数据行。
在上述实施例中,数据结构可以包括但不限于位图数据结构,即bitmap。
此外,数据结构可以包括多个位置,每个位置的初始值为第一标识(如0);在后续过程中,每个位置的取值可以被修改为第二标识(如1)。
此外,数据结构的位置数量大于或等于第一数据表的数据行数量。
在一个例子中,上述执行顺序只是为了方便描述给出的一个示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
基于上述技术方案,本申请实施例中,在需要将第一数据表与第二数据表进行连接时,由逻辑芯片对第一数据表的第一数据行与第二数据表的第二数据行进行连接,避免CPU对第一数据行与第二数据行进行连接,节省CPU的资源。充分利用逻辑芯片的硬件资源,最大化发挥逻辑芯片的性能,能够快速对数据行进行连接操作,有效加速了表连接的计算,节约计算时间,提高计算效率。
基于与上述方法同样的申请构思,本申请实施例中提出另一种数据处理方法,可以应用于逻辑芯片,该方法可以包括:获取连接请求,该连接请求用于将第一数据表与第二数据表进行连接。若第一数据表的数据行数量小于逻辑芯片的承载数量上限,则将第一数据表确定为待加载的数据表,并将第二数据表确定为待探测的数据表。针对第一数据表的每个第一数据行,确定该第一数据行对应的第一特征值,确定与第一特征值对应的第一可用外部地址,并在第一可用外部地址对应的逻辑芯片的存储位置存储该第一数据行。针对第二数据表的每个第二数据行,确定该第二数据行对应的第二特征值,确定与第二特征值对应的第二可用外部地址,并从第二可用外部地址对应的逻辑芯片的存储位置读取第一数据行;根据该第二数据行与读取的第一数据行进行连接操作。
基于与上述方法同样的申请构思,本申请实施例中提出另一种数据处理方法,可以应用于逻辑芯片,该方法可以包括:获取连接请求,该连接请求用于将第一数据表与第二数据表进行连接;将该第一数据表的第一数据行存储到逻辑芯片的存储位置;从第二数据表读取第二数据行,并从逻辑芯片的存储位置读取第一数据行,根据该第二数据行与读取的第一数据行进行连接操作。
基于与上述方法同样的申请构思,本申请实施例中提出另一种数据处理方法,该数据处理方法可以应用于逻辑芯片,该方法包括以下步骤:
获取连接请求,该连接请求用于将第一数据表与第二数据表进行连接。
针对第一数据表的第一数据行,确定第一数据行对应的第一特征值,从位图数据结构中确定与第一特征值对应的第一位置。根据第一位置确定与第一特征值对应的第一可用外部地址;具体的,若第一位置为第一标识,根据第一位置确定第一可用外部地址,将第一位置修改为第二标识;若第一位置为第二标识,从位图数据结构的第一位置开始,向指定方向遍历首个为第一标识的第二位置;根据第二位置确定第一可用外部地址,将第二位置修改为第二标识。然后,在第一可用外部地址对应的逻辑芯片的存储位置存储所述第一数据行。
针对第二数据表的第二数据行,确定第二数据行对应的第二特征值,从位图数据结构中确定与第一特征值对应的起始位置和结束位置;具体的,在确定起始位置后,可以从位图数据结构的起始位置开始,向指定方向遍历首个为第一标识的第三位置,并将第三位置前面的第一个位置确定为结束位置。然后,根据起始位置和结束位置确定与第二特征值对应的第二可用外部地址,并从第二可用外部地址对应的逻辑芯片的存储位置读取第一数据行。
根据第二数据行与读取的第一数据行进行连接操作。
以下结合具体应用场景,对上述技术方案进行进一步的说明。
参见图2所示,为本申请实施例的应用场景示意图,客户端可以是终端设备(如PC(PersonalComputer,个人计算机)、笔记本电脑、移动终端等)包括的APP(Application,应用),或是终端设备包括的浏览器,对此不做限制。
参见图2所示,以4个数据库为例,其数量还可以为其它数量,对此不做限制。本实施例中,这些数据库可以是相同类型的数据库,也可以是不同类型的数据库。这些数据库可以是关系型数据库,也可以是非关系型数据库,对此不做限制。对于每个数据库来说,其类型可以包括但不限于:OSS(Object Storage Service,对象存储服务)、TableStore(表格存储)、HBase(Hadoop Database,Hadoop数据库)、HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)、MySQL等,当然,上述只是几个示例,对此不做限制。
其中,数据库用于存储各种类型的数据,对此数据类型不做限制,如可以是用户数据、商品数据、地图数据、视频数据、图像数据、音频数据等。
参见图2所示,数据处理设备是用于对数据库中的数据进行操作的任意设备,本实施例中,只介绍数据的连接(join)操作,对于其它操作不再赘述。其中,连接操作是数据库的一种常见操作,用于按照某个条件(如连接条件等),将一个数据表中的行与另一个数据表中的行连接起来,形成一个新数据行。
为了实现连接操作,数据处理设备可以包括逻辑芯片(如FPGA芯片、ASIC芯片、CPLD芯片等)和逻辑芯片对应的外部动态存储器(如DDR等),且由逻辑芯片实现连接操作,而不是由CPU(Central Processing Unit,中央处理器)实现连接操作。当然,数据处理设备还可以包括其它器件,对此不做限制。
基于上述应用场景,本申请实施例中提出一种数据处理方法,参见图3A所示,为所述数据处理方法的流程示意图,所述数据处理方法可以包括:
步骤301,逻辑芯片获取连接请求,该连接请求用于将第一数据表与第二数据表进行连接。具体的,客户端可以发送连接请求,如SQL(Structured Query Language,结构化查询语言)的连接(join)请求,且逻辑芯片可以获取到该连接请求,该连接请求可以携带第一数据表的信息(如表名称)和第二数据表的信息(如表名称),即这个连接请求用于将第一数据表与第二数据表进行连接。
步骤302,逻辑芯片确定待加载的数据表和待探测的数据表。例如,将第一数据表确定为待加载的数据表,将第二数据表确定为待探测的数据表。或者,将第二数据表确定为待加载的数据表,将第一数据表确定为待探测的数据表。
本实施例中,为了方便描述,将第一数据表确定为待加载的数据表,将第二数据表确定为待探测的数据表。其中,第一数据表的数据行数量可以小于逻辑芯片的承载数量上限。第二数据表的数据行数量可以小于逻辑芯片的承载数量上限,也可以大于或者等于逻辑芯片的承载数量上限,对此不做限制。
进一步的,该第一数据表的数据行数量可以小于该第二数据表的数据行数量;或者,该第一数据表的数据行数量可以大于该第二数据表的数据行数量;或者,该第一数据表的数据行数量可以等于该第二数据表的数据行数量。
例如,连接请求用于将数据表A与数据表B进行连接,且逻辑芯片能够获知逻辑芯片的承载数量上限,即外部动态存储器(如DDR)最多承载的最大数据量,如最多存储1000行数据。进一步的,若逻辑芯片获知数据表A的数据行数量小于该承载数量上限,但是未获知数据表B的数据行数量是否小于该承载数量上限,则可以将数据表A确定为第一数据表,即待加载的数据表,并将数据表B确定为第二数据表,即待探测的数据表。若逻辑芯片获知数据表A的数据行数量小于该承载数量上限,且获知数据表B的数据行数量小于该承载数量上限,则可以将数据表A确定为第一数据表,即待加载的数据表,并将数据表B确定为第二数据表,即待探测的数据表,或者,将数据表B确定为第一数据表,即待加载的数据表,并将数据表A确定为第二数据表,即待探测的数据表。若逻辑芯片获知数据表A的数据行数量小于该承载数量上限,且获知数据表B的数据行数量大于该承载数量上限,则可以将数据表A确定为第一数据表,即待加载的数据表,并将数据表B确定为第二数据表,即待探测的数据表。
当然,上述方式只是几个示例,对此不做限制,只要最终确定的第一数据表的数据行数量小于该承载数量上限即可,对于第二数据表不做限制。综上所述,由于第一数据表的数据行数量小于该承载数量上限,因此,逻辑芯片对应的外部动态存储器(如DDR),能够存储所述第一数据表的所有内容。
步骤303,逻辑芯片针对第一数据表的每个第一数据行(为了区别方便,将第一数据表的每个数据行称为第一数据行)进行加载操作(build操作)。
具体的,在对每个第一数据行进行加载操作时,逻辑芯片只向外部动态存储器(如DDR)中写入数据,而不从外部动态存储器(如DDR)中读取数据,从而最大化利用带宽,能够采用数据流的方式交互,最大化硬件计算效率。
参见图3B所示,为针对每个第一数据行进行加载操作的示意图,由于每个第一数据行的处理流程相同,因此,以一个第一数据行为例进行说明。
步骤3031,逻辑芯片从第一数据表中读取第一数据行,确定第一数据行对应的第一特征值(为区分方便,将第一数据行对应的特征值称为第一特征值)。
具体的,逻辑芯片可以配置预设算法,且逻辑芯片可以采用预设算法对第一数据行的键值进行处理,得到第一特征值。其中,预设算法可以包括但不限于hash算法,该hash算法用于将任意长度的输入数据(即第一数据行的键值)映射到固定长度的输出数据(即第一特征值),对此hash算法不做限制。
参见表1所示,为第一数据表的一个示例,第一数据表可以包括多行数据,每行数据可以包括键值(即key)和载荷(即payload)。表1是以3行数据为例,在实际应用中,第一数据表的内容远远大于3行数据,对此不做限制。
表1
键值 | 载荷 |
aaa | payload11 |
bbb | payload12 |
ccc | payload13 |
为了区分方便,在后续实施例中,将第一数据表的第一行数据(aaa对应的数据)称为第一数据行1,将第一数据表的第二行数据(bbb对应的数据)称为第一数据行2,将第一数据表的第三行数据(ccc对应的数据)称为第一数据行。
在一个例子中,假设hash算法用于将输入数据转换为[1-N]之间的输出数据(整数值),对此hash算法的内容不做限制,只要hash算法用于将输入数据转换为[1-N]之间的输出数据(整数值)即可。其中,N的取值可以为第一数据表的数据行数量,当然,N也可以为其它数值,例如,N可以大于第一数据表的数据行数量,或者,N可以小于第一数据表的数据行数量,对此N的取值不做限制。例如,若第一数据表的数据行数量为1000,则N的取值可以为1000。
逻辑芯片在从第一数据表中读取第一数据行1后,采用hash算法对第一数据行1的键值“aaa”进行处理,对此处理过程不做限制,与hash算法有关。在对键值“aaa”进行处理后,可以得到位于[1-N]之间的数值,即第一特征值。
步骤3032,逻辑芯片确定与第一特征值对应的第一可用外部地址。
具体的,逻辑芯片从数据结构中确定与第一特征值对应的第一位置。若该第一位置为第一标识(如0),则根据第一位置确定第一可用外部地址,将第一位置修改为第二标识。或者,若该第一位置为第二标识(如1),则从该数据结构的第一位置开始,向指定方向(如向后或者向前)遍历首个为第一标识的第二位置,根据第二位置确定第一可用外部地址,将第二位置修改为第二标识。
在一个例子中,逻辑芯片可以维护一个数据结构,该数据结构可以包括多个位置,每个位置的初始值为第一标识(如0),且数据结构的位置数量大于或等于第一数据表的数据行数量。例如,数据结构包括位图数据结构,即bitmap,后续以bitmap为例进行说明。初始状态下,bitmap的所有位置的初始值为第一标识(如0),假设第一数据表的数据行数量为10,则bitmap可以有10个位置,即位置数量大于或等于数据行数量,参见表2所示,为bitmap的一个示例。
表2
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
例如,在对键值“aaa”进行处理后,假设第一特征值为5,则逻辑芯片从bitmap中确定与第一特征值5对应的第一位置(即bitmap的第5个位置),由于该第一位置为0,因此,逻辑芯片根据第一位置(即bitmap的第5个位置)确定第一可用外部地址1,并将该第一位置修改为1,参见表3所示。
表3
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
又例如,在对键值“bbb”进行处理后,假设第一特征值为5,则逻辑芯片从bitmap中确定与第一特征值5对应的第一位置(bitmap的第5个位置),由于该第一位置为1,因此,逻辑芯片从第一位置开始,向指定方向(如向后)遍历首个为0的第二位置(bitmap的第6个位置),并根据第二位置(bitmap的第6个位置)确定第一可用外部地址2,并将第二位置修改为1,参见表4所示。
表4
0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
又例如,在对键值“ccc”进行处理后,假设第一特征值为6,则逻辑芯片从bitmap中确定与第一特征值6对应的第一位置(bitmap的第6个位置),由于该第一位置为1,因此,逻辑芯片从第一位置开始,向指定方向(如向后)遍历首个为0的第二位置(bitmap的第7个位置),并根据第二位置(bitmap的第7个位置)确定第一可用外部地址3,并将第二位置修改为1,参见表5所示。
表5
0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 |
在上述实施例中,根据第一位置确定第一可用外部地址,可以包括:根据第一位置和地址放大系数确定第一可用外部地址。根据第二位置确定第一可用外部地址,可以包括:根据第二位置和地址放大系数确定第一可用外部地址。
其中,地址放大系数可以基于第一数据行的长度决定。例如,地址放大系数为第一数据行的长度,若第一数据行为8个字节,地址放大系数为8个字节。
在上述实施例中,逻辑芯片根据第一位置(即bitmap的第5个位置)确定第一可用外部地址1,可以包括:确定起始地址为(第一位置-1)*8(即地址放大系数),结束地址为第一位置*8,即第一可用外部地址1为外部动态存储器(如DDR)的第32个字节-外部动态存储器(如DDR)的第40个字节。
逻辑芯片根据第二位置(bitmap的第6个位置)确定第一可用外部地址2,可以包括:确定起始地址为(第二位置-1)*8,结束地址为第二位置*8,即第一可用外部地址2可以为外部动态存储器的第40个字节-第48个字节。
逻辑芯片根据第二位置(bitmap的第7个位置)确定第一可用外部地址3,可以包括:确定起始地址为(第二位置-1)*8,结束地址为第二位置*8,即第一可用外部地址3可以为外部动态存储器的第48个字节-第56个字节。
步骤3033,逻辑芯片在第一可用外部地址对应的逻辑芯片的存储位置(如逻辑芯片的外部存储空间,即外部动态存储器)存储该第一数据行。
例如,第一数据行1对应第一可用外部地址1,由于第一可用外部地址1为外部动态存储器的第32个字节-第40个字节,因此,逻辑芯片可以将第一数据行1存储到外部动态存储器的第32个字节-第40个字节。第一数据行2对应第一可用外部地址2,由于第一可用外部地址2为外部动态存储器的第40个字节-第48个字节,因此,逻辑芯片可以将第一数据行2存储到外部动态存储器的第40个字节-第48个字节。第一数据行3对应第一可用外部地址3,由于第一可用外部地址3为外部动态存储器的第48个字节-第56个字节,因此,逻辑芯片可以将第一数据行3存储到外部动态存储器的第48个字节-第56个字节。
综上所述,针对第一数据表的每个第一数据行,在对第一数据行进行加载操作时,先确定第一数据行对应的第一特征值,从bitmap中确定与第一特征值对应的第一位置,并从第一位置开始,从bitmap中搜索第一个为0的位置(如第一位置或者第二位置),只要bitmap中的位置数量不小于第一数据表的数据行数量,总能搜索到第一个为0的位置,当搜索到bitmap的最后一个位置时,从bitmap的第一个位置搜索。然后,将第一个为0的位置确定为可用位置,在bitmap中将可用位置修改为1,将可用位置换算为可用外部地址(即外部动态存储器的存储空间),并将第一数据行存储到外部动态存储器的该可用外部地址。
针对第一数据表的每个第一数据行,重复上述步骤,一直到将第一数据表的所有第一数据行存储到外部动态存储器的可用外部地址,完成加载操作。
在上述实施例中,逻辑芯片包括可以由BRAM(Bipolar Random Access Memory,双极随机存取存储器)组成的bitmap,且bitmap用于记录每个第一数据行的key经过hash映射之后的统计分布,bitmap的bit(即上述位置)唯一对应第一数据行,bitmap中bit的地址高位是第一数据行的key的hash映射值,地址低位是hash预分组的组内偏移。在一个示例中,存储bitmap的BRAM可以采用大位宽实现,从而实现同时对第一数据表的多个行数据的检索。
步骤304,逻辑芯片针对第二数据表的每个第二数据行(为了区别方便,将第二数据表的每个数据行称为第二数据行)进行探测操作(probe操作)。
具体的,在对每个第二数据行进行探测操作时,逻辑芯片只从外部动态存储器(如DDR)中读取数据,而不向外部动态存储器(如DDR)中写入数据,从而最大化利用带宽,能够采用数据流的方式交互,最大化硬件计算效率。
参见图3C所示,为针对每个第二数据行进行探测操作的示意图,由于每个第二数据行的处理流程相同,因此,以一个第二数据行为例进行说明。
步骤3041,逻辑芯片从第二数据表中读取第二数据行,确定第二数据行对应的第二特征值(为区分方便,将第二数据行对应的特征值称为第二特征值)。
具体的,逻辑芯片可以配置预设算法,且可以采用预设算法对第二数据行的键值进行处理,得到第二特征值。预设算法可以包括但不限于hash算法,该hash算法用于将任意长度的输入数据(即第二数据行的键值)映射到固定长度的输出数据(即第二特征值),此hash算法与步骤3031的hash算法相同。
参见表6所示,为第二数据表的一个示例,第二数据表可以包括多行数据,每行数据可以包括键值(即key)和载荷(即payload)。表6是以4行数据为例,在实际应用中,第二数据表的内容远远大于4行数据,对此不做限制。
表6
键值 | 载荷 |
ccc | payload21 |
bbb | payload22 |
aaa | payload23 |
ddd | payload24 |
为了区分方便,在后续实施例中,将第二数据表的第二行数据(ccc对应的数据)称为第二数据行1,将第二数据表的第二行数据(bbb对应的数据)称为第二数据行2,将第二数据表的第三行数据(aaa对应的数据)称为第二数据行3,将第二数据表的第四行数据(ddd对应的数据)称为第二数据行4。
在一个例子中,hash算法用于将输入数据转换为[1-N]之间的输出数据(整数值),N的取值可以为第一数据表的数据行数量,如N的取值可以为1000。
逻辑芯片在从第二数据表中读取第二数据行1后,采用hash算法对第二数据行1的键值“ccc”进行处理,对此处理过程不做限制,与hash算法有关。在对键值“ccc”进行处理后,可以得到位于[1-N]之间的数值,即第二特征值。
步骤3042,逻辑芯片确定与第二特征值对应的第二可用外部地址。
具体的,逻辑芯片从数据结构中确定与第二特征值对应的起始位置,并从该数据结构的起始位置开始,向指定方向(如向后或者向前)遍历出首个为第一标识(如0)的第三位置,并将该第三位置前面的第一个位置确定为结束位置。进一步的,可以根据该起始位置和该结束位置确定第二可用外部地址。
参见上述实施例,逻辑芯片维护的数据结构可以为bitmap,参见表5所示。
在对键值“ccc”进行处理后,假设第二特征值为6,则逻辑芯片从bitmap中确定与第二特征值6对应的起始位置(bitmap的第6个位置),从起始位置开始,向指定方向(如向后)遍历首个为0的第三位置(bitmap的第8个位置),将第三位置前面的第一个位置(bitmap的第7个位置)确定为结束位置。综上所述,起始位置为bitmap的第6个位置,结束位置为bitmap的第7个位置。
在对键值“bbb”进行处理后,假设第二特征值为5,则逻辑芯片从bitmap中确定与第二特征值5对应的起始位置(bitmap的第5个位置),从起始位置开始,向指定方向(如向后)遍历首个为0的第三位置(bitmap的第8个位置),将第三位置前面的第一个位置(bitmap的第7个位置)确定为结束位置。综上所述,起始位置为bitmap的第5个位置,结束位置为bitmap的第7个位置。
在对键值“aaa”进行处理后,假设第二特征值为5,则逻辑芯片从bitmap中确定与第二特征值5对应的起始位置(bitmap的第5个位置),从起始位置开始,向指定方向(如向后)遍历首个为0的第三位置(bitmap的第8个位置),将第三位置前面的第一个位置(bitmap的第7个位置)确定为结束位置。综上所述,起始位置为bitmap的第5个位置,结束位置为bitmap的第7个位置。
在对键值“ddd”进行处理后,假设第二特征值为9,则逻辑芯片从bitmap中确定与第二特征值9对应的起始位置(即bitmap的第9个位置),由于起始位置已经为0,因此,起始位置和结束位置均为bitmap的第9个位置。
在上述实施例中,根据该起始位置和该结束位置确定第二可用外部地址,可以包括但不限于:根据该起始位置和地址放大系数确定起始可用外部地址;根据该结束位置和地址放大系数确定结束可用外部地址;将起始可用外部地址与结束可用外部地址之间的可用外部地址,确定为第二可用外部地址。
其中,地址放大系数可以基于第一数据行的长度决定。例如,地址放大系数为第一数据行的长度,若第一数据行为8个字节,地址放大系数为8个字节。
在上述实施例中,针对第二数据行1,起始位置为bitmap的第6个位置,结束位置为bitmap的第7个位置,逻辑芯片根据起始位置(即bitmap的第6个位置)确定起始可用外部地址1,如(起始位置-1)*8至起始位置*8,即起始可用外部地址1为外部动态存储器的第40个字节-第48个字节。根据结束位置(即bitmap的第7个位置)确定结束可用外部地址1,如(结束位置-1)*8至结束位置*8,即结束可用外部地址1为外部动态存储器的第48个字节-第56个字节。然后,将起始可用外部地址与结束可用外部地址之间的可用外部地址,确定为第二可用外部地址1,即外部动态存储器的第40个字节-第56个字节。
针对第二数据行2,起始位置为bitmap的第5个位置,结束位置为bitmap的第7个位置,逻辑芯片根据起始位置(即bitmap的第5个位置)确定起始可用外部地址2,如起始可用外部地址2为外部动态存储器的第32个字节-第40个字节。根据结束位置(即bitmap的第7个位置)确定结束可用外部地址2,如结束可用外部地址2为外部动态存储器的第48个字节-第56个字节。然后,将起始可用外部地址与结束可用外部地址之间的可用外部地址,确定为第二可用外部地址2,即外部动态存储器的第32个字节-第56个字节。
针对第二数据行3,起始位置为bitmap的第5个位置,结束位置为bitmap的第7个位置,因此,根据起始位置和结束位置确定第二数据行3对应的第二可用外部地址3时,是外部动态存储器的第32个字节-第56个字节。
步骤3043,逻辑芯片从第二可用外部地址对应的逻辑芯片的存储位置(如逻辑芯片的外部存储空间,即外部动态存储器)读取第一数据行。
例如,第二数据行1对应第二可用外部地址1,由于第二可用外部地址1为外部动态存储器的第40个字节-第56个字节,因此,逻辑芯片可以从外部动态存储器的第40个字节-第56个字节读取第一数据行。由于第40个字节-第48个字节存储有第一数据行2,第48个字节-第56个字节存储有第一数据行3,因此,逻辑芯片可以从外部动态存储器读取到第一数据行2和第一数据行3。
又例如,第二数据行2对应第二可用外部地址2,由于第二可用外部地址2为外部动态存储器的第32个字节-第56个字节,因此,逻辑芯片可以从外部动态存储器的第32个字节-第56个字节读取第一数据行,也就是说,逻辑芯片可以从外部动态存储器读取到第一数据行1、第一数据行2和第一数据行3。
又例如,第二数据行3对应第二可用外部地址3,由于第二可用外部地址3为外部动态存储器的第32个字节-第56个字节,因此,逻辑芯片可以从外部动态存储器的第32个字节-第56个字节读取第一数据行,也就是说,逻辑芯片可以从外部动态存储器读取到第一数据行1、第一数据行2和第一数据行3。
步骤3044,逻辑芯片根据第二数据行与读取的第一数据行进行连接操作。
例如,针对第二数据行1,读取的第一数据行为第一数据行2和第一数据行3,由于第二数据行1的键值“ccc”与第一数据行2的键值“bbb”不同,但是,第二数据行1的键值“ccc”与第一数据行3的键值“ccc”相同,因此,将第二数据行1和第一数据行3合并,并输出合并后的数据行,对此不再赘述。
针对第二数据行2,读取的第一数据行为第一数据行1、第一数据行2和第一数据行3,由于第二数据行2的键值“bbb”与第一数据行1的键值“aaa”不同,但是,第二数据行2的键值“bbb”与第一数据行2的键值“bbb”相同,因此,将第二数据行2和第一数据行2合并,并输出合并后的数据行。
针对第二数据行3,读取的第一数据行为第一数据行1、第一数据行2和第一数据行3,由于第二数据行3的键值“aaa”与第一数据行1的键值“aaa”相同,因此,将第二数据行3和第一数据行1合并,并输出合并后的数据行。
在一个例子中,针对第二数据行4,由于与第二数据行4的第二特征值9对应的起始位置(即bitmap的第9个位置)为0,表示第一数据表中不存在与第二数据行4的键值“ddd”对应的第一数据行,因此,不需要进行合并,或者,将第二数据行4与空数据行合并,并输出合并后的数据行,在此不再赘述。
综上所述,针对第二数据表的每个第二数据行,在对第二数据行进行探测操作时,先读取第二数据表中的第二数据行,确定第二数据行对应的第二特征值,从bitmap中确定与第二特征值对应的起始位置和结束位置。然后,将起始位置换算为起始可用外部地址,将结束位置换算为结束可用外部地址,并将起始可用外部地址和结束可用外部地址之间的可用外部地址(即外部动态存储器的存储空间)确定为第二可用外部地址,并从第二可用外部地址读取第一数据行。然后,将第二数据行与读取的第一数据行进行比较;如果两个数据行的key相同,则将key、第二数据行的payload、第一数据行的payload合并输出。
针对第二数据表的每个第二数据行,重复上述步骤,一直到为第二数据表的所有第二数据行完成合并操作,至此,成功实现数据表的连接操作。
综上所述,本申请实施例中,在需要将第一数据表与第二数据表进行连接时,由逻辑芯片对第一数据表的第一数据行与第二数据表的第二数据行进行连接,避免CPU对第一数据行与第二数据行进行连接,节省CPU的资源。充分利用逻辑芯片的硬件资源,最大化发挥逻辑芯片的性能,能够快速对数据行进行连接操作,有效加速了表连接的计算,节约计算时间,提高计算效率。
基于上述方式,提出一种基于硬件电路的安全快速表连接方案,能够独立完成流式计算,最大化FPGA性能。bitmap能够采用较少的存储资源实现安全的hash分桶,能够有效防止hash冲突导致计算溢出失败。能够利用高数据位宽,实现并行的行数据检索和处理,实现比CPU等基于指令的计算更高的吞吐率和计算效率。探测操作基于硬件电路的流处理,对于第二数据表没有大小限制。
基于与上述方法同样的申请构思,本申请实施例还提供一种数据处理装置,如图4所示,为所述数据处理装置的结构图,所述数据处理装置包括:
获取模块41,用于获取连接请求,其中,所述连接请求用于将第一数据表与第二数据表进行连接;
加载模块42,用于针对所述第一数据表的第一数据行,确定所述第一数据行对应的第一特征值,确定与所述第一特征值对应的第一可用外部地址,并在所述第一可用外部地址对应的逻辑芯片的存储位置存储所述第一数据行;
探测模块43,用于针对所述第二数据表的第二数据行,确定所述第二数据行对应的第二特征值,确定与所述第二特征值对应的第二可用外部地址,并从所述第二可用外部地址对应的逻辑芯片的存储位置读取第一数据行;根据所述第二数据行与读取的第一数据行进行连接操作。
所述加载模块42确定与所述第一特征值对应的第一可用外部地址时具体用于:从数据结构中确定与所述第一特征值对应的第一位置;
若所述第一位置为第一标识,则根据所述第一位置确定所述第一可用外部地址,并将所述第一位置修改为第二标识;
若所述第一位置为第二标识,则从所述数据结构的第一位置开始,向指定方向遍历首个为第一标识的第二位置;根据所述第二位置确定所述第一可用外部地址,并将所述第二位置修改为第二标识。
所述探测模块43确定与所述第二特征值对应的第二可用外部地址时具体用于:从数据结构中确定与所述第二特征值对应的起始位置;
从所述数据结构的起始位置开始,向指定方向遍历首个为第一标识的第三位置,并将所述第三位置前面的第一个位置确定为结束位置;
根据所述起始位置和所述结束位置确定第二可用外部地址。
基于与上述方法同样的申请构思,本申请实施例还提供一种数据处理设备,包括:逻辑芯片和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述逻辑芯片执行所述计算机指令时进行如下处理:
获取连接请求,所述连接请求用于将第一数据表与第二数据表进行连接;
针对所述第一数据表的第一数据行,确定所述第一数据行对应的第一特征值,确定与所述第一特征值对应的第一可用外部地址,并在所述第一可用外部地址对应的逻辑芯片的存储位置存储所述第一数据行;
针对所述第二数据表的第二数据行,确定所述第二数据行对应的第二特征值,确定与所述第二特征值对应的第二可用外部地址,并从所述第二可用外部地址对应的逻辑芯片的存储位置读取第一数据行;
根据所述第二数据行与读取的第一数据行进行连接操作。
本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令;所述计算机指令被执行时进行如下处理:
获取连接请求,所述连接请求用于将第一数据表与第二数据表进行连接;
针对所述第一数据表的第一数据行,确定所述第一数据行对应的第一特征值,确定与所述第一特征值对应的第一可用外部地址,并在所述第一可用外部地址对应的逻辑芯片的存储位置存储所述第一数据行;
针对所述第二数据表的第二数据行,确定所述第二数据行对应的第二特征值,确定与所述第二特征值对应的第二可用外部地址,并从所述第二可用外部地址对应的逻辑芯片的存储位置读取第一数据行;
根据所述第二数据行与读取的第一数据行进行连接操作。
参见图5所示,为本申请实施例中提出的数据处理设备的结构图,所述数据处理设备50可以包括:逻辑芯片51,网络接口52,总线53,存储器54。
存储器54可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据等等。例如,存储器54可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等)。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (13)
1.一种数据处理方法,其特征在于,所述方法包括:
获取连接请求,所述连接请求用于将第一数据表与第二数据表进行连接;
针对所述第一数据表的第一数据行,确定所述第一数据行对应的第一特征值,确定与所述第一特征值对应的第一可用外部地址,并在所述第一可用外部地址对应的逻辑芯片的存储位置存储所述第一数据行;
针对所述第二数据表的第二数据行,确定所述第二数据行对应的第二特征值,确定与所述第二特征值对应的第二可用外部地址,并从所述第二可用外部地址对应的逻辑芯片的存储位置读取第一数据行;所述确定与所述第二特征值对应的第二可用外部地址,包括:从数据结构中确定与所述第二特征值对应的起始位置;从所述数据结构的起始位置开始,向指定方向遍历首个为第一标识的第三位置,并将所述第三位置前面的第一个位置确定为结束位置;根据所述起始位置和所述结束位置确定第二可用外部地址;
根据所述第二数据行与读取的第一数据行进行连接操作。
2.根据权利要求1所述的方法,其特征在于,
所述确定所述第一数据行对应的第一特征值,包括:
采用预设算法对所述第一数据行的键值进行处理,得到所述第一特征值;
所述确定所述第二数据行对应的第二特征值,包括:
采用预设算法对所述第二数据行的键值进行处理,得到所述第二特征值;
其中,所述预设算法包括hash算法。
3.根据权利要求1所述的方法,其特征在于,
所述确定与所述第一特征值对应的第一可用外部地址,包括:
从数据结构中确定与所述第一特征值对应的第一位置;
若所述第一位置为第一标识,则根据所述第一位置确定所述第一可用外部地址,并将所述第一位置修改为第二标识;
若所述第一位置为第二标识,则从所述数据结构的第一位置开始,向指定方向遍历首个为第一标识的第二位置;根据所述第二位置确定所述第一可用外部地址,并将所述第二位置修改为第二标识。
4.根据权利要求3所述的方法,其特征在于,
所述根据所述第一位置确定所述第一可用外部地址,包括:
根据所述第一位置和地址放大系数确定所述第一可用外部地址;
所述根据所述第二位置确定所述第一可用外部地址,包括:
根据所述第二位置和地址放大系数确定所述第一可用外部地址。
5.根据权利要求1所述的方法,其特征在于,
所述根据所述起始位置和所述结束位置确定第二可用外部地址,包括:
根据所述起始位置和地址放大系数确定起始可用外部地址;
根据所述结束位置和地址放大系数确定结束可用外部地址;
将所述起始可用外部地址与所述结束可用外部地址之间的可用外部地址,确定为与所述第二特征值对应的第二可用外部地址。
6.根据权利要求1-5任一项所述的方法,其特征在于,
所述数据结构包括位图数据结构;
所述数据结构包括多个位置,各位置的初始值为第一标识;
所述数据结构的位置数量大于或等于第一数据表的数据行数量。
7.根据权利要求1所述的方法,其特征在于,
所述根据所述第二数据行与读取的第一数据行进行连接操作,包括:
若所述第二数据行的键值与读取的第一数据行的键值相同,则将所述第二数据行与所述读取的第一数据行合并,并输出合并后的数据行。
8.根据权利要求1所述的方法,其特征在于,
所述第一数据表的数据行数量小于所述第二数据表的数据行数量;或者,所述第一数据表的数据行数量大于所述第二数据表的数据行数量;
所述第一数据表的数据行数量小于所述逻辑芯片的承载数量上限。
9.一种数据处理方法,其特征在于,应用于逻辑芯片,所述方法包括:
获取连接请求,所述连接请求用于将第一数据表与第二数据表进行连接;
若所述第一数据表的数据行数量小于逻辑芯片的承载数量上限,将所述第一数据表确定为待加载的数据表,将所述第二数据表确定为待探测的数据表;
针对所述第一数据表的第一数据行,确定所述第一数据行对应的第一特征值,确定与所述第一特征值对应的第一可用外部地址,并在所述第一可用外部地址对应的逻辑芯片的存储位置存储所述第一数据行;
针对所述第二数据表的第二数据行,确定所述第二数据行对应的第二特征值,确定与所述第二特征值对应的第二可用外部地址,并从所述第二可用外部地址对应的逻辑芯片的存储位置读取第一数据行;所述确定与所述第二特征值对应的第二可用外部地址,包括:从数据结构中确定与所述第二特征值对应的起始位置;从所述数据结构的起始位置开始,向指定方向遍历首个为第一标识的第三位置,并将所述第三位置前面的第一个位置确定为结束位置;根据所述起始位置和所述结束位置确定第二可用外部地址;
根据所述第二数据行与读取的第一数据行进行连接操作。
10.一种数据处理方法,其特征在于,所述方法包括:
获取连接请求,所述连接请求用于将第一数据表与第二数据表进行连接;
针对所述第一数据表的第一数据行,确定所述第一数据行对应的第一特征值,从位图数据结构中确定与所述第一特征值对应的第一位置;根据所述第一位置确定与所述第一特征值对应的第一可用外部地址,并在所述第一可用外部地址对应的逻辑芯片的存储位置存储所述第一数据行;
针对所述第二数据表的第二数据行,确定所述第二数据行对应的第二特征值,从位图数据结构中确定与所述第一特征值对应的起始位置和结束位置;根据所述起始位置和所述结束位置确定与所述第二特征值对应的第二可用外部地址,并从所述第二可用外部地址对应的逻辑芯片的存储位置读取第一数据行;
根据所述第二数据行与读取的第一数据行进行连接操作。
11.一种数据处理装置,其特征在于,所述装置包括:
获取模块,用于获取连接请求,其中,所述连接请求用于将第一数据表与第二数据表进行连接;
加载模块,用于针对所述第一数据表的第一数据行,确定所述第一数据行对应的第一特征值,确定与所述第一特征值对应的第一可用外部地址,并在所述第一可用外部地址对应的逻辑芯片的存储位置存储所述第一数据行;
探测模块,用于针对所述第二数据表的第二数据行,确定所述第二数据行对应的第二特征值,确定与所述第二特征值对应的第二可用外部地址,并从所述第二可用外部地址对应的逻辑芯片的存储位置读取第一数据行;根据所述第二数据行与读取的第一数据行进行连接操作;所述探测模块确定与所述第二特征值对应的第二可用外部地址时具体用于:从数据结构中确定与所述第二特征值对应的起始位置;从所述数据结构的起始位置开始,向指定方向遍历首个为第一标识的第三位置,并将所述第三位置前面的第一个位置确定为结束位置;根据所述起始位置和所述结束位置确定第二可用外部地址。
12.根据权利要求11所述的装置,其特征在于,所述加载模块确定与所述第一特征值对应的第一可用外部地址时具体用于:
从数据结构中确定与所述第一特征值对应的第一位置;
若所述第一位置为第一标识,则根据所述第一位置确定所述第一可用外部地址,并将所述第一位置修改为第二标识;
若所述第一位置为第二标识,则从所述数据结构的第一位置开始,向指定方向遍历首个为第一标识的第二位置;根据所述第二位置确定所述第一可用外部地址,并将所述第二位置修改为第二标识。
13.一种数据处理设备,其特征在于,包括:
逻辑芯片和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述逻辑芯片和执行所述计算机指令时进行如下处理:
获取连接请求,所述连接请求用于将第一数据表与第二数据表进行连接;
针对所述第一数据表的第一数据行,确定所述第一数据行对应的第一特征值,确定与所述第一特征值对应的第一可用外部地址,并在所述第一可用外部地址对应的逻辑芯片的存储位置存储所述第一数据行;
针对所述第二数据表的第二数据行,确定所述第二数据行对应的第二特征值,确定与所述第二特征值对应的第二可用外部地址,并从所述第二可用外部地址对应的逻辑芯片的存储位置读取第一数据行;所述确定与所述第二特征值对应的第二可用外部地址,包括:从数据结构中确定与所述第二特征值对应的起始位置;从所述数据结构的起始位置开始,向指定方向遍历首个为第一标识的第三位置,并将所述第三位置前面的第一个位置确定为结束位置;根据所述起始位置和所述结束位置确定第二可用外部地址;
根据所述第二数据行与读取的第一数据行进行连接操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910099172.1A CN111506670B (zh) | 2019-01-31 | 2019-01-31 | 一种数据处理方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910099172.1A CN111506670B (zh) | 2019-01-31 | 2019-01-31 | 一种数据处理方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111506670A CN111506670A (zh) | 2020-08-07 |
CN111506670B true CN111506670B (zh) | 2023-07-18 |
Family
ID=71864694
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910099172.1A Active CN111506670B (zh) | 2019-01-31 | 2019-01-31 | 一种数据处理方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111506670B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114253992A (zh) * | 2021-12-17 | 2022-03-29 | 中国农业银行股份有限公司 | 数据聚合方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106933933A (zh) * | 2015-12-31 | 2017-07-07 | 北京国双科技有限公司 | 数据表信息的处理方法及装置 |
CN106933907A (zh) * | 2015-12-31 | 2017-07-07 | 北京国双科技有限公司 | 数据表扩展指标的处理方法及装置 |
CN106933919A (zh) * | 2015-12-31 | 2017-07-07 | 北京国双科技有限公司 | 数据表的连接方法及装置 |
WO2017148297A1 (zh) * | 2016-03-02 | 2017-09-08 | 阿里巴巴集团控股有限公司 | 数据表连接方法及装置 |
CN108595346A (zh) * | 2018-04-25 | 2018-09-28 | 新华三信息安全技术有限公司 | 一种特征库文件管理方法和装置 |
CN108737296A (zh) * | 2017-09-27 | 2018-11-02 | 新华三技术有限公司 | 一种数据传输方法、装置和网络设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11210308B2 (en) * | 2016-05-13 | 2021-12-28 | Ayla Networks, Inc. | Metadata tables for time-series data management |
-
2019
- 2019-01-31 CN CN201910099172.1A patent/CN111506670B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106933933A (zh) * | 2015-12-31 | 2017-07-07 | 北京国双科技有限公司 | 数据表信息的处理方法及装置 |
CN106933907A (zh) * | 2015-12-31 | 2017-07-07 | 北京国双科技有限公司 | 数据表扩展指标的处理方法及装置 |
CN106933919A (zh) * | 2015-12-31 | 2017-07-07 | 北京国双科技有限公司 | 数据表的连接方法及装置 |
WO2017148297A1 (zh) * | 2016-03-02 | 2017-09-08 | 阿里巴巴集团控股有限公司 | 数据表连接方法及装置 |
CN107153643A (zh) * | 2016-03-02 | 2017-09-12 | 阿里巴巴集团控股有限公司 | 数据表连接方法及装置 |
CN108737296A (zh) * | 2017-09-27 | 2018-11-02 | 新华三技术有限公司 | 一种数据传输方法、装置和网络设备 |
CN108595346A (zh) * | 2018-04-25 | 2018-09-28 | 新华三信息安全技术有限公司 | 一种特征库文件管理方法和装置 |
Non-Patent Citations (1)
Title |
---|
基于MapReduce的多元连接优化方法;李甜甜;于戈;郭朝鹏;宋杰;;计算机研究与发展(第02期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111506670A (zh) | 2020-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI743458B (zh) | 一種並行化執行區塊鏈交易的方法、裝置及系統 | |
US11347787B2 (en) | Image retrieval method and apparatus, system, server, and storage medium | |
CN109614372B (zh) | 一种对象存储、读取方法、装置、及业务服务器 | |
CN111444196B (zh) | 块链式账本中全局状态的哈希的生成方法、装置及设备 | |
CN109032803B (zh) | 数据处理方法和装置、客户端 | |
US10664445B2 (en) | Bloom filter generation method and apparatus | |
CN109885614B (zh) | 一种数据同步的方法和装置 | |
US20110238708A1 (en) | Database management method, a database management system and a program thereof | |
CN111522811B (zh) | 数据库的处理方法及装置、存储介质、终端 | |
CN109460406B (zh) | 一种数据处理方法及装置 | |
CN111444192A (zh) | 块链式账本中全局状态的哈希的生成方法、装置及设备 | |
CN109145053B (zh) | 数据处理方法和装置、客户端、服务器 | |
CN107784073B (zh) | 一种本地缓存的数据查询方法、存储介质和服务器 | |
CN112579591B (zh) | 数据校验方法、装置、电子设备及计算机可读存储介质 | |
CN111506670B (zh) | 一种数据处理方法、装置及设备 | |
CN108776665B (zh) | 一种数据处理方法及装置 | |
CN112860412B (zh) | 业务数据处理方法、装置、电子设备及存储介质 | |
US8990741B2 (en) | Circuit design support device, circuit design support method and program | |
CN110008382B (zh) | 一种确定TopN数据的方法、系统及设备 | |
CN108234552B (zh) | 一种数据存储方法及装置 | |
CN112800057B (zh) | 一种指纹表管理方法及装置 | |
CN113342270A (zh) | 卷卸载方法、装置和电子设备 | |
CN112380203B (zh) | 数据比对方法、装置和存储介质 | |
CN110781100B (zh) | 一种数据检测方法、逻辑芯片及网络设备 | |
WO2022262737A1 (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 |