logo好方法网

数据对齐的方法及装置


技术摘要:
本发明提供了一种数据对齐的方法及装置,属于数据处理技术领域。可以获取第一数据包的第一数组的第一数据块及第一序号及第二数据包的第二数组的第二数据块;将第一数据块存储到第一存储单元中并将第二数据块存储到第二存储单元中;判断第一数据块是否为数据包的结束数  全部
背景技术:
在数据库中,数据类型非常丰富,包括char,varchar,text,binary,tinyint,int, decimal等数据类型。不同数据类型在内存或硬盘存储中所占用存储空间大小不同,并且在 数据库中数据表格中有很多可变长度的属性列,各属性列中数据块所占用的存储空间也不 相同,例如,数据块的位宽可以由2位、8位等。 在进行数据库专用处理器设计时,经常需要不同数据格式之间进行转换。不同位 宽数据所占用的物理存储地址,往往也不是对齐的,通常不同数据格式之间对齐是非常耗 时和耗费资源的操作。因此,亟需一种数据对齐的方法。
技术实现要素:
本申请实施例的目的在于提供一种数据对齐的方法及装置,可以提高服务器的稳 定性。具体技术方案如下: 第一方面,提供了一种数据对齐的方法,所述方法包括: 获取第一数据包的第一数组的第一数据块、所述第一数据块的第一序号、和第二 数据包的第二数组的第二数据块,其中,所述第一数组中每个数据块的第一长度大于所述 第二数组中每个数据块的第二长度; 根据所述第一序号,将所述第一数据块存储到第一存储单元中,并根据所述第一 序号,将所述第二数据块存储到第二存储单元中,其中,一个第一存储单元用于存储一个第 一数组的数据块;第一数据包中第一数据块和第二数据包中第二数据块的连续性一致; 判断所述第一数据块是否为第一数据包的结束数据块; 如果是,则输出所述第一存储单元的数据、所述第一存储单元的字节序号、所述第 二存储单元的数据和所述第二存储单元的字节序号; 如果不是,则判断第二数组当前的第二存储单元是否存满; 如果存满,则输出所述第一存储单元的数据、所述第一存储单元的字节序号、所述 第二存储单元的数据和所述第二存储单元的字节序号;如果未存满,则输出所述第一存储 单元的数据、所述第一存储单元的字节序号。 可选的,所述根据所述第一序号,将所述第一数据块存储到第一存储单元中,包 括: 如果所述第一数据块是所述第一数组的首个数据块,则将所述第一序号对4取余, 得到第一余数; 如果所述第一余数为0,则将所述第一数据块存储到字节序号为所述第一序号的 目标存储单元中; 如果所述第一余数不为0,则确定所述目标存储单元所属的目标存储单元组,将所 5 CN 111597239 A 说 明 书 2/20 页 述第一数据块存储到所述目标存储单元组的下一个存储单元组的第一个存储单元中,其 中,一个存储单元组包含4个存储单元。 可选的,所述方法还包括: 如果所述第一数据块不是所述第一数组的首个数据块,则按照字节序号顺序,将 所述第一数据块存储到下一个存储单元中。 可选的,所述方法还包括: 如果所述第一数据块是所述第一数组的首个数据块,则确定第二存储单元的前一 个存储单元中,是否存储有未输出的数据块; 如果是,则输出所述前一个存储单元包含的数据块。 可选的,所述方法还包括: 判断所述第一数据块的序号、与上一次获取到的所述第一长度的数据块的序号是 否连续; 如果连续,则确定所述第一数据块不是所述第一数组的首个数据块; 如果不连续,则确定所述第一数据块是所述第一数组的首个数据块。 可选的,所述每个第二存储单元包含4个子单元,一个子单元用于存储一个第二数 组的一个数据块; 所述根据所述第一序号,将所述第二数据块存储到第二存储单元中,包括: 如果所述第二数据块是所述第二数组的首个数据块,则将所述第一序号对4取余, 得到第二余数; 如果所述第二余数为0,则将所述第二数据块存储到子单元序号为所述第一序号 的目标子单元中; 如果所述第二余数不为0,则将所述第二数据块存储到所述目标子单元所属存储 单元的下一个存储单元的第一个子单元中。 可选的,所述方法还包括: 如果所述第二数据块不是所述第二数组的首个数据块,则按照子单元序号顺序, 将所述第一数据块存储到下一个子单元中。 可选的,所述方法还包括: 获取对齐后的第一数组的第三数据块,其中,所述第三数据块的长度为所述第一 长度; 确定所述第三数据块对应的存储块,并将所述第三数据块存储到所述存储块中, 其中,一个存储块的位宽包括512位; 判断所述第三数据块是否为数据包的结束数据块; 如果是,则输出所述存储块的数据和所述存储块的序号; 如果不是,则判断所述存储块是否存满; 如果存满,则输出所述存储块的数据和所述存储块的序号;如果未存满,则继续获 取对齐后的数据块。 可选的,所述确定所述第三数据块对应的存储块,并将所述第三数据块存储到所 述存储块中,包括: 判断所述第三数据块的序号与上一次获取到的数据块的序号是否连续; 6 CN 111597239 A 说 明 书 3/20 页 如果连续,则根据上一次获取到的数据块在存储块中的存储位置,将所述第一数 据块顺序存储; 如果不连续,则将所述第三数据块存储到一个新的存储块中。 可选的,所述输出所述存储块的数据和所述存储块的序号之后,还包括: 针对每个数据包,将输出的包含该数据包的数据的存储块和所述存储块的序号存 储到预设缓存队列中,并统计已输出的存储块所构成的数组数目; 判断当前存储块对应的数据包结束信号是否有效; 如果有效,则将统计出的数组数目与所述数据包的第一数组的第一个数据块的序 号进行拼接,得到该数目包的配置信息,并将所述配置信息存储到所述预设缓存队列中; 如果无效,则继续获取下一个存储块。 第二方面,提供了一种数据对齐的装置,所述装置包括: 获取单元,用于获取第一数据包的第一数组的第一数据块、所述第一数据块的第 一序号、和第二数据包的第二数组的第二数据块,其中,所述第一数组中每个数据块的第一 长度大于所述第二数组中每个数据块的第二长度; 存储单元,用于根据所述第一序号,将所述第一数据块存储到第一存储单元中,并 根据所述第一序号,将所述第二数据块存储到第二存储单元中,其中,一个第一存储单元用 于存储一个第一数组的数据块;第一数据包中第一数据块和第二数据包中第二数据块的连 续性一致; 第一判断单元,用于判断所述第一数据块是否为第一数据包的结束数据块; 第一输出单元,用于如果是,则输出所述第一存储单元的数据、所述第一存储单元 的字节序号、所述第二存储单元的数据和所述第二存储单元的字节序号; 第二判断单元,用于如果不是,则判断第二数组当前的第二存储单元是否存满; 第二输出单元,用于如果存满,则输出所述第一存储单元的数据、所述第一存储单 元的字节序号、所述第二存储单元的数据和所述第二存储单元的字节序号;如果未存满,则 输出所述第一存储单元的数据、所述第一存储单元的字节序号。 可选的,所述装置是基于FPGA或ASIC实现。 第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有 计算机程序,所述计算机程序被处理器执行时实现上述方法步骤。 第四方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得 计算机执行上述第一方面任一所述的方法。 本申请实施例提供的一种数据对齐的方法及装置,可以获取第一数据包的第一数 组的第一数据块、第一数据块的第一序号、和第二数据包的第二数组的第二数据块,其中, 第一数组中每个数据块的第一长度大于第二数组中每个数据块的第二长度;根据第一序 号,将第一数据块存储到第一存储单元中,并根据第一序号,将第二数据块存储到第二存储 单元中,其中,一个第一存储单元用于存储一个第一数组的数据块;第一数据包中第一数据 块和第二数据包中第二数据块的连续性一致;判断第一数据块是否为第一数据包的结束数 据块;如果是,则输出第一存储单元的数据、第一存储单元的字节序号、第二存储单元的数 据和第二存储单元的字节序号;如果不是,则判断第二数组当前的第二存储单元是否存满; 如果存满,则输出第一存储单元的数据、第一存储单元的字节序号、第二存储单元的数据和 7 CN 111597239 A 说 明 书 4/20 页 第二存储单元的字节序号;如果未存满,则输出第一存储单元的数据、第一存储单元的字节 序号。基于上述处理过程,可以将上述第一数据块和第二数据块都以存储单元为单位进行 输出(即1个字节),从而实现是数据的对齐输出。 附图说明 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍。 图1为本申请实施例提供的一种结构示意图; 图2为本申请实施例提供的一种数据对齐的方法的流程图; 图3为本申请实施例提供的一种数据存储的示意图; 图4为本申请实施例提供的一种数据对齐的示例的流程图; 图5为本申请实施例提供的一种数据存储的示意图; 图6为本申请实施例提供的一种字节转换的示例的流程图; 图7为本申请实施例提供的一种数据缓存的示例的流程图; 图8为本申请实施例提供的一种数据对齐的装置的结构示意图; 图9为本申请实施例提供的一种电子设备的结构示意图; 图10为本申请实施例提供的一种数据对齐的方法的流程图; 图11为本申请实施例提供的一种数据对齐的方法的流程图; 图12为本申请实施例提供的一种数据对齐的方法的流程图。
下载此资料需消耗2积分,
分享到:
收藏