CN115470235A - 一种数据处理方法、装置以及设备 - Google Patents
一种数据处理方法、装置以及设备 Download PDFInfo
- Publication number
- CN115470235A CN115470235A CN202110653902.5A CN202110653902A CN115470235A CN 115470235 A CN115470235 A CN 115470235A CN 202110653902 A CN202110653902 A CN 202110653902A CN 115470235 A CN115470235 A CN 115470235A
- Authority
- CN
- China
- Prior art keywords
- data
- data set
- processor
- storage
- format
- 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.)
- Pending
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/24—Querying
- G06F16/245—Query processing
- G06F16/24569—Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
-
- 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
-
- 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
-
- 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/25—Integrating or interfacing systems involving database management systems
-
- 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
-
- 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/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
Abstract
一种数据处理方法、装置以及设备,在该方法中,处理器向加速装置发送数据处理器请求,数据处理请求用于实现数据库中包括多个数据的第一数据集的格式转换。加速装置在获取该数据处理请求后,根据数据处理请求获取第一数据集,将以第一方式存储的第一数据集转换为第二方式存储的第二数据集。并将第二数据集存储在目标存储空间中。第二方式与第一方式不同。通过上述方法,加速装置能够对数据集进行转换。使得该数据集既适用于OLTP业务场景,又适用于OLAP业务场景。处理器不再执行转换操作,而是由加速装置执行转换操作,能够较大程度的减少对处理器的占用,保证了处理器的数据处理效率,同时也提高了格式转换效率。
Description
技术领域
本申请涉及存储技术领域,尤其涉及一种数据处理方法、装置以及设备。
背景技术
通常数据库在存储数据时可以以行粒度存储和以列粒度存储。以行为准存储的数据在一定程度上保持了数据的原始形态,便于对数据进行增删查改等操作,更适用于联机事务处理(on-line transaction processing,OLTP)业务场景。以列为准存储的数据将相同字段的数据排布在一起存储,便于后续对数据进行分析,更适用于联机分析处理(on-line analytical processing,OLAP)业务场景中。
为了能够同时应对OLTP业务场景和OLAP业务场景,需要同时支持这两种存储格式。例如,当将数据存储在硬盘等存储器中时,以行为准存储。当需要执行数据分析等处理操作时,则需将该数据从硬盘等存储器转移至内存,并在内存中以列为准存储。在这个过程中,将数据从硬盘等存储器转移至内存需要对数据进行格式转换,目前对数据进行格式转换的任务主要由设备中的中央处理器(central processing unit,CPU)执行,由于格式转换过程中涉及到大量的数据拷贝和数据处理工作,占用了CPU的较多资源,对CPU的消耗较大。
发明内容
本申请提供一种数据处理方法、装置以及设备,用以加快实现格式转换,减少对CPU的消耗。
第一方面,本申请实施例提供了一种数据处理方法,该方法可以应用于包括加速装置以及处理器的设备中。处理器和加速装置可以通过PCIe相连,通过PCIe进行交互。在该方法中,处理器可以向加速装置发送数据处理器请求,数据处理请求用于实现数据库中包括多个数据的第一数据集的格式转换。加速装置在获取该数据处理请求后,可以根据数据处理请求获取第一数据集。加速装置可以对第一数据集进行格式转换,将以第一方式存储的第一数据集转换为第二方式存储的第二数据集。加速装置还可以将第二数据集存储在目标存储空间中。其中,第二数据集包括至少一个数据,第二方式与第一方式不同。
通过上述方法,在该设备中,能够对数据集进行转换,也即该设备能够支持两种不同的数据存储格式,既支持行存的方式又支持列存的方式。使得该设备既适用于OLTP业务场景,又适用于OLAP业务场景。在设备内部,处理器不再执行转换操作,而是由加速装置执行转换操作,能够较大程度的减少对处理器的占用,保证了处理器的数据处理效率,同时也提高了格式转换效率。
在一种可能的实施方式中,第一方式和第二方式分别为行存储或列存储,行存储用于指示在数据库中以行为准存储数据,列存储用于指示在数据库中以列为准存储数据。
通过上述方法,加速装置能够将行存的第一数据集转换为列存的第二数据集,保证第二数据集能够用于OLAP业务场景,还能够将列存的第一数据集转换为行存的第二数据集,保证第二数据集能够用于OLTP业务场景。
在一种可能的实施方式中,当第一方式为行存储,第二方式为列存储时,加速装置在进行格式转换,对于不同类型的字段可以采用不同的转换方式。下面以定长字段和变长字段的转换方式为例进行说明:
1、对定长字段的格式转换。
加速装置可以获取第一数据集中定长字段下的各个数据,将各个数据连续排布,生成第二数据集,第二数据集还包括空值指示信息,空值指示信息用于指示定长字段下的数据为空值或为非空值。
2、对变长字段的格式转换。
加速装置获得第一数据集中变长字段的各个数据,将各个数据连续排布,生成第二数据集,第二数据集还包括位置指示信息,位置指示信息用于指示变长字段下的各个数据在第二数据集中的位置。
通过上述方法,加速装置针对不同的字段采用不同的方式进行格式转换,使得转换后的第二数据集能够清楚准确的记录数据、数据一些空值指示信息或位置指示信息,能够保证格式转换的有效性。
在一种可能的实施方式中,加速装置除了能够实现存储方式转换,还可以实现数据格式转换,将存储数据所需的数据格式转换为进行数据计算所需的数据格式。加速装置可以对第一数据集中数据进行数据格式转换,生成第二数据集,其中,第一数据集中数据的数据格式为存储数据所需的数据格式,第二数据集的数据格式为处理器进行数据计算所需的数据格式。
通过上述方法,将第一数据集转换为处理器进行数据计算所需的数据格式,可以保证处理器在后续进行数据计算时,能够方便快速的获取数据计算所需的数据,提高数据计算效率。
在一种可能的实施方式中,对于第一数据集中包括的数据类型为小数(decimal)类型的数据,加速装置在进行数据格式转换时,可以实施如下操作的部分或全部:
操作1、加速装置获取小数类型的数据的数据描述信息,将数据描述信息作为第二数据的一部分,数据描述信息包括:符号(sign)、精度(precision)、范围(scale)。
操作2、加速装置可以根据精度和范围对小数类型的数据进行补位操作或去位操作。
通过上述方法,加速装置能够将数据描述信息作为第二数据的一部分,便于后续处理器获取该数据描述信息。加速装置根据数据描述信息调整小数类型的数据,便于后续处理器对该数据进行数据计算。
在一种可能的实施方式中,对第一数据集中数据类型为日期(date)类型的数据,加速装置在进行数据格式转换时,加速装置可以对日期类型的数据进行分解,获取多个子数据,一个子数据表征年、月、日中的一个,多个子数据在第二数据中连续排布。
通过上述方法,加速装置将日期类型的数据分拆为分别表征年、月、日的子数据,便于处理器能够单独调用年、月、日的子数据进行数据计算。
在一种可能的实施方式中,加速装置为SOC、FPGA、GPU、ASIC、AI芯片或DPU中的至少一种。
通过上述方法,加速装置的实现方式较为多样灵活,适用于不同的场景。
第二方面,本申请实施例还提供了一种加速装置,该加速装置具有实现上述第以方面的方法实例中行为的功能,有益效果可以参见第一方面的描述此处不再赘述。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。在一个可能的设计中,所述加速装置的结构中包括请求获取模块、数据获取模块、格式转换模块,这些模块可以执行上述第一方面方法示例中的相应功能,具体参见方法示例中的详细描述,此处不做赘述。
第三方面,本申请实施例还提供了一种加速装置,该加速装置具有实现上述第一方面的方法实例中行为的功能,有益效果可以参见第一方面的描述此处不再赘述。所述装置的结构中包括处理器,可选的,还可以包括存储器和通信接口。所述处理器被配置为支持所述加速设备执行上述第一方面方法中相应的功能。所述存储器与所述处理器耦合,其保存所述通信装置必要的计算机程序指令和数据(如第一数据集或第二数据集)。所述加速装置的结构中还包括通信接口,用于与其他设备进行通信,如可以接收数据处理请求。
第四方面,本申请实施例还提供了一种计算设备,该计算设备包括加速装置和处理器,处理器用于向加速装置发送数据处理请求。加速装置具有实现上述第一方面的方法实例中行为的功能,有益效果可以参见第一方面的描述此处不再赘述。
第五方面,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面以及第一方面的各个可能的实施方式中所述的方法。
第六方面,本申请还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面以及第一方面的各个可能的实施方式中所述的方法。
第七方面,本申请还提供一种计算机芯片,所述芯片与存储器相连,所述芯片用于读取并执行所述存储器中存储的软件程序,执行上述第一方面以及第一方面的各个可能的实施方式中所述的方法。
附图说明
图1为本申请提供的一种系统的架构示意图;
图2为本申请提供的一种管理设备的结构示意图;
图3A~3B为本申请提供的一种存储系统的结构示意图;
图4为本申请提供的一种数据处理方法示意图;
图5为本申请提供的一种第一数据集的示意图;
图6为本申请提供的一种第一数据集中一行数据的示意图;
图7为本申请提供的一种第一数据集中定长字段的转换方法示意图;
图8为本申请提供的一种第一数据集中变长字段的转换方法示意图;
图9为本申请提供的一种第一数据集和第二数据集的示意图;
图10为本申请提供的一种加速装置的结构示意图。
具体实施方式
在对本申请实施例所提供的数据处理方法进行说明之前,对本申请实施例所涉及的概念进行说明:
(1)关系型数据库。
数据库可以理解为存储数据集合的一种形式。数据库中的数据可以按照特定的数据模型组织、描述和存储。
关系型数据库是数据库中的一种,关系型数据库是指利用关系模型来建立数据关系,并基于上述数据关系存储数据的数据库。关系模型可以理解为二维表格模型。关系型数据库可以理解为由二维表及二维表之间的联系所组成的一个数据组织。
在关系模型中,一个关系可以理解为一张二维表。每个关系都具有一个关系名,也就是二维表的表名。二维表中包括多元组,每个元组可以理解为一张二维表中的一行,一个元组也可以称为一个记录。一个属性指二维表中的一列,也可以称为字段,一列中的各个数据可以称为该字段下的各个数据。
(2)定长字段、变长字段。
基于字段的长度对字段进行划分,字段的类型可以分为定长字段和变长字段。定长字段是指长度固定的。定长字段的长度通常记录在二维表的表头中。变长字段是指该字段中的各个数据的长度不同,变长字段的长度不固定。
(3)字符(character)型字段、整数(int)型字段、小数(decimal)型字段、日期(date)型字段。
从字段中数据的数据类型的角度,字段可以包括字符型字段、整数型字段、小数型字段、日期型字段。
字符型字段是指字段中的数据为字符。整数型字段是指字段中的数据为整数。小数型字段是指字段中的数据为精确数值,可精确到小数后的几位。日期型字段指示字段中的数据指示的是日期。
对于字符型字段和日期型字段属于定长字段。小数型字段和整数型字段在不同的关系中,可以为定长字段,也可以为变长字段。
如图1所示,为本申请实施例提供的管理系统架构示意图,该系统中包括客户端200以及管理设备100。
客户端200部署在用户侧,该用户可以通过客户端200向管理设备100发起数据请求,如用户可以通过客户端200向管理设备100发起用于请求数据库中的数据的数据请求,如用去请求读取数据的数据读取请求,或用于请求写入数据的数据写入请求。在OLAP业务场景中,用户可以通过客户端200向管理设备100发起用于请求数据库中的某一列或多列的数据的数据请求,例如,读取第一列中数据的数据请求。
本申请实施例并不限定客户端200的具体形态,例如客户端200可为部署在用户的本地计算设备(例如,服务器、计算机、笔记本电脑或移动终端等计算设备)或专用计算设备(例如,具有计算能力的卸载卡)的软件程序。该软件程序可以为浏览器,代理(agent)或文件分析软件。用户可以通过该软件程序与管理设备100连接,如在软件程序所在的计算设备与管理设备100之间通过以太网、无线网络(如WIFI、第5代(5th Generation,5G)通信技术)建立网络连接,以进行信息交互。
如图2所示,为管理设备100的结构示意图,管理设备100包括总线110、处理器120、加速装置130、内存140、通信接口150以及外存160。处理器120、加速装置130、内存140、通信接口150之间通过总线110通信。总线110可以为基于快捷外围部件互连标准(peripheralcomponent interconnect express,PCIe)的线路。
其中,处理器120可以为中央处理器(central processing unit,CPU)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammable gate array,FPGA)、人工智能(artificial intelligence,AI)芯片、片上系统(system on chip,SoC)或复杂可编程逻辑器件(complex programmable logic device,CPLD),图形处理器(graphics processing unit,GPU)等。
内存140可以包括易失性存储器(volatile memory),例如RAM、DRAM等,也可以包括非易失性存储器(non-volatile memory),例如存储级内存(storage class memory,SCM)等,或者易失性存储器与非易失性存储器的组合等。
内存140中还可以包括操作系统等其他运行进程所需的软件模块。操作系统可以为LINUXTM,UNIXTM,WINDOWSTM等。该内存140中还可以存储数据库中的数据,如内存140中所存储的数据可以包括数据库中最近写入的数据,当内存140中的数据量达到一定阈值时,处理器120可以将内存140中的数据存储至外存160中,以进行持久化存储。在需要读取数据库的数据时,从外存160中读取的数据可以先存储在内存140,也可以是说,内存140中所存储的数据也可以包括从外存160中读取的数据。
外存160,也可以称为辅助存储器,该外存160可以为非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),硬盘驱动器(hard diskdrive,HDD)或固态驱动器(solid state disk,SSD)等。外存160可以用于永久的存储数据。
内存140中所存储的数据库中的数据的存储方式和外存160中所存储的数据库中的数据的存储方式可以相同,也可以不同。例如,内存140和外存160中所存储的数据库中的数据均可以是以行为准的存储方式或以列为准的存储方式。又例如,内存140所存储的数据库中的数据以行为准的存储方式,外存160中所存储的数据库中的数据是以列为准的存储方式。又例如,内存140所存储的数据库中的数据以列为准的存储方式,外存160中所存储的数据库中的数据是以行为准的存储方式。
为了便于描述,本申请的以下实施例,以由加速装置130执行本申请实施例提供的数据处理方法为例进行说明,下面对加速装置130执行本申请实施例提供的数据处理方法所适用的几种场景进行说明。
场景一、内存140(也可以称为主存(main memory))中所存储的数据库中的数据的存储方式和外存160(也可以称为存储器)中所存储的数据库中的数据的存储方式不同。
内存140中所存储的数据库中的数据的存储方式和外存160中所存储的数据库中的数据的存储方式不同,在将外存160中的数据迁移至内存140时,或将内存140中的数据迁移至外存160时,需要对所需要迁移的数据进行格式转换。对数据的格式转换可以由加速装置130执行,也即加速装置130可以执行本申请实施例提供的数据处理方法,此为本申请实施例提供的数据处理方法所适用的一种场景。
在这种场景下,将外存160中的数据迁移至内存140或将内存140中的数据迁移至外存160可以是由处理器120主导的。也就是说,当需要将外存160中的数据迁移至内存140时,处理器120可以向外存160发起指令以获取需要迁移的数据,处理器120在从外存160中获取需要迁移的数据之后,处理器120可以将该需要迁移的数据存至内存140,处理器120还可以向加速装置130发起数据处理请求,以请求加速装置130对需要迁移的数据进行格式转换,加速装置130可以执行本申请实施例提供的数据处理方法。
当需要将内存140中的数据迁移至外存160时,处理器120可以从内存140中获取需要迁移的数据,之后向外存160发起指令,以指示外存160存储该需要迁移的数据,处理器120还可以向加速装置130发起数据处理请求,以请求加速装置130对需要迁移的数据进行格式转换,加速装置130可以执行本申请实施例提供的数据处理方法。
场景二、数据库中的数据在管理设备100中的存储格式是以行为准的存储格式,客户端200所发起的数据请求用于请求部分列的数据。
在这种场景下,当来自客户端200的数据请求到达管理设备100时,管理设备100中的通信接口150接收到该数据请求,将该数据请求发送给处理器120;处理器120可以先确定该数据请求所请求的数据所存储的位置。
如果该数据请求所请求的数据存储在内存140中,处理器120可以从该内存140中读取所请求的数据,但由于数据库中的数据的存储格式是以行为准的存储格式存储的。处理器120可以向加速装置130发起数据处理请求,以请求加速装置130对所请求的数据进行格式转换,加速装置130可以执行本申请实施例提供的数据处理方法,将所请求的数据的格式转换为以列为准的存储格式。加速装置130在转换了所请求的数据的存储格式之后,处理器120再从该内存140中读取该转换了存储格式后的数据。
如果该数据请求所请求的数据存储在外存160中,处理器120可以将该数据请求所请求的数据从外存160移至内存140。处理器120可以向加速装置130发起数据处理请求,以请求加速装置130对所请求的数据进行格式转换,加速装置130可以执行本申请实施例提供的数据处理方法,将所请求的数据的格式转换为以列为准的存储格式。加速装置130在转换了所请求的数据的存储格式之后,处理器120再从该内存140中读取该转换了存储格式后的数据。
场景三、数据库中的数据在管理设备100中的存储格式是以列为准的存储格式,客户端200所发起的数据请求用于请求部分行的数据。
场景三与场景二类似,区别在于场景二中是将以行存储的数据转换为以列存储的数据。具有实现方式可以参见前述说明,此处不再赘述。
在硬件上,加速装置130包括处理器131以及通信接口132,处理器131与通信接口132通过总线连接。处理器131能够通信接收132与管理设备100中的其他组件(如处理器120)进行交互,如接收数据处理请求。
处理器131与处理器120类似,该处理器131可以为CPU、ASIC、FPGA、AI芯片、SoC、CPLD、或GPU等。加速装置130中的处理器131可以作为处理器120的协处理器部署在管理设备100中,与处理器120配合执行操作。
需要说明的是,加速装置130中可以单独设置存储器133,该存储器133可以存储计算机程序指令,还可以作为缓存存储格式转换前的数据(如本申请实施例中的第一数据集),还可以存储格式转换后的数据(如本申请实施例中的第二数据集)。在一种可能的情况下,处理器120和加速装置130中的处理器131可以共用内存140,也即内存140能够兼具存储器133的所有功能或部分功能。当内存140具备存储器133的全部功能时,这种情况下加速装置130中可以不再单独设备存储器133。
处理器131可以通过调用存储器133或内存140(在加速装置130中不设置存储器133或存储器133不用于存储计算机程序指令,只具备缓存功能的情况下)中存储的计算机程序指令(如该处理器131为CPU、AI芯片或GPU时),执行本申请实施例提供的数据处理方法。处理器131也自行运行烧写在处理器131上的计算机程序指令或硬件电路的处理逻辑(如该处理器131为ASIC、FPGA、SoC、或CPLD时),执行本申请实施例提供的数据处理方法。
在本申请实施例中,管理设备100能够用于管理数据库,例如该管理设备100可以是集中式存储系统或分布式存储系统中的节点,能够对集中式存储系统或分布式存储系统中的数据库进行管理。
如图3A所示,为本申请实施例提供的一个存储系统300。该存储系统为集中式存储系统,其特点是有统一的入口,所有从外部设备来的数据都要经过该入口,该入口为集中式存储系统的引擎。引擎是集中式存储系统中最为核心的部件,许多存储系统的高级功能都在其中实现。本申请实施例中为例保证引擎的可靠性,可以部署多个引擎。在图3A所示的系统架构中以存在引擎310为例。本申请实施例并不限定引擎的数量。
引擎310中有一个或多个控制器,图3A以引擎310包含两个控制器为例予以说明。控制器0与控制器1之间具有镜像通道,控制器0和控制器1互为备份,当控制器0发生故障时,控制器1可以接管控制器0的业务,当控制器1发生故障时,控制器0可以接管控制器1的业务,从而避免硬件故障导致整个存储系统300的不可用。当引擎310中部署有4个控制器时,任意两个控制器之间都具有镜像通道,因此任意两个控制器互为备份。控制器0能够接收数据请求,处理该数据请求。例如,当该数据请求为数据读取请求时,控制器0可以根据该数据请求从本地的内存或硬盘320中读取数据,在控制器0中的处理器120在判断需要进行格式转换的情况下,控制器0中的处理器120可以向控制器0中的加速装置130发起数据处理请求,触发控制器0中的加速装置130执行本申请实施例提供的数据处理方法。控制器0还可以反馈携带有读取的数据的数据读取响应。例如,当该数据请求为数据写入请求时,控制器0可以根据该数据写入请求在本地的内存或硬盘320中写入数据,若控制器0中的处理器120在判断需要进行格式转换的情况下,控制器0中的处理器120可以向控制器0中的加速装置130发起数据处理请求,触发控制器0中的加速装置130执行本申请实施例提供的数据处理方法。控制器0还可以反馈数据写入响应,以指示该数据已成功写入。
在本申请实施例中管理设备100可以为图3A所示的系统中的引擎310中的控制器1或控制0。关于控制器1或控制器0的结构可以参见图2所示的管理设备100的结构,此处不再赘述。
图3A所示的是一种盘控分离的集中式存储系统。在该系统中,引擎310可以不具有硬盘槽位,硬盘320需要放置在硬盘框中,后端接口116与硬盘框通信。后端接口116以适配卡的形态存在于引擎310中,一个引擎310上可以同时使用两个或两个以上后端接口116来连接多个硬盘框。或者,适配卡也可以集成在主板上,此时适配卡可通过PCIE总线与处理器120112通信。在该系统中,引擎130也可以具有硬盘槽位,硬盘320直接插入到硬盘槽位中。
如图3B所示,为本申请实施例提供的另一种存储系统架构示意图,图3B的存储系统为一种分布式存储系统,该存储系统300中包括计算节点集群和存储节点集群。计算节点集群包括一个或多个计算节点330(图3B中示出了两个计算节点330,但不限于两个计算节点330),各个计算节点330之间可以相互通信。计算节点330是一种计算设备,如服务器、台式计算机或者存储阵列的控制器等。
在本申请实施例中管理设备100可以为图3B所示的系统中的计算节点330。关于计算节点330的结构可以参见图2所示的管理设备100的结构,此处不再赘述。
计算节点330可以接收数据请求,处理该数据请求。例如,当该数据请求为数据读取请求时,计算节点330可以根据该数据请求从本地的内存或存储节点集群中的存储节点340中读取数据,在计算节点330中的处理器120在判断需要进行格式转换的情况下,计算节点330中的处理器120可以向计算节点330中的加速装置130发起数据处理请求,触发计算节点330中的加速装置130执行本申请实施例提供的数据处理方法。计算节点330还可以反馈携带有读取的数据的数据读取响应。例如,当该数据请求为数据写入请求时,计算节点330可以根据该数据写入请求在本地的内存或存储节点集群中的存储节点340写入数据,计算节点330中的处理器120可以向计算节点330中的加速装置130发起数据处理请求,触发计算节点330中的加速装置130执行本申请实施例提供的数据处理方法。计算节点330还可以反馈数据写入响应,以指示该数据已成功写入。
任意一个计算节点330可通过网络访问存储节点集群中的任意一个存储节点340。存储节点集群包括多个存储节点340(图3B中示出了三个存储节点340,但不限于三个存储节点340)。一个存储节点340中可以包括一个或多个硬盘,存储节点114主要用于存储数据,如存储数据库中的数据,根据来自计算节点330发起的指令,在本地存储数据或从本地读取数据将数据反馈给计算节点。
上述提及的集中式存储系统以及分布式存储系统仅是举例,本申请实施例提供的数据处理方法也适用于其他集中式存储系统以及分布式存储系统。
下面结合附图4,以图1或图2所提及的系统以及管理设备100为例,对本申请实施例提供的数据处理方法进行说明。该方法可以应用于管理设备100,包括:
步骤401:处理器120在确定需要对数据进行格式转换时,向加速装置130发送数据处理请求。该数据处理请求用于请求加速装置130对数据库中的第一数据集进行格式转换。该第一数据集包括至少一个数据,如可以包括定长字段中的数据,也可以包括变长字段中的数据,还可以既包括定长字段中的数据又包括变长字段中的数据。
根据前述说明,处理器120确定需要进行格式转换的情况包括如下两种。
第一种、内存140中所存储的数据库中的数据的存储方式和外存160中所存储的数据库中的数据的存储方式不同,处理器120需要将外存160中的数据迁移至内存140时,或将内存140中的数据迁移至外存160时,处理器120确定需要对需要迁移的数据进行格式转换。在这种情况下,该第一数据集即为需要迁移的数据。
第二种、处理器120接收到来自客户端200的数据请求,用于请求数据库中的数据。当所请求的数据所需的存储格式与该数据在管理设备100中的存储格式不一致时。例如,该数据请求需要请求部分列的数据,而数据库中的数据在管理设备100的存储格式是以行为准的存储格式。又例如,该数据请求需要请求部分行的数据,而数据库中的数据在管理设备100的存储格式是以列为准的存储格式。处理器120确定需要对所请求的数据进行格式转换。在这种情况下,该第一数据集即为所请求的数据。
无论在哪一种情况下,处理器120在确定需要对第一数据集进行格式转换后,处理器120均会向加速装置130发送数据处理请求,以请求对该第一数据集进行格式转换。
步骤402:加速装置130在接收到该数据处理请求之后,加速装置130可以先获取第一数据集。
对应步骤401中的第一种情况,处理器120可以将需要迁移的数据在内存140中的地址发送给加速装置130,加速装置130可以根据该地址从内存140中获取该第一数据集。处理器120还可以通知加速装置130存储该数据的相关信息在内存140中的地址,该地址可以为连续地址段或不连续的多个地址段的集合。该数据的相关信息可以指示二维表的信息,如该数据的相关信息可以为二维表的表头所记录的信息,例如,该二维表中每个字段的类型(为定长字段还是变长字段)、定长字段的长度、以及字段是否可以为空的属性等。加速装置130可以根据该地址从内存140中读取该数据的相关信息。
对应步骤401中的第二种情况,若所请求的数据存储已存储在内存140中,处理器120可以将所请求的数据在内存140中的地址发送给加速装置130,加速装置130可以根据该地址从内存140中获取该第一数据集。若所请求的数据存储在外存160中,处理器120可以将所请求的数据从外存160迁移至内存140,在内存140中缓存所请求的数据,之后,处理器120可以将所请求的数据在内存140中的缓存地址发送给加速装置130,加速装置130可以根据该缓存地址从内存140中获取该第一数据集。处理器120还可以通知加速装置130存储该数据的相关信息在内存140中的地址。加速装置130可以根据该地址从内存140中读取该数据的相关信息。
步骤403:加速装置130对第一数据集进行格式转换,将以第一方式存储的第一数据集转换为以第二方式存储的第二数据集。例如,加速装置130可以将以行存储的第一数据集转换为以列存储的第二数据集。又例如,加速装置130可以将以列存储的第一数据集转换为以行存储的第二数据集。
步骤404:加速装置130将第二数据集存储至目标存储空间。
将行存储的数据集转换为以列存储的数据集的过程与将列存储的数据集转换为以行存储的数据集的过程互逆,这里以将行存储的第一数据集转换为以列存储的第二数据集的过程为例,对格式转换的方式进行说明。对于以将行存储的数据集转换为以列存储的数据集的过程,将行存储的数据集转换为以列存储的数据集的过程进行逆向操作即可获得,此处不再赘述。
在以行存储的第一数据集中,对于不同类型的字段,在进行格式转换时,加速装置130可以采用不同的操作,下面分别针对不同字段,加速装置130在格式转换过程中所执行的操作进行说明:
如图5所示,为本申请实施例提供的一种具象的二维表的示意图。该二维表中存在多列字段,在图5中,以存在N列为例。每列为一个字段。一个字段可以为定长字段,也可以为变长字段。
在以行存储该二维表时,每一行的数据在存储时,每行的存储格式如图6所示。若每行的数据包括两部分,一部分为字段描述信息,另一部分为每个字段中的数据。
字段描述信息中包括变长字段长度信息、空值(null)信息、控制信息。其中变长字段长度信息指示该行中存在的各个变长字段的长度。空值(null)信息指示该行中各个字段是否为空值。控制信息用于指示数据库内部实现并发控制的信息,比如对数据库中进行增删查改等操作并发处理的相关信息。
需要说明的是,图6仅是示例性的展示以了以行存储数据时中的一种存储格式。本申请实施例也同样适用于其他以行存储数据的存储格式。
接下来,分别以定长字段和变长字段为例进一步解释加速装置如何进行数据转换的过程。
1)针对定长字段的格式转换方式。
加速装置130在针对定长字段进行格式转换时,可以获取该定长字段下的各个数据,该各个数据可以连续排列,转换为列存的方式。
例如,加速装置130在针对定长字段进行格式转换时,可以读取每行数据中该定长字段所对应的空值(null)信息,确定该定长字段下的各个数据是否为空值。对于该定长字段下的一个数据,若空值信息指示为非空值,在格式转换时,真实记录该数据。若空值信息指示为空值,在格式转换时,用0字节记录该数据,以表示该数据为空值。在生成的第二数据集中该定长字段下的各个数据连续排列。也即该定长字段下的各个数据在存储时,是按顺序紧邻写入的。
为了能够更加直观的表征该定长字段中各个数据是否为空值,该第二数据集中还可以包括空值指示信息,用于指示该定长字段中各个数据是否为空值。
如图7所示,为本申请实施例提供的一种针对定长字段的格式转换示意图。
以行存的第一数据集(也即表A),表示薪资的定长字段经过加速装置130,转换为列存的数据。加速装置130还额外生成了一列空值标志(null flag)字段,该null flag字段中包括多个null flag值,每个null flag值与定长字段中的一个数据对应,用于描述所对应的数据是否为空值。例如,图7中,利用0表示非空值,利用1表示空值。
在将第一数据集转换为第二数据集时,该定长字段中的各个数据在第二数据集中连续排布,也即该各个数据存储地址是连续的。空值标志字段中的各个数据在第二数据集中也是连续排布的。也就是说,在第二数据集中,该定长字段中的各个数据可以连续排布。该空值标志字段中的各个null flag值连续排布。本申请并不限定该定长字段中的各个数据与该空值标志字段中的各个null flag值在第二数据集中的排序。例如,该定长字段中的各个数据可以排序在前,该空值标志字段中的各个null flag值可以排序在后。又例如,该定长字段中的各个数据可以排序在后,该空值标志字段中的各个null flag值可以排序在前。
2)、针对变长字段的格式转换方式。
加速装置130在针对变长字段进行格式转换时,可以获取该变长字段下的各个数据,该各个数据可以连续排列,转换为列存的方式。由于变长字段中的各个数据的长度不固定,加速装置130还可以增加相应的描述信息,以描述该变长字段中各个数据的长度或各个数据在第二数据集中的位置。
例如,加速装置130在针对变长字段进行格式转换时,可以读取每行数据中的描述信息中获取该变长字段的长度以及所对应的空值(null)信息,确定该变长字段下的各个数据的真实长度以及数据是否为空值。对于该变长字段下的一个数据,若空值信息指示为非空值,在格式转换时,真实记录该数据。若空值信息指示为空值,在格式转换时,用0字节记录该数据,以表示该数据为空值。在生成的第二数据集中该变长字段下的各个数据连续排列。也即该变长字段下的各个数据在存储时,是按顺序紧邻写入的,各个数据的存储地址是连续的。
由于该变长字段中下各个数据的长度不一致,加速装置130在针对变长字段进行格式转换时,还可以生成位置信息。该位置信息用于指示该变长字段下的各个数据在第二数据集中的位置。本申请实施例并不限定位置信息指示该变长字段下的各个数据在第二数据集中的位置的方式,例如,对于变长字段中的任一数据,位置信息可以为距离该变长字段下第一个数据(如第一个数据的第一个字节)的偏移量;位置信息也可以为该数据距离上一个数据(最后一个字节)的偏移量(这种情况下,偏移量也可以理解为该数据的长度)。
如图8所示,为本申请实施例提供的一种针对变长字段的格式转换示意图。
以行存的第一数据集(也即表A),表示姓名的变长字段经过加速装置130,转换为列存的数据。加速装置130还额外生成了一列偏移量(offset)字段,该offset字段中包括多个offset值,每个offset值与变长字段中的一个数据对应,用于描述所对应的数据距离上一个数据的偏移量。例如,图8中,该变长字段下的第一个数据TOM的offset值为3,表示距离上一个数据,也即与该数据的第一个字节偏移量为3字节。该变长字段下的第二个数据brand的offset值为5,表示距离上一个数据,也即第一个数据的最后一个字节偏移量为5字节。
在将第一数据集转换为第二数据集时,该变长字段中的各个数据在第二数据集中连续排布,也即该各个数据存储地址是连续的。该offset字段中的各个offset值在第二数据集中也是连续排布的。也就是说,在第二数据集中,该变长字段中的各个数据可以连续排布。该offset字段中的各个offset值连续排布。本申请并不限定该变长字段中的各个数据与该offset字段中的各个offset值在第二数据集中的排序。例如,该变长字段中的各个数据可以排序在前,该offset字段中的各个offset值可以排序在后。又例如,该变长字段中的各个数据可以排序在后,该offset字段中的各个offset值可以排序在前。
如图9所示,为将行存的第一数据集转换为列存的第二数据集后,第一数据集与第二数据集具象化的格式。从图9中可以看到,第一数据集到第二数据集,相当于做了“转置”,数据集中字符或数值是不变的,相当于将第一数据集中的一行,转换为第二数据集中的一列。这里所谓具象化是指数据集的存储方式所能具象的数据组成方式。在实际存储时,第一数据集的每行中的各个数据是以连续排布的方式存储的。第二数据集中的每行中的各个数据是以连续排布的方式存储的。
上面针对不同字段进行格式转换,加速装置130执行的操作进行了说明。作为一种可能的实现方式,除了上文解释的格式转换以外,加速装置还可以实现数据格式的转换。具体到数据集中的一些数据类型,在进行数据计算时所需要的数据格式与存储数据所需的数据格式会存在不同。加速装置130在对第一设备进行格式转换时,还可以对字段中的数据进行数据格式转换,将存储数据所需的数据格式转换为进行数据计算时所需要的数据格式。举例来说,在上述图8中格式转换前的第一数据集的数据格式为存储该数据所需的数据格式,第二数据集的数据格式为数据计算时所需要的数据格式。
例如,对于小数型字段,该小数型字段中数据类型为小数型,可以精确到小数的后几位,而具体精确到该小数的后几位跟数据本身有关。在进行数据计算时,可能会需要该小数型数据的一些数据描述信息,也可能为了方便数据计算,要求该小数型数据本身的数据长度、以及小数点后的位数满足其对应的数据描述信息。加速装置130还可以执行下列两种操作的部分或全部:
操作一、加速装置130获取这类小数型字段中的各个数据对应的数据描述信息,将其作为第二数据集的一部分。
对于这类小数型字段中的各个数据,每个数据有对应的数据描述信息。该数据描述信息用于描述所对应的数据本身的属性,如指示数据的符号(sign)、精度(precision)、以及范围(scale)。该数据描述信息可以与第一数据集中的数据一起存储,也可以与第一数据集中的数据独立存储。
符号指示该小数型的数据前的符号为正号,还负号。精度指示该小数型的数据整体的长度。范围指示小数型的数据小数点后的位数。
举例来说,对于小数型字段中的数据-3.01456。该数据的数据描述信息可以指示数据-3.01456的符号为负号,数据-3.01456的整体长度为6位,小数点后的位数为5位。
处理器120通常在处理小数型字段中的数据时,需要获取该数据描述信息,以便对数据进行计算或处理。本申请实施例并不限定处理器120获取该数据描述信息的方式,数据描述信息的获取方式与数据库中数据描述信息存储方式有关。在不同的数据库中,可以采用不同的方式获取该数据描述信息。
加速装置130在对该小数型字段进行格式转换时,也可以获取该小数型字段中的各个数据对应的数据描述信息,将各个数据对应的数据描述信息作为第二数据集的一部分。各个数据对应的数据描述信息在第二数据集也可以连续排布。
操作二、加速装置130对这类小数型字段中的各个数据进行补位操作。
在一些存储场景中,在存储这类小数型字段中的数据时,有时为了节省存储空间,会将该数据中头部、或末尾的无意义的零去除,在去除零后再存储。这里的无意义是指对数据的数值不存在影响。
故而,第一数据集中这类小数型字段中的数据可能为去除零之后的数据,为了能够恢复出原始的数据,加速装置130可以根据数据描述信息(如精度以及范围)对这类小数型字段中的数据进行补位操作,也即补零。
加速装置130可以在数据之后补零,以使得补零之后的数据中小数点后的位数满足该范围的要求;加速装置130还可以在数据之前补零,使得补零之后的数据的整体位数满足精度的要求。
举例来说,小数型字段中的一个原始的数据为0012.456123000,处理器120在存储该数据时,可以去除头部无意义的两个零,以及末尾无意义的三个零,也即存储后的第一数据集中该数据将变为12.456123。加速装置130在获取数据12.456123后,可以为该数据12.456123进行补位,当该数据描述信息中的范围指示需要精确到小数点后9位,该数据描述信息中的精度指示该数据整体长度为13,加速装置130可以在该数据12.456123的头部补两个零,在尾部补三个零。
操作三、加速装置130对这类小数型字段中的各个数据进行去位操作。
在另一些存储场景中,在存储这类小数型字段中的数据时,有时为了保证该小数型字段中的各个数据所占用的存储空间接近,会在该数据中头部、或末尾补无意义的零,在补零后再存储。这里的无意义是指对数据的数值不存在影响。这里仅是以补零为例,在实际应用中,也可以补充其他数值。
加速装置130可以在数据之后去零,以使得去零之后的数据中小数点后的位数满足该范围的要求;加速装置130还可以在数据之前去零,使得去零之后的数据的整体位数满足精度的要求。
故而,第一数据集中这类小数型字段中的数据为补零之后的数据,为了能够恢复出原始的数据,加速装置130可以根据数据描述信息(如精度以及范围)对这类小数型字段中的数据进行去位操作,如去除无意义的零或数值。
举例来说,小数型字段中的一个原始的数据为12.456123,处理器120在存储该数据时,可以为保证该小数型字段中的数据长度均为13,可以在该数据的头部补无意义的三个零,以及在该数据的末尾补无意义的二个零,也即存储后的第一数据集中该数据将变为00012.45612300。加速装置130在获取数据00012.45612300后,可以为该数据00012.45612300进行去位,当该数据描述信息中的范围指示需要精确到小数点后6位,该数据描述信息中的精度指示该数据整体长度为8,加速装置130可以去除该数据00012.45612300的头部的三个零以及尾部的两个零。
需要说明的是,如果在存储数据时,在原始数据的头部或尾部补充了无意义的零,加速装置130也可以不考虑数据描述信息,直接去除第一数据集中该数据的头部或尾部的零。
又例如,对于日期型字段,该日期型字段中的数据表示的是日期,但在存储该日期型字段中的数据时,会将该数据以数值型的数据进行存储。例如,对于日期2021年6月2日,在存储时,会以数值20210602来存储。但处理器120在处理这类日期型字段中的数据时,还是需要明确出该数据中表示年、月、日的数据。
故而加速装置130在对日期型字段中的数据进行数据格式转换时,可以将数值型的数据转换为日期型的数据。对于第一数据集中日期型字段中的一个数值型数据,加速装置130可以将该数值型数据分解为多个子数据,一个子数据用于表征年、月、或日。
仍以数值型数据为20210602为例,加速装置130可以将该数值型数据分拆为2021、06、02这三个数值型的子数据。
加速装置130在生成第二数据集之后,可以将加速装置130存储在目标存储空间,该目标存储空间是处理器120为该第二数据集申请的。处理器120在发起该数据处理请求时,也可以将该目标存储空间的地址携带在该数据处理请求中,以便加速装置130在获取第二数据集后,可以将该第二数据集存储至目标存储空间。该目标存储空间可以是内存140中的存储空间(如在场景一中需要将外存160中的数据迁移至内存140的情况、或在场景二、场景三),该目标存储空间也可以是外存160中的存储空间(如在场景一中需要将内存140中的数据迁移至外存160的情况)。
需要说明的是,加速装置130对第一数据集进行格式转换以及将第二数据集存储至目标存储空间的步骤可以同步执行的。加速装置130可以一边对第一数据集进行格式转换,一边将转换后的数据(这种情况下,转换后的数据实际为第二数据集中的部分数据)存储在目标存储空间。当然,加速装置130也可以对该第一数据集进行格式转换,获取了整个第二数据集后,再执行步骤404。
作为另一种可能的实现方式,本申请实施例提供的数据处理方法也同样适用于其他以二维表构建的数据集合中。例如,该加速装置130也可以部署在智能硬盘(SSD)中,以实现格式转换的功能。加速装置130可以部署在智能硬盘中的控制器中。当智能硬盘接收的数据存储指令,指示需要存储第一数据集时,加速装置130可以根据业务需求,对该第一数据集进行格式转换,生成第二数据集,并将该第二数据存储在该智能硬盘的存储空间中。当智能硬盘接收到数据读取指令,指示需要读取第一数据集时,加速装置130从智能硬盘的存储空间中读取第一数据,并根据业务需求,对该第一数据进行格式转换,生成第二数据集,反馈该第二数据集。
作为另一种可能的实现方式,在大数据场景下,对大数据进行管理的管理设备100中也可以部署有该加速装置130,以实现在大数据场景下对数据的格式转换。
基于与方法实施例同一发明构思,本申请实施例还提供了一种加速装置,该加速装置用于执行上述如图4所示的方法实施例中所述加速装置执行的方法,相关特征可参见上述方法实施例,此处不再赘述。如图10所示,所述加速装置1000包括请求获取模块1001、数据获取模块1002、格式转换模块1003。
请求获取模块1001,用于获取处理器的数据处理请求,数据处理请求用于实现数据库中第一数据集的格式转换,第一数据集包括至少一个数据。
数据获取模块1002,用于根据数据处理请求获取第一数据集,第一数据集以第一方式存储。
格式转换模块1003,用于根据第二方式对第一数据集进行格式转换,获得第二数据集,并将第二数据集存储至目标存储空间,第二数据集以第二方式存储,第二数据集包括至少一个数据,第二方式与第一方式不同。
应理解的是,本申请实施例的装置1000可以通过专用集成电路(application-specific integrated circuit,ASIC)实现,或可编程逻辑器件(programmable logicdevice,PLD)实现,上述PLD可以是复杂程序逻辑器件(complex programmable logicaldevice,CPLD),现场可编程门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。也可以通过软件实现图4所示的方法时,装置1000及其各个模块也可以为软件模块。
在一种可能的实施方式中,第一方式可以为行存储,第二方式为列存储;或者第一方式可以为列存储,第二方式为行存储。行存储用于指示在数据库中以行为准存储数据,列存储用于指示在数据库中以列为准存储数据。
在一种可能的实施方式中,当第一方式为行存储,第二方式为列存储时,格式转换模块1003在进行转换时,对于第一数据集中定长字段,格式转换模块1003可以获取第一数据集中定长字段下的各个数据,将各个数据连续排布,生成第二数据集,第二数据集还包括空值指示信息,空值指示信息用于指示定长字段下的数据为空值或为非空值。
在一种可能的实施方式中,当第一方式为行存储,第二方式为列存储时,格式转换模块1003在进行转换时,对于第一数据集中变长字段,格式转换模块1003可以获得第一数据集中变长字段的各个数据,将各个数据连续排布,生成第二数据集,第二数据集还包括位置指示信息,位置指示信息用于指示变长字段下的各个数据在第二数据集中的位置。
在一种可能的实施方式中,格式转换模块1003还可以对第一数据集中数据进行数据格式转换,生成第二数据集,其中,第一数据集中数据的数据格式为存储数据所需的数据格式,第二数据集的数据格式为处理器进行数据计算所需的数据格式。
在一种可能的实施方式中,当第一数据集包括数据类型为小数类型的数据,格式转换模块1003在进行数据格式转换时,可以获取小数类型的数据的数据描述信息,将数据描述信息作为第二数据的一部分,数据描述信息包括:sign、precision、scale;也可以根据精度和范围对小数类型的数据进行补位操作或去位操作。
在一种可能的实施方式中,当第一数据包括数据类型为日期类型的数据,格式转换模块1003在进行数据格式转换时,可以对日期类型的数据进行分解,获取多个子数据,一个子数据表征年、月、日中的一个,多个子数据在第二数据中连续排布。
根据本申请实施例的装置1000可对应于执行本申请实施例中描述的方法,并且装置1000中的各个单元的上述和其它操作和/或功能分别为了实现图4中的各个方法的相应流程,为了简洁,在此不再赘述。
作为一种可能的实施例,本申请还提供一种如图2所述的加速装置130,该加速装置130用于实现上述图4所述的方法的相应流程,为了简洁,在此不再赘述。
作为另一种可能的实施例,本申请还提供一种管理设备,该管理设备包括加速装置130,该加速装置130用于实现上述图4所述的方法的相应流程,为了简洁,在此不再赘述。
需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机程序指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (17)
1.一种数据处理的方法,其特征在于,所述方法包括:
加速装置获取处理器的数据处理请求,其中,所述加速装置和所述处理器设置在第一设备中,所述处理器和所述加速装置通过快捷外围部件互连标准PCIe相连,所述数据处理请求用于实现数据库中第一数据集的格式转换,所述第一数据集包括至少一个数据;
所述加速装置根据所述数据处理请求获取第一数据集,所述第一数据集以第一方式存储;
所述加速装置根据第二方式对所述第一数据集进行格式转换,获得第二数据集,并将所述第二数据集存储至目标存储空间,所述第二数据集以第二方式存储,所述第二数据集包括至少一个数据,所述第二方式与所述第一方式不同。
2.根据权利要求1所述的方法,其特征在于,所述第一方式和所述第二方式分别为行存储或列存储,所述行存储用于指示在所述数据库中以行为准存储数据,所述列存储用于指示在所述数据库中以列为准存储数据。
3.根据权利要求2所述的方法,其特征在于,当所述第一方式为行存储,所述第二方式为列存储时,所述加速装置根据第二格式将所述第一数据集进行转换,获得第二数据集,包括:
所述加速装置获取所述第一数据集中定长字段下的各个数据,将所述各个数据连续排布,生成所述第二数据集,所述第二数据集还包括空值指示信息,所述空值指示信息用于指示所述定长字段下的数据为空值或为非空值。
4.根据权利要求2所述的方法,其特征在于,当所述第一方式为行存储,所述第二方式为列存储时,所述加速装置根据第二格式将所述第一数据集进行转换,获得第二数据集,包括:
所述加速装置获得所述第一数据集中变长字段的各个数据,将所述各个数据连续排布,生成所述第二数据集,所述第二数据集还包括位置指示信息,所述位置指示信息用于指示所述变长字段下的各个数据在所述第二数据集中的位置。
5.根据权利要求3或4所述的方法,其特征在于,所述方法还包括:
所述加速装置对所述第一数据集中数据进行数据格式转换,生成所述第二数据集,其中,所述第一数据集中数据的数据格式为存储数据所需的数据格式,所述第二数据集的数据格式为所述处理器进行数据计算所需的数据格式。
6.如权利要求5所述的方法,其特征在于,所述第一数据集包括数据类型为小数decimal类型的数据,所述方法还包括:
所述加速装置获取所述小数类型的数据的数据描述信息,将所述数据描述信息作为所述第二数据的一部分,所述数据描述信息包括:符号sign、精度precision、范围scale;
所述加速装置根据所述精度和所述范围对所述小数类型的数据进行补位操作或去位操作。
7.如权利要求5所述的方法,其特征在于,所述第一数据集包括数据类型为日期date类型的数据,所述方法还包括:
所述加速装置对所述日期类型的数据进行分解,获取多个子数据,一个所述子数据表征所述年、月、日中的一个,所述多个子数据在所述第二数据中连续排布。
8.如权利要求1~7中任一项所述的方法,其特征在于,所述加速装置为系统级芯片SOC、现场可编程逻辑门阵列FPGA、图像处理器GPU、专用集成电路ASIC、人工智能AI芯片或数据处理器DPU中的至少一种。
9.一种加速装置,其特征在于,所述加速装置与处理器部署在第一设备中,所述处理器和所述加速装置通过快捷外围部件互连标准PCIe相连,所述加速装置包括请求获取模块、数据获取模块、格式转换模块:
所述请求获取模块,用于获取所述处理器的数据处理请求,所述数据处理请求用于实现数据库中第一数据集的格式转换,所述第一数据集包括至少一个数据;
所述数据获取模块,用于根据所述数据处理请求获取第一数据集,所述第一数据集以第一方式存储;
所述格式转换模块,用于根据第二方式对所述第一数据集进行格式转换,获得第二数据集,并将所述第二数据集存储至目标存储空间,所述第二数据集以第二方式存储,所述第二数据集包括至少一个数据,所述第二方式与所述第一方式不同。
10.根据权利要求9所述的装置,其特征在于,所述第一方式和所述第二方式分别为行存储或列存储,所述行存储用于指示在所述数据库中以行为准存储数据,所述列存储用于指示在所述数据库中以列为准存储数据。
11.根据权利要求10所述的装置,其特征在于,当所述第一方式为行存储,所述第二方式为列存储时,所述格式转换模块在根据第二格式将所述第一数据集进行转换,获得第二数据集,具体用于:
获取所述第一数据集中定长字段下的各个数据,将所述各个数据连续排布,生成所述第二数据集,所述第二数据集还包括空值指示信息,所述空值指示信息用于指示所述定长字段下的数据为空值或为非空值。
12.根据权利要求10所述的装置,其特征在于,当所述第一方式为行存储,所述第二方式为列存储时,所述格式转换模块在根据第二格式将所述第一数据集进行转换,获得第二数据集,具体用于:
获得所述第一数据集中变长字段的各个数据,将所述各个数据连续排布,生成所述第二数据集,所述第二数据集还包括位置指示信息,所述位置指示信息用于指示所述变长字段下的各个数据在所述第二数据集中的位置。
13.根据权利要求11或12所述的装置,其特征在于,所述格式转换模块,还用于:
对所述第一数据集中数据进行数据格式转换,生成所述第二数据集,其中,所述第一数据集中数据的数据格式为存储数据所需的数据格式,所述第二数据集的数据格式为所述处理器进行数据计算所需的数据格式。
14.如权利要求13所述的装置,其特征在于,所述第一数据集包括数据类型为小数decimal类型的数据,所述格式转换模块,具体用于:
获取所述小数类型的数据的数据描述信息,将所述数据描述信息作为所述第二数据的一部分,所述数据描述信息包括:符号sign、精度precision、范围scale;
根据所述精度和所述范围对所述小数类型的数据进行补位操作或去位操作。
15.如权利要求13所述的装置,其特征在于,所述第一数据包括数据类型为日期date类型的数据,所述格式转换模块,具体用于:
对所述日期类型的数据进行分解,获取多个子数据,一个所述子数据表征所述年、月、日中的一个,所述多个子数据在所述第二数据中连续排布。
16.一种加速装置,其特征在于,所述加速装置包括处理器,所述处理器用于执行如权利要求1~8任一所述的方法。
17.一种计算设备,其特征在于,所述计算设备包括加速装置和处理器;
所述处理器,用于向所述加速装置发送数据处理请求,所述数据处理请求用于实现数据库中第一数据集的格式转换;
所述加速装置,用于执行如权利要求1~8任一所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110653902.5A CN115470235A (zh) | 2021-06-11 | 2021-06-11 | 一种数据处理方法、装置以及设备 |
PCT/CN2022/084919 WO2022257575A1 (zh) | 2021-06-11 | 2022-04-01 | 一种数据处理方法、装置以及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110653902.5A CN115470235A (zh) | 2021-06-11 | 2021-06-11 | 一种数据处理方法、装置以及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115470235A true CN115470235A (zh) | 2022-12-13 |
Family
ID=84363328
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110653902.5A Pending CN115470235A (zh) | 2021-06-11 | 2021-06-11 | 一种数据处理方法、装置以及设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115470235A (zh) |
WO (1) | WO2022257575A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117234706A (zh) * | 2023-08-30 | 2023-12-15 | 中科驭数(北京)科技有限公司 | Numeric数据类型转换方法、装置和加速卡 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103345518B (zh) * | 2013-07-11 | 2016-08-10 | 清华大学 | 基于数据块的自适应数据存储管理方法及系统 |
CN105378716B (zh) * | 2014-03-18 | 2019-03-26 | 华为技术有限公司 | 一种数据存储格式的转换方法及装置 |
WO2016194401A1 (ja) * | 2015-06-05 | 2016-12-08 | 株式会社日立製作所 | 計算機、データベース処理方法、及び集積回路 |
CN110990402B (zh) * | 2019-11-26 | 2020-11-13 | 中科驭数(北京)科技有限公司 | 由行存储到列存储的格式转化方法、查询方法及装置 |
-
2021
- 2021-06-11 CN CN202110653902.5A patent/CN115470235A/zh active Pending
-
2022
- 2022-04-01 WO PCT/CN2022/084919 patent/WO2022257575A1/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117234706A (zh) * | 2023-08-30 | 2023-12-15 | 中科驭数(北京)科技有限公司 | Numeric数据类型转换方法、装置和加速卡 |
Also Published As
Publication number | Publication date |
---|---|
WO2022257575A1 (zh) | 2022-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107301214B (zh) | 在hive中数据迁移方法、装置及终端设备 | |
CN107180113B (zh) | 一种大数据检索平台 | |
WO2013078583A1 (zh) | 优化数据访问的方法及装置、优化数据存储的方法及装置 | |
CN103500089A (zh) | 一种适应于Mapreduce计算模型的小文件存储系统 | |
CN113297320A (zh) | 分布式数据库系统及数据处理方法 | |
CN111061758A (zh) | 数据存储方法、装置及存储介质 | |
CN110851474A (zh) | 数据查询方法、数据库中间件、数据查询设备及存储介质 | |
CN111930716A (zh) | 一种数据库扩容方法、装置及系统 | |
CN113177090A (zh) | 数据处理方法及装置 | |
Lu et al. | TridentKV: A read-Optimized LSM-tree based KV store via adaptive indexing and space-efficient partitioning | |
WO2022257575A1 (zh) | 一种数据处理方法、装置以及设备 | |
CN112860412B (zh) | 业务数据处理方法、装置、电子设备及存储介质 | |
CN110019063A (zh) | 计算节点数据容灾回放的方法、终端设备及存储介质 | |
CN110019169B (zh) | 一种数据处理的方法及装置 | |
CN106599113B (zh) | 用于网管系统海量性能数据的数据库读写方法 | |
CN109542860B (zh) | 基于hdfs的业务数据管理方法、终端设备 | |
CN115114370B (zh) | 主从数据库的同步方法、装置、电子设备和存储介质 | |
CN115658683A (zh) | 元数据处理方法、装置、设备、介质和程序产品 | |
CN114297196A (zh) | 元数据存储方法、装置、电子设备及存储介质 | |
CN109271456A (zh) | 主机数据库文件导出方法及装置 | |
CN115114297A (zh) | 数据轻量存储及查找方法、装置、电子设备及存储介质 | |
CN107846327A (zh) | 一种网管性能数据的处理方法及装置 | |
CN112965939A (zh) | 一种文件合并方法、装置和设备 | |
CN115809015A (zh) | 分布式系统中数据处理的方法以及相关系统 | |
CN109960460B (zh) | 一种分布式存储系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |