CN112100169A - 数据库交互数据编码方法及装置 - Google Patents
数据库交互数据编码方法及装置 Download PDFInfo
- Publication number
- CN112100169A CN112100169A CN202010776849.3A CN202010776849A CN112100169A CN 112100169 A CN112100169 A CN 112100169A CN 202010776849 A CN202010776849 A CN 202010776849A CN 112100169 A CN112100169 A CN 112100169A
- Authority
- CN
- China
- Prior art keywords
- packet
- data
- header
- small
- information bit
- 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/2291—User-Defined Types; Storage 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/24569—Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
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)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种数据库交互数据编码实现方法和装置,所述方法包括:设定存储模块内存储编码数据的初始地址;接收输入数据,将接收的输入数据作为中包中小包的数据本体依次存放于所述存储模块内从所述初始地址起除包头存储位置之外的地址,并对数据本体进行统计;根据小包边界信息确定当前小包内数据本体的数量,并将确定的数量填充到当前小包的小包头中;根据中包边界信息确定当前中包内小包的数量和中包数据量,并将确定的数据填充到当前中包的中包头中的小包数量信息位和中包数据量信息位;根据大包边界信息确定大包内中包的数量和大包数据量,并将确定的数据填充到大包头中的中包数量信息位和大包数据量信息位,以生成具有预定数据结构的大包。
Description
技术领域
本发明涉及数据编码技术领域,尤其涉及一种数据库交互数据编码实现方法及装置。
背景技术
随着数据量的增加,数据库访问延时越来越大,许多曾经在小数据上用传统方法很容易完成的任务,如今在大数据上就变得非常困难。目前最快的固态硬盘(SSD)存储可以达到12GB/s的读取速度,但即便这样的速度,如果数据库有15TB大小,想要用完整检索的方式完成一次查询仍然需要33小时。为了加快数据库查询速度,大都采用设计数据库专用处理器的方法来提高性能。
数据库专用加速器是一种数据库专用处理器,在应用过程中,数据库专用加速器通常作为现在服务器(CPU)的协处理器角色出现。数据库专用处理器与CPU之间需要进行频繁的数据交互,在很多情况下数据交互性能成为整个CPU-数据库处理器系统的性能的关键。
在传统数据库系统中,各数据库管理系统都运行在CPU中,各数据库管理系统都有各自独立的内部数据存储结构,如B+树。同时,多数数据库管理系统为了节省存储空间,通常对数据压缩后进行存储。另外,在装有数据库专用处理器的数据库管理系统中,数据管理工作仍由运行在CPU上软件数据管理系统来负责,即数据主要存储在CPU端的主存DRAM中。而数据处理交由专用加速器实现,这就导致了CPU和加速器之间频繁的数据交换,同时两者之间数据格式不同在交换时需要实时转换。
数据库加速器在业界来说尚属新生事物,尚未形成标准的数据交互格式,为了尽可能优化CPU与数据库专用处理器之间数据交互性能,降低CPU端和加速器端数据转换延时,需要探寻一种高效的数据交互格式。
发明内容
有鉴于此,本发明实施例提供了一种数据库交互数据编码实现方法和装置,通过一种新的数据结构及其数据编码方式和实现装置,来进一步提升CPU与数据库专用处理器之间数据交互性能。
本发明的一个方面,提供了一种数据库交互数据编码实现方法,该方法包括以下步骤:
设定存储模块内存储编码数据的初始地址;
接收输入数据,将接收的输入数据作为中包中小包的数据本体依次存放于所述存储模块内从所述初始地址起除包头存储位置之外的地址,并对数据本体进行统计;
根据小包边界信息确定当前小包内数据本体的数量,并将确定的数量填充到当前小包的小包头中;
根据中包边界信息确定当前中包内小包的数量和中包数据量,并将确定的数据填充到当前中包的中包头中的小包数量信息位和中包数据量信息位;
根据大包边界信息确定大包内中包的数量和大包数据量,并将确定的数据填充到大包头中的中包数量信息位和大包数据量信息位,以生成具有如预定数据结构的大包;
其中,所述预定数据结构的大包包括:大包头和至少一个中包,各中包包括中包头和至少一个小包,各小包包括小包头和至少一个数据本体;所述大包头包括中包数量信息位和大包数据量信息位,所述中包头包括小包数量信息位和中包数据量信息位,所述小包头包括数据本体数信息位。
可选的,所述小包边界信息、中包边界信息和大包边界信息分别为小包末尾数据标志、中包末尾数据标志和大包末尾数据标志。
可选地,所述大包头信息位还包括:第三信息位和第四信息位;所述大包头、中包头和小包头中的各个信息位的长度相同或不同。
可选地,所述中包头还包括:中包类型信息位和中包ID信息位;所述方法还包括:接收中包ID信息和中包类型信息,分别将所述中包ID信息和中包类型信息存入所述ID信息位和中包类型信息位。
可选地,所述方法还包括:在所述大包尾部形成列偏移信息位。
本发明的另一方面,提供了一种数据库交互数据编码实现装置,该装置包括:
初始地址设定模块,其用于设定存储模块内存储的初始地址;
编码模块,用于执行如下步骤:
接收输入数据,将接收的输入数据作为中包中小包的数据本体依次存放于所述存储模块内从所述初始地址起除包头存储位置之外的地址,并对数据本体进行统计;
根据小包边界信息确定当前小包内数据本体的数量,并将确定的数量填充到当前小包的小包头中;
根据中包边界信息确定当前中包内小包的数量和中包数据量,并将确定的数据填充到当前中包的中包头中的小包数量信息位和中包数据量信息位;
根据大包边界信息确定大包内中包的数量和大包数据量,并将确定的数据填充到大包头中的中包数量信息位和大包数据量信息位,以生成具有如预定数据结构的大包;
其中,所述预定数据结构的大包包括:大包头和至少一个中包,各中包包括中包头和至少一个小包,各小包包括小包头和至少一个数据本体;所述大包头包括中包数量信息位和大包数据量信息位,所述中包头包括小包数量信息位和中包数据量信息位,所述小包头包括数据本体数信息位。
本发明的另一方面,提供的一种数据库交互数据编码实现方法包括以下步骤:
设定存储模块内存储的初始地址,其中所述初始地址起的预定长度的存储位置用于作为大包的大包头、大包中第一个中包的中包头和所述第一个中包中第一个小包的小包头的信息位;
基于与预定的数据结构对应的编码逻辑相匹配的数据输入要求向编码模块输入数据,其中,所述预定的数据结构包括:大包数据,该大包数据包括:大包头和至少一个中包,各中包包括中包头和至少一个小包,各小包包括小包头和至少一个数据本体;所述大包头包括中包数量信息位和大包数据量信息位,所述中包头包括小包数量信息位和中包数据量信息位,所述小包头包括数据本体数信息位;所述编码逻辑包括:预留包头信息位,接收小包数据,基于小包数据填充小包头和中包头,基于中包数据填充大包头;
接收基于所述数据输入要求输入的数据并基于接收的数据编码成具有预定数据结构的大包数据。
本发明的另一方面提供的一种数据库交互数据编码实现装置包括:
初始地址设定模块,其用于设定存储模块内存储的初始地址,其中所述初始地址起的预定长度的存储位置用于作为大包的大包头、大包中第一个中包的中包头和所述第一个中包中第一个小包的小包头的信息位;
数据输入模块,用于基于与预定的数据结构对应的编码逻辑相匹配的数据输入要求向编码模块输入数据,其中,所述预定的数据结构包括:大包数据,该大包数据包括:大包头和至少一个中包,各中包包括中包头和至少一个小包,各小包包括小包头和至少一个数据本体;所述大包头包括中包数量信息位和大包数据量信息位,所述中包头包括小包数量信息位和中包数据量信息位,所述小包头包括数据本体数信息位;所述编码逻辑包括:预留包头信息位,接收小包数据,基于小包数据填充小包头和中包头,基于中包数据填充大包头;
编码模块,用于接收基于所述数据输入要求输入的数据并基于接收的数据编码成具有预定数据结构的大包数据。
本发明实施例提供的数据库交互数据编码实现方法和装置,能够优化CPU与数据库专用处理器之间数据交互性能,降低数据传输延时。
本发明的附加优点、目的,以及特征将在下面的描述中将部分地加以阐述,且将对于本领域普通技术人员在研究下文后部分地变得明显,或者可以根据本发明的实践而获知。本发明的目的和其它优点可以通过在书面说明及其权利要求书以及附图中具体指出的结构实现到并获得。
本领域技术人员将会理解的是,能够用本发明实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本发明能够实现的上述和其他目的。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,并不构成对本发明的限定。
图1为本发明一实施例中数据编码格式的示意图。
图2为本发明一实施例中数据库交互数据编码装置的结构示意图。
图3为本发明一实施例中数据库交互数据编码实现方法的流程示意图。
图4为本发明一实施例中数据库交互数据编码实现方法的示例图。
图5所示为图4对应的将输入写入RAM的操作示例。
图6为本发明一实施例中一个大包的示例。
图7为图6的示例对应的大包存储地址示例。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在此,还需要说明的是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。
针对现有技术中存在的数据库查询时间长的问题,本发明实施例提供了一种新的交互数据结构,即一种新的数据编码格式,并进一步提出了适用于这种交互数据结构的硬件数据编码实现方法和装置。
在本发明实施例提供的数据编码格式中,数据以一个一个“大包”的形式存放,数据的存储方式例如可以存放入8位宽的RAM,按照地址顺序存放。
图1为本发明一实施例中数据编码格式的示意图。如图1所示,该图中包含许多个数据,该图中全部的数据整体表示一个“大包”,每个“大包”里面有多个“中包”,每一个“中包”有多个“小包”。下面具体说明各个数据构成。
(1)大包:
大包中第一个数据“TotalColNum”(长度为4字节)表示有多少个中包,第二个数据“TotalLengthofBytes”(长度为4字节)表示该大包中总共有多少字节数据,所有的包头信息和数据都统计在内;第三个数据“CurrWriteOffset”(长度为4字节)、第四个数据“CurrReadOffset”(长度为4字节)以及大包的末尾最后四个数据Col(0,1,2,3)Offset,作为数据偏移,功能设定暂未实现,可暂时预留位置待拓展。本发明实施例中,在大包头部的第一个数据至第四个数据可简称为“大包头”。
为了便于表述,大包头中放置第一个数据TotalColNum和第二个数据TotalLengthofBytes的位置可以分别称为中包数量信息位和大包数据量信息位,放置第三个数据CurrWriteOffset和第四个数据CurrReadOffset的位置可分别称为当前写入偏移和当前读取偏移信息位。大包尾部的四个数据Col(0)Offset、Col(1)Offset、Col(2)Offset、Col(3)Offset对应的放置位置可称为列偏移信息位。
(2))中包:
中包中的第一个数据“TotalRowNum”(长度为4字节)表示有多少个小包;第二个数据“LengthofBytes”(长度为4字节)表示该中包总共有多少字节数,该中包中所有包头(如TotalRowNum,LengthofBytes,Type,ID)数据的字节数同样的统计在内;中包中的第三个数据“Type”(长度为4字节)表示中包的数据包种类,用于外部辨别类型;第四个数据“ID”(长度为4字节)表示该中包的编号,可用于外部操作查找。一个中包的这前四个数据简称“中包头”。之后的数据就是连续的小包。到最后一个小包的最后一个数据结束,为一个完整的中包。
为了便于表述,中包头中放置第一个数据“TotalRowNum”和第二个数据“LengthofBytes”的位置可以分别称为小包数量信息位和中包数据量信息位,放置第三个数据“Type”和第四个数据“ID”的位置可分别称为数据包类型信息位和中包ID信息位。
(3)小包:
小包的第一个数据“Length”是一个4个字节(32位)的长度数据,表示该小包内有多少个数据(一个数据占用8位,即一个字节),随后跟随连续的多个数据。小包的一个数据Length简称“小包头”,小包头中放置数据“Length”的位置可以称为数据本体数量信息位。
如下表1~表3示出了具有上述结构的编码数据(大包)在存储模块(如RAM)中的存储示意,其中,表1、表2、表3分别是大包头、中包头和小包(包括小包头)的示例。注意在这里大包的第一个字节地址是0,该字节地址仅为示例,只是一个个例情况。随后的许多大包的第一个字节不会是0地址,将处在中间状态。
表1.大包头在RAM中的存储示意
address | data |
0 | TotalColNum(最高字节) |
1 | TotalColNum(次高字节) |
2 | TotalColNum(次低字节) |
3 | TotalColNum(最低字节) |
4 | TotalLengthofBytes(最高字节) |
5 | TotalLengthofBytes(次高字节) |
6 | TotalLengthofBytes(次低字节) |
7 | TotalLengthofBytes(最低字节) |
8 | CurrWriteOffset(最高字节) |
9 | CurrWriteOffset(次高字节) |
10 | CurrWriteOffset(次低字节) |
11 | CurrWriteOffset(最低字节) |
12 | CurrReadOffset(最高字节) |
13 | CurrReadOffset(次高字节) |
14 | CurrReadOffset(次低字节) |
15 | CurrReadOffset(最低字节) |
如表1所示,大包头中的各个信息位长度均为4个字节,大包头占用了RAM中的存储地址0~15。
表2.中包头在RAM中的存储示意
address | data |
16 | TotalRowNum(最高字节) |
17 | TotalRowNum(次高字节) |
18 | TotalRowNum(次低字节) |
19 | TotalRowNum(最低字节) |
20 | LengthofBytes(最高字节) |
21 | LengthofBytes(次高字节) |
22 | LengthofBytes(次低字节) |
23 | LengthofBytes(最低字节) |
24 | Type(最高字节) |
25 | Type(次高字节) |
26 | Type(次低字节) |
27 | Type(最低字节) |
28 | ID(最高字节) |
29 | ID(次高字节) |
30 | ID(次低字节) |
31 | ID(最低字节) |
如表2所示,中包头中的各个信息位长度均为4个字节,中包头占用了RAM中的存储地址16~31。
表3.小包在RAM中的存储示意
address | data |
32 | Length(最高字节) |
33 | Length(次高字节) |
34 | Length(次低字节) |
35 | Length(最低字节) |
36 | data1 |
37 | data2 |
38 | data3 |
39 | data4 |
40 | data5 |
41 | data6 |
42 | data7 |
43 | data8 |
44 | . |
45 | . |
46 | . |
47 | . |
如表3所示,小包头的信息位长度为4个字节,占用了RAM中的存储地址32~35;小包的数据本体占用了RAM中的存储地址36及其后面的位置,具体小包的数据本体占用的存储地址多少依数据本体的数量而定。
总的来说,一个数据包(大包)包含了一些整体存储信息,包含在大包头,中包头,小包头;此外还包含数据本体,分布在各个小包内。
在本发明一些实施例中,大包中的中包的数量不仅可以是多个,也可以是一个;各中包中包括的小包数可以是一个,也可以是多个;各小包中包括的数据本体数量可以是一个,也可以是多个。
在本发明另一些实施方式中,大包头中预留的待扩展的位置也可以基于具体应用省略。此外,在本发明实施例中,大包头、中包头和小包头中不排除还含有其他信息位。
此外,图1中示出的大包头、中包头和小包头中各个信息位的长度(4个字节)仅为示例,但并不限于4个字节,且各个信息位的长度可以相同,也可以不同。
如上所述,基于本发明实施例,要编码得到大包的交互数据结构包括:大包头和至少一个中包,各中包包括中包头和至少一个小包,各小包包括小包头和至少一个数据本体;大包头至少包括中包数量信息位和大包数据量信息位,中包头至少包括小包数量信息位和中包数据量信息位,小包头至少包括数据本体数量信息位。
针对本发明实施例提供的如上交互数据结构,本发明提供了一种得到该交互数据结构的数据库交互数据编码实现方法和编码实现装置。在本发明实施例中,编码过程是接收数据,并根据控制信号及包的边界信息,将数据个数进行统计,由此编码模块内部计算出小包头数据,并确定中包头和大包头数据。将确定的数据填入各个“包头”,便完成一个大包的编码。
图2所示为本发明一实施例中数据库交互数据编码实现装置的结构示意图,如图2所示,该装置包括:编码模块100、控制模块200、数据输入模块300和RAM 400。
控制模块200中具有初始地址设定模块(未示出),初始地址设定模块用于设定在RAM中存储大包的初始地址,此外,控制模块还发送使能信号控制编码模块100的编码操作的进行。在本发明另一些实施例中,初始地址设定模块可以和控制模块分开设置。
数据输入模块300用于输入数据本体,编码模块100将接收的数据本体存放在RAM内从初始地址起除包头(大包头,中包头,小包头)存储位置之外的地址,也即预留大包头,中包头,小包头的信息位后进行数据本体的存储。数据输入模块300除了具有端口用于输入数据本体给编码模块100之外,还可以有其他端口,例如用于输入中包ID、中包类型及其有效信号的端口、小包边界信息数据(如小包末尾数据标志)输入端口、中包边界信息数据(如中包末尾数据标志)输入端口、大包边界信息数据(如大包末尾数据标志)输入端口等,配合编码模块进行编码。当然,这些端口也可以集成为更少的端口输入至编码模块。
数据输入模块可按照与本发明提出的数据结构对应的编码逻辑相匹配的数据输入要求向编码模块输入数据。该编码逻辑例如可包括:预留包头信息位,接收小包数据,基于小包数据填充小包头和中包头,基于中包数据填充大包头。下面会有体现。
编码模块100用于基于接收的数据和控制模块的使能信号进行编码操作,从而完成数据编码。
图3所示为本发明一实施例中通过图2所示的装置实现的数据库交互数据编码实现方法的流程示意图,如图3所示,该方法包括以下步骤:
步骤S310,接收来自数据输入模块300的输入数据,将接收的输入数据作为中包中小包的数据本体依次存放于RAM内从初始地址起除包头存储位置之外的地址,并对数据本体进行统计。
也即,在RAM内预留大包头以及第一个中包头跟第一个小包头的地址,以图1中的数据结构为例,则预留总共36个字节,从设定的RAM的初始地址的第37个字节起存储接收的数据本体,并统计数据本体的个数。例如,在同一小包内,每存储一个新的数据本体,统计数加1。
步骤S320,根据小包边界信息确定当前小包内数据本体的数量,并将确定的数量填充到当前小包的小包头中。
作为示例,小包边界信息可以是小包末尾数据标志。该小包边界信息可以由数据输入模块输入给编码模块。更具体地,该小包边界信息可以由数据输入模块根据为了实现编码的数据输入要求来生成,并输入给编码模块。
步骤S330,根据中包边界信息确定当前中包内小包的数量和中包数据量,并将确定的数据填充到当前中包的中包头中的小包数量信息位和中包数据量信息位。
作为示例,中包边界信息可以是中包末尾数据标志。该中包边界信息可以由数据输入模块输入给编码模块。
在交互数据结构的中包头中包括数据包类型信息位和中包ID信息位的情况下,在步骤S330之前,或在步骤S330之后下一中包开始之前,该方法还包括如下步骤:
接收数据输入模块300输入的中包ID和中包类型信息填充当前中包的中包头中的中包ID信息位和中包类型信息位。
步骤S340,根据大包边界信息确定大包内中包的数量和大包数据量,并将确定的数据填充到大包头中的中包数量信息位和大包数据量信息位,由此编码生成具有前述数据结构的大包。
作为示例,大包边界信息可以是大包末尾数据标志。该中包边界信息可以由数据输入模块输入给编码模块。
基于上述步骤将数据存储在RAM的对应位置,便完成了数据编码。
上述可知,在本发明实施例中,编码模块执行的步骤包括大包编码步骤,该大包编码步骤包括中包编码步骤和大包头编码步骤,中包编码步骤包括小包编码步骤和中包头编码步骤,小包编码步骤包括小包数据编码步骤和小包头编码步骤。如图3中,步骤S310为小包数据编码步骤,步骤S320为小包头编码步骤,步骤S330为中包头编码步骤,步骤S340为大包头编码步骤。除了步骤S330之外,中包头编码步骤还可包括:接收中包ID和中包类型信息填充到当前中包的中包头中的中包ID信息位和中包类型信息位。
更具体地,如图4所示,在编码开始时,首先控制模块设定大包头在RAM中对应的首地址,即起始地址。如图5所示,从该起始地址起,预留一定长度的数据信息位,用作包头数据。
然后,编码模块接收数据输入模块输入的中包ID,将中包ID填充到预留的信息位中相应的中包编码信息位。
编码模块接收到数据输入模块输入的数据本体后,如图5所示,将数据本体存储RAM中预留的信息位后面的相应位置,同时统计数据本体个数。例如,如图5所示,第一个小包的数据个数为n的情况下,编码模块接收数据本体dataA1,dataA2,…,dataAn,并在每次接收到数据本体后将数据本体存储在RAM中的相应位置,将统计的数据本体个数加1。此外,每次接收数据本体后,编码模块半段是否有小包末尾标志输入,如果没有,则继续接收属于当前小包的数据本体,并进行统计;如果有则将统计的数据本体个数信息作为小包头存入RAM,并进行小包数统计。
在出现小包末尾数据标志的情况下,可进一步确定是否接收到中包末尾数据标志,如果否,则如同前一小包的操作一样,继续接收新小包的数据本体(如dataB1,dataB2,…),并统计数据本体个数。如果在小包末尾数据标志出现的同时出现了中包末尾数据标志,则将统计到的小包个数和整个中包字节数作为中包头的信息分别存入RAM中小包数量信息位和中包数据量信息位对应的位置。
在出现中包末尾数据标志的情况下,可进一步确定是否接收到大包末尾数据标志,如果否,则中包数加1,并同前一中包的操作一样,开始新中包的编码。如果编码模块接收到大包末尾数据标志,则将统计的中包个数以及整个大包的总字节数作为大包头的信息分别存入RAM中中包数量信息位和大包数据量信息位对应的位置。由此,一个大包的编码完成。
在本发明另一些实施例中,所述大包还包括在尾部的列偏移信息位;上述方法还可以包括:在所述大包尾部形成列偏移信息位。在列偏移信息位预留的情况下,在RAM的相应位置数据为空。
下面结合着具体示例来描述一个大包的编码过程。图4为本发明一实施例中一个大包的编码过程的更详细示例图。图5所示为图4对应的将输入写入RAM的操作示例。
如图6所示,假设一个即将存入的大包取名为T,内含两个中包A和B,中包A的ID为0000aaaaH,内有两个小包a,b;中包B的ID为0000bbbbH,内有三个小包c,d,e;小包a和小包b都各自有2个数据本体(下面可简称为数据),小包c,d,e都各自有3个数据;
小包a内数据为a1,a2;
小包b内数据为b1,b2;
小包c内数据为c1,c2,c3;
小包d内数据为d1,d2,d3;
小包e内数据为e1,e2,e3。
如上一共13个数据。
如上编码要求可对应地生成一个数据输入要求。也就是说,要进行上述的大包编码过程,数据输入要求如下面表4所示。数据输入模块可基于该数据输入要求来进行相应数据的输入操作。
表4.数据输入要求
输入的第几个数据 | 数据 | 小包末尾标志 | 中包末尾标志 | 大包末尾标志 | 中包的Type及ID输入 | 中包Type及ID有效标志 |
1 | xxH | 0 | 0 | 0 | 000000010000aaaaH | 1 |
2 | a1H | 0 | 0 | 0 | xxxxxxxxxxxxxxxxH | 0 |
3 | a2H | 1 | 0 | 0 | xxxxxxxxxxxxxxxxH | 0 |
4 | b1H | 0 | 0 | 0 | xxxxxxxxxxxxxxxxH | 0 |
5 | b2H | 1 | 1 | 0 | xxxxxxxxxxxxxxxxH | 0 |
6 | xxH | 0 | 0 | 0 | 000000020000bbbbH | 1 |
7 | c1H | 0 | 0 | 0 | xxxxxxxxxxxxxxxxH | 0 |
8 | c2H | 0 | 0 | 0 | xxxxxxxxxxxxxxxxH | 0 |
9 | c3H | 1 | 0 | 0 | xxxxxxxxxxxxxxxxH | 0 |
10 | d1H | 0 | 0 | 0 | xxxxxxxxxxxxxxxxH | 0 |
11 | d2H | 0 | 0 | 0 | xxxxxxxxxxxxxxxxH | 0 |
12 | d3H | 1 | 0 | 0 | xxxxxxxxxxxxxxxxH | 0 |
13 | e1H | 0 | 0 | 0 | xxxxxxxxxxxxxxxxH | 0 |
14 | e2H | 0 | 0 | 0 | xxxxxxxxxxxxxxxxH | 0 |
15 | e3H | 1 | 1 | 1 | xxxxxxxxxxxxxxxxH | 0 |
按照前面描述的流程,首先设定RAM内存储的初始地址为0(这里0是特例,仅为方便说明),并在RAM内预留大包头中包头跟小包头的地址总共36个字节。第一个输入过来的信息数据为,一个中包Type及ID(数值为000000010000aaaaH,高32位是Type,低32位是ID)以及中包Type及ID有效标志。将000000010000aaaaH按高到低依次存入地址24,25,26,27,28,29,30,31的8个字节空间(两个32位数据)。接下来编码模块将第一个数据a1H存入到首地址加36的RAM储存位置,往前预留了32,33,34,35四个字节地址作为小包头的信息位,统计数据个数为1;然后依次往下存,当接收到a2数据,统计数据个数为2,此时判断出输入有小包末尾标志为1,将统计的数据2(a1,a2共两个数据),构成4字节数据00000002H输入给a1数据地址前的四个字节地址(32,33,34,35),作为小包头插入,如图7所示。
随后数据接入模块输入第二个小包,先预留四个地址:38,39,40,41,作为小包头信息为,然后将b1H写入进地址42的RAM存储空间,统计数据个数为1;b2H写入地址43的RAM存储空间,统计数据个数为2;这时候判断出有小包末尾标志为1跟中包末尾标志为1,于是将统计的数据个数构成4字节数据00000002H输入给地址38,39,40,41;并且小包个数统计个数为00000002H输入给16,17,18,19四个地址对应RAM存储空间储存,即中包内含有的小包个数为2;同时时刻统计该中包占用的空间地址,即总字节数,在中包末尾标志到来的同时,将总字节数(计算可知有28个,16进制为0000001cH)输入到RAM的存储位置20,21,22,23。
接着收到第二个中包Type及ID输入和相应的有效标志,进行的过程类似第一个中包,在此不累述。需要说明的一点是,接收到的第二个中包的第三个小包e的末尾时候,即e3H数据,将会携带一个小包末尾标志为1,一个中包末尾标志为1,以及一个大包末尾标志为1;收到大包末尾标志后,除了进行相应中包末尾标志包含的操作,还将中包统计个数00000002H,输入到地址0,1,2,3的RAM存储空间,同时时刻会统计该大包占用的空间地址,即总字节数,在大包末尾标志到来的同时,将统计的大包总字节数输入到位置4,5,6,7;地址8-15为拓展功能位,暂时未记录数据。到此一个大包的编码完成。
编码完RAM内数据存储如图6所示。所有数据格式为16进制,图6中排列空了很多格子,这些空格子无实际意义,仅为了方便说明而空出,实际RAM中数据存储是连续不断的。
从更广义的角度,本发明提供的数据库交互数据编码实现方法,可理解为包括以下步骤:
(1)设定存储模块内存储的初始地址,其中初始地址起的预定长度的存储位置用于作为大包的大包头、大包中第一个中包的中包头和所述第一个中包中第一个小包的小包头的信息位;
(2)基于与前述预定的数据结构对应的编码逻辑相匹配的数据输入要求向编码模块输入数据。该编码逻辑可包括:预留包头信息位,接收小包数据,基于小包数据填充小包头和中包头,基于中包数据填充大包头。
(3)接收基于所述数据输入要求输入的数据并基于接收的数据编码成具有预定数据结构的大包数据。
相应地,本发明实施例提供的一种数据库交互数据编码实现装置可理解为包括:
(1)初始地址设定模块,其用于设定存储模块内存储的初始地址,其中所述初始地址起的预定长度的存储位置用于作为大包的大包头、大包中第一个中包的中包头和所述第一个中包中第一个小包的小包头的信息位;
(2)数据输入模块,用于基于与预定的数据结构对应的编码逻辑相匹配的数据输入要求向编码模块输入数据;以及
(3)编码模块,用于接收基于所述数据输入要求输入的数据并基于接收的数据编码成具有预定数据结构的大包数据。
本发明实施例的交互数据编码实现方法和编码实现装置实现的编码结构,至少具有以下优点:
数据表达方面,在数据库中主要的数据对象是表格,该种数据结构可以表达任意数据表格,可以随意增删数据列和数据行,并且每个数据单元的长度可变,通过小包长度进行存储。在CPU端,此种数据格式基本和原始数据表格一致,非常便于CPU编解码,可以通过多线程的方式并行对多个数据列进行编码。在加速器端,此种数据格式可以支持高效流水线的实现方式,采用与编码对应的解码方式,可以高效的对整个数据包进行解码。
本发明实施例提供的数据库交互数据编码实现方法和装置,能够优化CPU与数据库专用处理器之间数据交互性能,降低数据传输延时。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
本领域普通技术人员应该可以明白,结合本文中所公开的实施方式描述的各示例性的组成部分、系统和方法,能够以硬件、软件或者二者的结合来实现。具体究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读存储介质”可以包括能够存储或传输信息的任何介质。机器可读存储介质的例子包括随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的有形存储介质。
还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
本发明中,针对一个实施方式描述和/或例示的特征,可以在一个或更多个其它实施方式中以相同方式或以类似方式使用,和/或与其他实施方式的特征相结合或代替其他实施方式的特征。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (16)
1.一种数据库交互数据编码实现方法,其特征在于,该方法包括以下步骤:
接收输入数据,将接收的输入数据作为中包中小包的数据本体依次存放于存储模块内从初始存储地址起除包头存储位置之外的地址,并对数据本体进行统计;
根据小包边界信息确定当前小包内数据本体的数量,并将确定的数量填充到当前小包的小包头中;
根据中包边界信息确定当前中包内小包的数量和中包数据量,并将确定的数据填充到当前中包的中包头中的小包数量信息位和中包数据量信息位;
根据大包边界信息确定大包内中包的数量和大包数据量,并将确定的数据填充到大包头中的中包数量信息位和大包数据量信息位,以生成具有如预定数据结构的大包;
其中,所述预定数据结构的大包包括:大包头和至少一个中包,各中包包括中包头和至少一个小包,各小包包括小包头和至少一个数据本体;所述大包头包括中包数量信息位和大包数据量信息位,所述中包头包括小包数量信息位和中包数据量信息位,所述小包头包括数据本体数信息位。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在接收输入数据之前,设定存储模块内存储编码数据的初始地址。
3.根据权利要求1所述的方法,其特征在于,
所述小包边界信息、中包边界信息和大包边界信息分别为小包末尾数据标志、中包末尾数据标志和大包末尾数据标志。
4.根据权利要求1所述的方法,其特征在于,所述大包头信息位还包括:第三信息位和第四信息位;
所述大包头、中包头和小包头中的各个信息位的长度相同或不同。
5.根据权利要求1所述的方法,其特征在于,所述中包头还包括:中包类型信息位和中包ID信息位;
所述方法还包括:接收中包ID信息和中包类型信息,分别将所述中包ID信息和中包类型信息存入所述ID信息位和中包类型信息位。
6.根据权利要求1所述的方法,其特征在于,所述大包还包括在尾部的列偏移信息位;
所述方法还包括:在所述大包的尾部形成所述列偏移信息位。
7.一种数据库交互数据编码实现装置,其特征在于,该装置包括:
编码模块,用于执行如下步骤:
接收输入数据,将接收的输入数据作为中包中小包的数据本体依次存放于所述存储模块内从所述初始地址起除包头存储位置之外的地址,并对数据本体进行统计;
根据小包边界信息确定当前小包内数据本体的数量,并将确定的数量填充到当前小包的小包头中;
根据中包边界信息确定当前中包内小包的数量和中包数据量,并将确定的数据填充到当前中包的中包头中的小包数量信息位和中包数据量信息位;
根据大包边界信息确定大包内中包的数量和大包数据量,并将确定的数据填充到大包头中的中包数量信息位和大包数据量信息位,以生成具有如预定数据结构的大包;
其中,所述预定数据结构的大包包括:大包头和至少一个中包,各中包包括中包头和至少一个小包,各小包包括小包头和至少一个数据本体;所述大包头包括中包数量信息位和大包数据量信息位,所述中包头包括小包数量信息位和中包数据量信息位,所述小包头包括数据本体数信息位。
8.根据权利要求7所述的装置,其特征在于,该装置还包括:
初始地址设定模块,其用于设定存储模块内存储的初始地址。
9.根据权利要求7所述的装置,其特征在于,该装置还包括:
控制模块,用于向所述编码模块发送使能信号,以控制所述编码模块的操作;
数据输入模块,用于向所述编码模块输入所述输入数据、小包边界信息、中包边界信息和大包边界信息。
10.根据权利要求9所述的装置,其特征在于,所述中包头还包括中包ID信息位和中包类型信息位;
所述数据输入模块还用于输入中包ID和中包类型信息;
所述编码模块还用于基于所述数据输入模块输入的中包ID和中包类型信息填充当前中包的中包头中的中包ID信息位和中包类型信息位。
11.根据权利要求7所述的装置,其特征在于,所述小包边界信息、中包边界信息和大包边界信息分别为小包末尾数据标志、中包末尾数据标志和大包末尾数据标志。
12.根据权利要求7所述的装置,其特征在于,所述大包头信息位还包括:第三信息位和第四信息位;
所述编码模块还用于在所述大包头形成第三信息位和第四信息位。
13.根据权利要求7所述的装置,其特征在于,所述编码模块还用于在所述大包尾部形成列偏移信息位。
14.根据权利要求7所述的装置,其特征在于,所述大包头、中包头和小包头中的各个信息位的长度相同或不同。
15.一种数据库交互数据编码实现方法,其特征在于,该方法包括以下步骤:
设定存储模块内存储的初始地址,其中所述初始地址起的预定长度的存储位置用于作为大包的大包头、大包中第一个中包的中包头和所述第一个中包中第一个小包的小包头的信息位;
基于与预定的数据结构对应的编码逻辑相匹配的数据输入要求向编码模块输入数据,其中,所述预定的数据结构包括:大包数据,该大包数据包括:大包头和至少一个中包,各中包包括中包头和至少一个小包,各小包包括小包头和至少一个数据本体;所述大包头包括中包数量信息位和大包数据量信息位,所述中包头包括小包数量信息位和中包数据量信息位,所述小包头包括数据本体数信息位;所述编码逻辑包括:预留包头信息位,接收小包数据,基于小包数据填充小包头和中包头,基于中包数据填充大包头;
接收基于所述数据输入要求输入的数据并基于接收的数据编码成具有预定数据结构的大包数据。
16.一种数据库交互数据编码实现装置,其特征在于,该装置包括:
初始地址设定模块,其用于设定存储模块内存储的初始地址,其中所述初始地址起的预定长度的存储位置用于作为大包的大包头、大包中第一个中包的中包头和所述第一个中包中第一个小包的小包头的信息位;
数据输入模块,用于基于与预定的数据结构对应的编码逻辑相匹配的数据输入要求向编码模块输入数据,其中,所述预定的数据结构包括:大包数据,该大包数据包括:大包头和至少一个中包,各中包包括中包头和至少一个小包,各小包包括小包头和至少一个数据本体;所述大包头包括中包数量信息位和大包数据量信息位,所述中包头包括小包数量信息位和中包数据量信息位,所述小包头包括数据本体数信息位;所述编码逻辑包括:预留包头信息位,接收小包数据,基于小包数据填充小包头和中包头,基于中包数据填充大包头;
编码模块,用于接收基于所述数据输入要求输入的数据并基于接收的数据编码成具有预定数据结构的大包数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010776849.3A CN112100169B (zh) | 2020-08-05 | 2020-08-05 | 数据库交互数据编码方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010776849.3A CN112100169B (zh) | 2020-08-05 | 2020-08-05 | 数据库交互数据编码方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112100169A true CN112100169A (zh) | 2020-12-18 |
CN112100169B CN112100169B (zh) | 2021-09-21 |
Family
ID=73750402
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010776849.3A Active CN112100169B (zh) | 2020-08-05 | 2020-08-05 | 数据库交互数据编码方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112100169B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102158694A (zh) * | 2010-12-01 | 2011-08-17 | 航天恒星科技有限公司 | 一种基于gpu的遥感图像解压缩方法 |
CN103109274A (zh) * | 2010-09-20 | 2013-05-15 | 高通股份有限公司 | 多处理器计算平台中的处理器间通信技术 |
CN104917702A (zh) * | 2015-06-03 | 2015-09-16 | 香港中文大学深圳研究院 | 一种具有网络编码功能的代数交换系统及其预处理算法 |
CN105262970A (zh) * | 2015-10-14 | 2016-01-20 | 深圳先进技术研究院 | 一种基于图像数据的封装方法及系统 |
CN106357619A (zh) * | 2016-08-26 | 2017-01-25 | 海宁翔亦信息科技有限公司 | 一种4g网络语音数据传输方法及传输系统 |
CN107278373A (zh) * | 2015-03-06 | 2017-10-20 | 高通股份有限公司 | 用于使用自适应瓦片大小的视频译码的方法和设备 |
CN108737026A (zh) * | 2018-05-08 | 2018-11-02 | 深圳市心流科技有限公司 | 数据传输方法、装置及计算机可读存储介质 |
CN109063091A (zh) * | 2018-07-26 | 2018-12-21 | 成都大学 | 混合编码的数据迁移方法、数据迁移装置和存储介质 |
CN109474281A (zh) * | 2018-09-30 | 2019-03-15 | 湖南瑞利德信息科技有限公司 | 数据编码、解码方法及装置 |
CN111104258A (zh) * | 2019-12-23 | 2020-05-05 | 北京金山云网络技术有限公司 | MongoDB数据库的备份方法、装置及电子设备 |
-
2020
- 2020-08-05 CN CN202010776849.3A patent/CN112100169B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103109274A (zh) * | 2010-09-20 | 2013-05-15 | 高通股份有限公司 | 多处理器计算平台中的处理器间通信技术 |
CN102158694A (zh) * | 2010-12-01 | 2011-08-17 | 航天恒星科技有限公司 | 一种基于gpu的遥感图像解压缩方法 |
CN107278373A (zh) * | 2015-03-06 | 2017-10-20 | 高通股份有限公司 | 用于使用自适应瓦片大小的视频译码的方法和设备 |
CN104917702A (zh) * | 2015-06-03 | 2015-09-16 | 香港中文大学深圳研究院 | 一种具有网络编码功能的代数交换系统及其预处理算法 |
CN105262970A (zh) * | 2015-10-14 | 2016-01-20 | 深圳先进技术研究院 | 一种基于图像数据的封装方法及系统 |
CN106357619A (zh) * | 2016-08-26 | 2017-01-25 | 海宁翔亦信息科技有限公司 | 一种4g网络语音数据传输方法及传输系统 |
CN108737026A (zh) * | 2018-05-08 | 2018-11-02 | 深圳市心流科技有限公司 | 数据传输方法、装置及计算机可读存储介质 |
CN109063091A (zh) * | 2018-07-26 | 2018-12-21 | 成都大学 | 混合编码的数据迁移方法、数据迁移装置和存储介质 |
CN109474281A (zh) * | 2018-09-30 | 2019-03-15 | 湖南瑞利德信息科技有限公司 | 数据编码、解码方法及装置 |
CN111104258A (zh) * | 2019-12-23 | 2020-05-05 | 北京金山云网络技术有限公司 | MongoDB数据库的备份方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112100169B (zh) | 2021-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110806986B (zh) | 提高网络芯片报文存储效率的方法、设备及存储介质 | |
US6697363B1 (en) | Method and apparatus for longest matching prefix determination in a communication network | |
US4782325A (en) | Arrangement for data compression | |
CN104462141B (zh) | 一种数据存储与查询的方法、系统及存储引擎装置 | |
CN101667843B (zh) | 嵌入式系统的数据压缩、及解压缩方法与装置 | |
CN102510323A (zh) | 一种串口数据的帧识别方法 | |
CN107766529B (zh) | 一种用于污水处理行业的海量数据存储方法 | |
CN107992492B (zh) | 一种数据区块的存储方法、读取方法、其装置及区块链 | |
CN100596077C (zh) | 通道化逻辑单通道统计的方法和装置 | |
CN112100169B (zh) | 数据库交互数据编码方法及装置 | |
CN101551820A (zh) | 兴趣点属性的索引数据库的生成方法和装置 | |
CN112559482B (zh) | 一种基于分布式的二进制数据分类处理方法和系统 | |
CN103746704B (zh) | 基于双游程交替编码的芯片测试数据传输方法 | |
CN102468902B (zh) | LTE系统Turbo编码速率匹配/解速率匹配的方法 | |
CN110166318B (zh) | 一种数据统计方法及装置 | |
CN109446198B (zh) | 一种基于双数组的trie树节点压缩方法及装置 | |
CN100474781C (zh) | 2字节字符数据的压缩方法 | |
US8988258B2 (en) | Hardware compression using common portions of data | |
CN111817724B (zh) | 一种数据压缩电路 | |
US11139829B1 (en) | Data compression techniques using partitions and extraneous bit elimination | |
CN111190545B (zh) | 一种基于软件实现的trie结构进行LPM规则压缩存储的方法 | |
CN112100170B (zh) | 数据库交互数据解码方法和装置 | |
CN114025024A (zh) | 一种数据传输方法及装置 | |
CN102521228A (zh) | 一种线性数据表键值映射方法 | |
CN105490683A (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 |