数据写入方法、装置、计算机设备及可读存储介质转让专利

申请号 : CN201810202085.X

文献号 : CN108345434B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄成林

申请人 : 广州酷狗计算机科技有限公司

摘要 :

本发明是关于一种数据写入方法、装置、计算机设备及可读存储介质,属于互联网技术领域。所述方法包括:当检测到哈希表的数据量达到第一阈值时,将子键写入至少一个第一槽位;对至少一个第一槽位的第一内存块进行紧缩处理,生成第二内存块,将第二内存块写入内存压缩块;当检测到内存压缩块的数据量达到第二阈值时,获取第一槽位的全部子键,将至少一个第一槽位中的第一子键写入至少一个第二槽位;对至少一个第二槽位的第二内存块进行紧缩处理,生成待写入磁盘文件,将待写入磁盘文件写入磁盘存储。本发明通过多步紧缩过程将存储节点中存储的值数据写入磁盘存储,使存储节点可以写入或追加的数据的数据量不会受到内存存储容量的限制,智能性较优。

权利要求 :

1.一种数据写入方法,其特征在于,所述方法应用于存储节点中,所述存储节点至少包括内存存储和磁盘存储,所述方法包括:当检测到哈希表的数据量达到第一阈值时,将所述哈希表的至少一个子键写入内存压缩块的至少一个第一槽位中,所述哈希表中包括所述至少一个子键及至少一个第一内存块,所述哈希表和所述内存压缩块部署在所述内存存储中,所述内存压缩块包括与所述至少一个子键对应的至少一个第一槽位;

对于所述至少一个第一槽位中的任一第一槽位,对所述第一槽位对应的全部第一内存块进行紧缩处理,生成第二内存块,将所述第二内存块写入所述内存压缩块;

当检测到所述内存压缩块的数据量达到第二阈值时,获取所述内存压缩块中至少一个第一槽位中的全部子键,将所述至少一个第一槽位中的全部子键写入磁盘压缩块的至少一个第二槽位中,所述磁盘压缩块部署在所述内存存储和所述磁盘存储中,所述磁盘压缩块部署于所述内存存储的第一部分压缩块包括与所述至少一个第一槽位对应的至少一个第二槽位;

对于所述至少一个第二槽位中的任一第二槽位,对所述第二槽位对应的全部第二内存块进行紧缩处理,生成待写入磁盘文件,将所述待写入磁盘文件写入所述磁盘压缩块部署于所述磁盘存储的第二部分压缩块;

所述当检测到哈希表的数据量达到第一阈值时,将所述哈希表的至少一个子键写入内存压缩块的至少一个第一槽位中,包括:当检测到所述哈希表的数据量达到第一阈值时,获取所述哈希表中的至少一个子键;

获取所述至少一个第一槽位的至少一个第一槽位锁;

在所述至少一个第一槽位中确定所述至少一个子键对应的至少一个第一槽位分片,所述内存压缩块中至少一个第一槽位中每个第一槽位均包括多个第一槽位分片;

基于所述至少一个第一槽位锁,将所述哈希表的至少一个子键写入所述至少一个第一槽位分片。

2.根据权利要求1所述的方法,其特征在于,所述当检测到哈希表的数据量达到第一阈值时,将所述哈希表的至少一个子键写入内存压缩块的至少一个第一槽位中之前,所述方法还包括:

建立多个子键,生成所述哈希表;

接收用户的数据写入指令,所述数据写入指令携带待写入值数据和待写入子键;

当检测到所述哈希表的数据量未达到所述第一阈值时,基于所述待写入值数据,生成待写入第一内存块;

将所述待写入第一内存块写入所述待写入子键在所述哈希表中指示的位置。

3.根据权利要求2所述的方法,其特征在于,所述方法还包括:在所述内存存储中设置候选哈希表,所述候选哈希表包括的内容与所述哈希表包括的内容一致;

当所述哈希表中的至少一个第一内存块进行紧缩处理时,基于所述候选哈希表接收用户的待写入值数据。

4.根据权利要求1所述的方法,其特征在于,所述对于所述至少一个第一槽位中的任一第一槽位,对所述第一槽位对应的全部第一内存块进行紧缩处理,生成第二内存块,将所述第二内存块写入所述内存压缩块包括:对于所述至少一个第一槽位中的任一第一槽位,确定所述第一槽位的至少一个第一槽位分片中每个第一槽位分片对应的第一内存块;

并行对至少一个第一槽位分片中每个第一槽位分片对应的第一内存块进行紧缩处理,生成所述第二内存块;

如果所述第一槽位在所述内存压缩块中存在对应的旧第二内存块,则基于所述第二内存块对所述旧第二内存块进行替换,完成所述待写入内存块的写入;

如果所述第一槽位在所述内存压缩块中不存在对应的旧第二内存块,则直接将所述第二内存块写入所述内存压缩块。

5.根据权利要求1所述的方法,其特征在于,所述当检测到所述内存压缩块的数据量达到第二阈值时,获取所述内存压缩块中至少一个第一槽位中的全部子键,将所述至少一个第一槽位中的全部子键写入磁盘压缩块的至少一个第二槽位中包括:当检测到所述内存压缩块的数据量达到第二阈值时,获取所述内存压缩块中至少一个第一槽位中的全部子键;

获取所述至少一个第二槽位的至少一个第二槽位锁;

在所述至少一个第二槽位中确定所述至少一个第一槽位中全部子键对应的至少一个第二槽位分片,所述磁盘压缩块中至少一个第二槽位中每个第二槽位均包括多个第二槽位分片;

基于所述至少一个第二槽位锁,将所述至少一个第一槽位中的全部子键写入所述至少一个第二槽位分片。

6.根据权利要求1所述的方法,其特征在于,所述对于所述至少一个第二槽位中的任一第二槽位,对所述第二槽位对应的全部第二内存块进行紧缩处理,生成待写入磁盘文件,将所述待写入磁盘文件写入所述磁盘压缩块部署于所述磁盘存储的第二部分压缩块包括:对于所述至少一个第二槽位中的任一第二槽位,确定所述第二槽位的至少一个第二槽位分片中每个第二槽位分片对应的第二内存块;

并行对至少一个第二槽位分片中每个第二槽位分片对应的第二内存块进行紧缩处理,生成所述待写入磁盘文件;

如果所述第二槽位在所述磁盘压缩块部署于所述磁盘存储的第二部分压缩块中存在对应的旧磁盘文件,则基于所述待写入磁盘文件对所述旧磁盘文件进行替换,完成所述待写入磁盘文件的写入;

如果所述第二槽位在所述磁盘压缩块部署于所述磁盘存储的第二部分压缩块中不存在对应的旧磁盘文件,则直接将所述待写入磁盘文件写入所述磁盘压缩块。

7.根据权利要求1所述的方法,其特征在于,所述方法还包括:当接收到用户的数据读取指令时,基于所述数据读取指令携带的待读取槽位标识确定待读取槽位锁;

获取所述待读取槽位锁在所述哈希表中指示的第一候选数据;

获取所述待读取槽位锁在所述内存压缩块中指示的第二候选数据;

获取所述待读取槽位锁在所述磁盘压缩块中指示的第三候选数据;

将所述第一候选数据、所述第二候选数据和所述第三候选数据作为待读取值数据,将所述待读取值数据返回至所述用户。

8.一种数据写入装置,其特征在于,所述装置应用于存储节点中,所述存储节点至少包括内存存储和磁盘存储,所述装置包括:第一写入模块,用于当检测到哈希表的数据量达到第一阈值时,将所述哈希表的至少一个子键写入内存压缩块的至少一个第一槽位中,所述哈希表中包括所述至少一个子键及至少一个第一内存块,所述哈希表和所述内存压缩块部署在所述内存存储中,所述内存压缩块包括与所述至少一个子键对应的至少一个第一槽位,其中,当检测到所述哈希表的数据量达到第一阈值时,获取所述哈希表中的至少一个子键;获取所述至少一个第一槽位的至少一个第一槽位锁;在所述至少一个第一槽位中确定所述至少一个子键对应的至少一个第一槽位分片,所述内存压缩块中至少一个第一槽位中每个第一槽位均包括多个第一槽位分片;基于所述至少一个第一槽位锁,将所述哈希表的至少一个子键写入所述至少一个第一槽位分片;

第一紧缩模块,用于对于所述至少一个第一槽位中的任一第一槽位,对所述第一槽位对应的全部第一内存块进行紧缩处理,生成第二内存块,将所述第二内存块写入所述内存压缩块;

第二写入模块,用于当检测到所述内存压缩块的数据量达到第二阈值时,获取所述内存压缩块中至少一个第一槽位中的全部子键,将所述至少一个第一槽位中的全部子键写入磁盘压缩块的至少一个第二槽位中,所述磁盘压缩块部署在所述内存存储和所述磁盘存储中,所述磁盘压缩块部署于所述内存存储的第一部分压缩块包括与所述至少一个第一槽位对应的至少一个第二槽位;

第二紧缩模块,用于对于所述至少一个第二槽位中的任一第二槽位,对所述第二槽位对应的全部第二内存块进行紧缩处理,生成待写入磁盘文件,将所述待写入磁盘文件写入所述磁盘压缩块部署于所述磁盘存储的第二部分压缩块。

9.根据权利要求8所述的装置,其特征在于,所述装置还包括:第一生成模块,用于建立多个子键,生成所述哈希表;

接收模块,用于接收用户的数据写入指令,所述数据写入指令携带待写入值数据和待写入子键;

第二生成模块,用于当检测到所述哈希表的数据量未达到所述第一阈值时,基于所述待写入值数据,生成待写入第一内存块;

第三写入模块,用于将所述待写入第一内存块写入所述待写入子键在所述哈希表中指示的位置。

10.根据权利要求9所述的装置,其特征在于,所述装置还包括:设置模块,用于在所述内存存储中设置候选哈希表,所述候选哈希表包括的内容与所述哈希表包括的内容一致;

所述接收模块,还用于当所述哈希表中的至少一个第一内存块进行紧缩处理时,基于所述候选哈希表接收用户的待写入值数据。

11.根据权利要求8所述的装置,其特征在于,所述第一紧缩模块包括:确定子模块,用于对于所述至少一个第一槽位中的任一第一槽位,确定所述第一槽位的至少一个第一槽位分片中每个第一槽位分片对应的第一内存块;

紧缩子模块,用于并行对至少一个第一槽位分片中每个第一槽位分片对应的第一内存块进行紧缩处理,生成所述第二内存块;

替换子模块,用于如果所述第一槽位在所述内存压缩块中存在对应的旧第二内存块,则基于所述第二内存块对所述旧第二内存块进行替换,完成所述待写入内存块的写入;

写入子模块,用于如果所述第一槽位在所述内存压缩块中不存在对应的旧第二内存块,则直接将所述第二内存块写入所述内存压缩块。

12.根据权利要求8所述的装置,其特征在于,所述第二写入模块包括:第一获取子模块,用于当检测到所述内存压缩块的数据量达到第二阈值时,获取所述内存压缩块中至少一个第一槽位中的全部子键;

第二获取子模块,用于获取所述至少一个第二槽位的至少一个第二槽位锁;

确定子模块,用于在所述至少一个第二槽位中确定所述至少一个第一槽位中全部子键对应的至少一个第二槽位分片,所述磁盘压缩块中至少一个第二槽位中每个第二槽位均包括多个第二槽位分片;

写入子模块,用于基于所述至少一个第二槽位锁,将所述至少一个第一槽位中的全部子键写入所述至少一个第二槽位分片。

13.根据权利要求8所述的装置,其特征在于,所述第二紧缩模块包括:确定子模块,用于对于所述至少一个第二槽位中的任一第二槽位,确定所述第二槽位的至少一个第二槽位分片中每个第二槽位分片对应的第二内存块;

紧缩子模块,用于并行对至少一个第二槽位分片中每个第二槽位分片对应的第二内存块进行紧缩处理,生成所述待写入磁盘文件;

替换子模块,用于如果所述第二槽位在所述磁盘压缩块部署于所述磁盘存储的第二部分压缩块中存在对应的旧磁盘文件,则基于所述待写入磁盘文件对所述旧磁盘文件进行替换,完成所述待写入磁盘文件的写入;

写入子模块,用于如果所述第二槽位在所述磁盘压缩块部署于所述磁盘存储的第二部分压缩块中不存在对应的旧磁盘文件,则直接将所述待写入磁盘文件写入所述磁盘压缩块。

14.根据权利要求8所述的装置,其特征在于,所述装置还包括:确定模块,用于当接收到用户的数据读取指令时,基于所述数据读取指令携带的待读取槽位标识确定待读取槽位锁;

获取模块,用于获取所述待读取槽位锁在所述哈希表中指示的第一候选数据;

所述获取模块,还用于获取所述待读取槽位锁在所述内存压缩块中指示的第二候选数据;

所述获取模块,还用于获取所述待读取槽位锁在所述磁盘压缩块中指示的第三候选数据;

返回模块,用于将所述第一候选数据、所述第二候选数据和所述第三候选数据作为待读取值数据,将所述待读取值数据返回至所述用户。

15.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可执行指令,其特征在于,所述处理器执行所述计算机可执行指令时实现权利要求1-7任一项所述的数据写入方法。

16.一种可读存储介质,其特征在于,所述可读存储介质上存储有指令,所述指令被处理器执行以完成权利要求1-7任一项所述的数据写入方法。

说明书 :

数据写入方法、装置、计算机设备及可读存储介质

技术领域

[0001] 本发明涉及互联网技术领域,特别涉及一种数据写入方法、装置、计算机设备及可读存储介质。

背景技术

[0002] 随着互联网技术的飞速发展,互联网中的数据日益膨胀,数据存储系统越来越重要。目前,数据存储系统主要分为关系型数据库和非关系型数据库,关系型数据库是建立在
关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据;非
关系型数据库是使用键值存储数据的数据库,也即键值数据库,非关系型数据库按照键值
对的形式对数据进行组织和存储。
[0003] 相关技术中,由于在不同的场景中需求特点是不同的,因此,关系型数据库和非关系型数据库在不同场景中对数据进行的写入、读取、追加等操作也是不同的。例如,在对二
进制结构化数据进行归档的场景中,该场景的需求特点是数据只会增加,且不会对已经存
储的数据进行修改和删除,这样,在使用诸如Mysql(My structured query language,小型
关联式数据库管理系统)的关系型数据库进行该场景中数据的写入或追加数据,通常不断
地向关系型数据库中插入行数据;在使用诸如Redis(键值数据库)等非关系型数据库进行
该场景中数据的写入或追加时,在非关系型数据库中读取已经存储的数据,确定将数据写
入的位置,并在该位置实现数据的写入或追加操作。
[0004] 在实现本发明的过程中,发明人发现相关技术至少存在以下问题:
[0005] 由于数据存储系统部署在设备的内存存储中,且内存存储的可存储数据量是固定的,因此,在使用数据存储系统进行数据写入或追加操作时,可以写入或追加的数据的数据
量受到内存存储容量的限制,智能性较差。

发明内容

[0006] 为克服相关技术中存在的在使用数据存储系统进行数据写入或追加操作时,可以写入或追加的数据的数据量受到内存存储容量的限制,智能性较差的问题,本发明提供一
种数据写入方法、装置、计算机设备及可读存储介质。
[0007] 根据本发明实施例的第一方面,提供一种数据写入方法,所述方法应用于存储节点中,所述存储节点至少包括内存存储和磁盘存储,所述方法包括:
[0008] 当检测到哈希表的数据量达到第一阈值时,将所述哈希表的至少一个子键写入内存压缩块的至少一个第一槽位中,所述哈希表中包括所述至少一个子键及至少一个第一内
存块,所述哈希表和所述内存压缩块部署在所述内存存储中,所述内存压缩块包括与所述
至少一个子键对应的至少一个第一槽位;
[0009] 对于所述至少一个第一槽位中的任一第一槽位,对所述第一槽位对应的全部第一内存块进行紧缩处理,生成第二内存块,将所述第二内存块写入所述内存压缩块;
[0010] 当检测到所述内存压缩块的数据量达到第二阈值时,获取所述内存压缩块中至少一个第一槽位中的全部子键,将所述至少一个第一槽位中的全部子键写入磁盘压缩块的至
少一个第二槽位中,所述磁盘压缩块部署在所述内存存储和所述磁盘存储中,所述磁盘压
缩块部署于所述内存存储的第一部分压缩块包括与所述至少一个第一槽位对应的至少一
个第二槽位;
[0011] 对于所述至少一个第二槽位中的任一第二槽位,对所述第二槽位对应的全部第二内存块进行紧缩处理,生成待写入磁盘文件,将所述待写入磁盘文件写入所述磁盘压缩块
部署于所述磁盘存储的第二部分压缩块。
[0012] 在另一个实施例中,所述当检测到哈希表的数据量达到第一阈值时,将所述哈希表的至少一个子键写入内存压缩块的至少一个第一槽位中之前,所述方法还包括:
[0013] 建立多个子键,生成所述哈希表;
[0014] 接收用户的数据写入指令,所述数据写入指令携带待写入值数据和待写入子键;
[0015] 当检测到所述哈希表的数据量未达到所述第一阈值时,基于所述待写入值数据,生成待写入第一内存块;
[0016] 将所述待写入第一内存块写入所述待写入子键在所述哈希表中指示的位置。
[0017] 在另一个实施例中,所述方法还包括:
[0018] 在所述内存存储中设置候选哈希表,所述候选哈希表包括的内容与所述哈希表包括的内容一致;
[0019] 当所述哈希表中的至少一个第一内存块进行紧缩处理时,基于所述候选哈希表接收用户的待写入值数据。
[0020] 在另一个实施例中,所述当检测到哈希表的数据量达到第一阈值时,将所述哈希表的至少一个子键写入内存压缩块的至少一个第一槽位中包括:
[0021] 当检测到所述哈希表的数据量达到第一阈值时,获取所述哈希表中的至少一个子键;
[0022] 获取所述至少一个第一槽位的至少一个第一槽位锁;
[0023] 在所述至少一个第一槽位中确定所述至少一个子键对应的至少一个第一槽位分片,所述内存压缩块中至少一个第一槽位中每个第一槽位均包括多个第一槽位分片;
[0024] 基于所述至少一个第一槽位锁,将所述哈希表的至少一个子键写入所述至少一个第一槽位分片。
[0025] 在另一个实施例中,所述对于所述至少一个第一槽位中的任一第一槽位,对所述第一槽位对应的全部第一内存块进行紧缩处理,生成第二内存块,将所述第二内存块写入
所述内存压缩块包括:
[0026] 对于所述至少一个第一槽位中的任一第一槽位,确定所述第一槽位的至少一个第一槽位分片中每个第一槽位分片对应的第一内存块;
[0027] 并行对至少一个第一槽位分片中每个第一槽位分片对应的第一内存块进行紧缩处理,生成所述第二内存块;
[0028] 如果所述第一槽位在所述内存压缩块中存在对应的旧第二内存块,则基于所述第二内存块对所述旧第二内存块进行替换,完成所述待写入内存块的写入;
[0029] 如果所述第一槽位在所述内存压缩块中不存在对应的旧第二内存块,则直接将所述第二内存块写入所述内存压缩块。
[0030] 在另一个实施例中,所述当检测到所述内存压缩块的数据量达到第二阈值时,获取所述内存压缩块中至少一个第一槽位中的全部子键,将所述至少一个第一槽位中的全部
子键写入磁盘压缩块的至少一个第二槽位中包括:
[0031] 当检测到所述内存压缩块的数据量达到第二阈值时,获取所述内存压缩块中至少一个第一槽位中的全部子键;
[0032] 获取所述至少一个第二槽位的至少一个第二槽位锁;
[0033] 在所述至少一个第二槽位中确定所述至少一个第一槽位中全部子键对应的至少一个第二槽位分片,所述磁盘压缩块中至少一个第二槽位中每个第二槽位均包括多个第二
槽位分片;
[0034] 基于所述至少一个第二槽位锁,将所述至少一个第一槽位中的全部子键写入所述至少一个第二槽位分片。
[0035] 在另一个实施例中,所述对于所述至少一个第二槽位中的任一第二槽位,对所述第二槽位对应的全部第二内存块进行紧缩处理,生成待写入磁盘文件,将所述待写入磁盘
文件写入所述磁盘压缩块部署于所述磁盘存储的第二部分压缩块包括:
[0036] 对于所述至少一个第二槽位中的任一第二槽位,确定所述第二槽位的至少一个第二槽位分片中每个第二槽位分片对应的第二内存块;
[0037] 并行对至少一个第二槽位分片中每个第二槽位分片对应的第二内存块进行紧缩处理,生成所述待写入磁盘文件;
[0038] 如果所述第二槽位在所述磁盘压缩块部署于所述磁盘存储的第二部分压缩块中存在对应的旧磁盘文件,则基于所述待写入磁盘文件对所述旧磁盘文件进行替换,完成所
述待写入磁盘文件的写入;
[0039] 如果所述第二槽位在所述磁盘压缩块部署于所述磁盘存储的第二部分压缩块中不存在对应的旧磁盘文件,则直接将所述待写入磁盘文件写入所述磁盘压缩块。
[0040] 在另一个实施例中,所述方法还包括:
[0041] 当接收到用户的数据读取指令时,基于所述数据读取指令携带的待读取槽位标识确定待读取槽位锁;
[0042] 获取所述待读取槽位锁在所述哈希表中指示的第一候选数据;
[0043] 获取所述待读取槽位锁在所述内存压缩块中指示的第二候选数据;
[0044] 获取所述待读取槽位锁在所述磁盘压缩块中指示的第三候选数据;
[0045] 将所述第一候选数据、所述第二候选数据和所述第三候选数据作为待读取值数据,将所述待读取值数据返回至所述用户。
[0046] 根据本发明实施例的第二方面,提供一种数据写入装置,所述装置应用于存储节点中,所述存储节点至少包括内存存储和磁盘存储,所述装置包括:
[0047] 第一写入模块,用于当检测到哈希表的数据量达到第一阈值时,将所述哈希表的至少一个子键写入内存压缩块的至少一个第一槽位中,所述哈希表中包括所述至少一个子
键及至少一个第一内存块,所述哈希表和所述内存压缩块部署在所述内存存储中,所述内
存压缩块包括与所述至少一个子键对应的至少一个第一槽位;
[0048] 第一紧缩模块,用于对于所述至少一个第一槽位中的任一第一槽位,对所述第一槽位对应的全部第一内存块进行紧缩处理,生成第二内存块,将所述第二内存块写入所述
内存压缩块;
[0049] 第二写入模块,用于当检测到所述内存压缩块的数据量达到第二阈值时,获取所述内存压缩块中至少一个第一槽位中的全部子键,将所述至少一个第一槽位中的全部子键
写入磁盘压缩块的至少一个第二槽位中,所述磁盘压缩块部署在所述内存存储和所述磁盘
存储中,所述磁盘压缩块部署于所述内存存储的第一部分压缩块包括与所述至少一个第一
槽位对应的至少一个第二槽位;
[0050] 第二紧缩模块,用于对于所述至少一个第二槽位中的任一第二槽位,对所述第二槽位对应的全部第二内存块进行紧缩处理,生成待写入磁盘文件,将所述待写入磁盘文件
写入所述磁盘压缩块部署于所述磁盘存储的第二部分压缩块。
[0051] 在另一个实施例中,所述装置还包括:
[0052] 第一生成模块,用于建立多个子键,生成所述哈希表;
[0053] 接收模块,用于接收用户的数据写入指令,所述数据写入指令携带待写入值数据和待写入子键;
[0054] 第二生成模块,用于当检测到所述哈希表的数据量未达到所述第一阈值时,基于所述待写入值数据,生成待写入第一内存块;
[0055] 第三写入模块,用于将所述待写入第一内存块写入所述待写入子键在所述哈希表中指示的位置。
[0056] 在另一个实施例中,所述装置还包括:
[0057] 设置模块,用于在所述内存存储中设置候选哈希表,所述候选哈希表包括的内容与所述哈希表包括的内容一致;
[0058] 所述接收模块,还用于当所述哈希表中的至少一个第一内存块进行紧缩处理时,基于所述候选哈希表接收用户的待写入值数据。
[0059] 在另一个实施例中,所述第一写入模块包括:
[0060] 第一获取子模块,用于当检测到所述哈希表的数据量达到第一阈值时,获取所述哈希表中的至少一个子键;
[0061] 第二获取子模块,用于获取所述至少一个第一槽位的至少一个第一槽位锁;
[0062] 确定子模块,用于在所述至少一个第一槽位中确定所述至少一个子键对应的至少一个第一槽位分片,所述内存压缩块中至少一个第一槽位中每个第一槽位均包括多个第一
槽位分片;
[0063] 写入子模块,用于基于所述至少一个第一槽位锁,将所述哈希表的至少一个子键写入所述至少一个第一槽位分片。
[0064] 在另一个实施例中,所述第一紧缩模块包括:
[0065] 确定子模块,用于对于所述至少一个第一槽位中的任一第一槽位,确定所述第一槽位的至少一个第一槽位分片中每个第一槽位分片对应的第一内存块;
[0066] 紧缩子模块,用于并行对至少一个第一槽位分片中每个第一槽位分片对应的第一内存块进行紧缩处理,生成所述第二内存块;
[0067] 替换子模块,用于如果所述第一槽位在所述内存压缩块中存在对应的旧第二内存块,则基于所述第二内存块对所述旧第二内存块进行替换,完成所述待写入内存块的写入;
[0068] 写入子模块,用于如果所述第一槽位在所述内存压缩块中不存在对应的旧第二内存块,则直接将所述第二内存块写入所述内存压缩块。
[0069] 在另一个实施例中,所述第二写入模块包括:
[0070] 第一获取子模块,用于当检测到所述内存压缩块的数据量达到第二阈值时,获取所述内存压缩块中至少一个第一槽位中的全部子键;
[0071] 第二获取子模块,用于获取所述至少一个第二槽位的至少一个第二槽位锁;
[0072] 确定子模块,用于在所述至少一个第二槽位中确定所述至少一个第一槽位中全部子键对应的至少一个第二槽位分片,所述磁盘压缩块中至少一个第二槽位中每个第二槽位
均包括多个第二槽位分片;
[0073] 写入子模块,用于基于所述至少一个第二槽位锁,将所述至少一个第一槽位中的全部子键写入所述至少一个第二槽位分片。
[0074] 在另一个实施例中,所述第二紧缩模块包括:
[0075] 确定子模块,用于对于所述至少一个第二槽位中的任一第二槽位,确定所述第二槽位的至少一个第二槽位分片中每个第二槽位分片对应的第二内存块;
[0076] 紧缩子模块,用于并行对至少一个第二槽位分片中每个第二槽位分片对应的第二内存块进行紧缩处理,生成所述待写入磁盘文件;
[0077] 替换子模块,用于如果所述第二槽位在所述磁盘压缩块部署于所述磁盘存储的第二部分压缩块中存在对应的旧磁盘文件,则基于所述待写入磁盘文件对所述旧磁盘文件进
行替换,完成所述待写入磁盘文件的写入;
[0078] 写入子模块,用于如果所述第二槽位在所述磁盘压缩块部署于所述磁盘存储的第二部分压缩块中不存在对应的旧磁盘文件,则直接将所述待写入磁盘文件写入所述磁盘压
缩块。
[0079] 在另一个实施例中,所述装置还包括:
[0080] 确定模块,用于当接收到用户的数据读取指令时,基于所述数据读取指令携带的待读取槽位标识确定待读取槽位锁;
[0081] 获取模块,用于获取所述待读取槽位锁在所述哈希表中指示的第一候选数据;
[0082] 所述获取模块,还用于获取所述待读取槽位锁在所述内存压缩块中指示的第二候选数据;
[0083] 所述获取模块,还用于获取所述待读取槽位锁在所述磁盘压缩块中指示的第三候选数据;
[0084] 返回模块,用于将所述第一候选数据、所述第二候选数据和所述第三候选数据作为待读取值数据,将所述待读取值数据返回至所述用户。
[0085] 根据本发明实施例的第三方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可执行指令,所述处理器执行所述计算机可执行
指令时实现上述第一方面所述的数据写入方法。
[0086] 根据本发明实施例的第四方面,提供一种可读存储介质,所述可读存储介质上存储有指令,所述指令被处理器执行以完成上述第一方面所述的数据写入方法。
[0087] 本发明的实施例提供的技术方案可以包括以下有益效果:
[0088] 当检测到哈希表的数据量达到第一阈值时,将哈希表的至少一个子键写入内存压缩块的至少一个第一槽位中,对第一槽位对应的全部第一内存块进行紧缩处理,生成第二
内存块,将第二内存块写入内存压缩块,并当检测到内存压缩块的数据量达到第二阈值时,
获取内存压缩块中至少一个第一槽位中的全部子键,将至少一个第一槽位中的全部子键写
入磁盘压缩块的至少一个第二槽位中,对第二槽位对应的全部第二内存块进行紧缩处理,
生成待写入磁盘文件,将待写入磁盘文件写入磁盘压缩块部署于磁盘存储的第二部分压缩
块,通过多步的紧缩过程将存储节点中存储的值数据均写入磁盘存储,使得存储节点可以
写入或追加的数据的数据量不会受到内存存储容量的限制,智能性较优。
[0089] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

[0090] 此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
[0091] 图1是根据一示例性实施例示出的一种数据写入方法的流程图;
[0092] 图2A是根据一示例性实施例示出的一种实施框架的示意图;
[0093] 图2B是根据一示例性实施例示出的一种实施框架的示意图;
[0094] 图3A是根据一示例性实施例示出的一种数据写入方法的流程图;
[0095] 图3B是根据一示例性实施例示出的一种数据写入方法的示意图;
[0096] 图3C是根据一示例性实施例示出的一种数据写入方法的示意图;
[0097] 图3D是根据一示例性实施例示出的一种数据写入方法的示意图;
[0098] 图3E是根据一示例性实施例示出的一种数据写入方法的流程图;
[0099] 图3F是根据一示例性实施例示出的一种数据写入方法的流程图;
[0100] 图3G是根据一示例性实施例示出的一种数据写入方法的流程图;
[0101] 图4A是根据一示例性实施例示出的一种数据写入装置的框图;
[0102] 图4B是根据一示例性实施例示出的一种数据写入装置的框图;
[0103] 图4C是根据一示例性实施例示出的一种数据写入装置的框图;
[0104] 图4D是根据一示例性实施例示出的一种数据写入装置的框图;
[0105] 图4E是根据一示例性实施例示出的一种数据写入装置的框图;
[0106] 图4F是根据一示例性实施例示出的一种数据写入装置的框图;
[0107] 图4G是根据一示例性实施例示出的一种数据写入装置的框图;
[0108] 图4H是根据一示例性实施例示出的一种数据写入装置的框图;
[0109] 图5是根据一示例性实施例示出的一种数据写入装置500的框图。

具体实施方式

[0110] 这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例
中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附
权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
[0111] 图1是根据一示例性实施例示出的一种数据写入方法的流程图,如图1所示,该方法包括以下步骤。
[0112] 在步骤101中,当检测到哈希表的数据量达到第一阈值时,将哈希表的至少一个子键写入内存压缩块的至少一个第一槽位中,哈希表中包括至少一个子键及至少一个第一内
存块,哈希表和内存压缩块部署在内存存储中,内存压缩块包括与至少一个子键对应的至
少一个第一槽位。
[0113] 在步骤102中,对于至少一个第一槽位中的任一第一槽位,对第一槽位对应的全部第一内存块进行紧缩处理,生成第二内存块,将第二内存块写入内存压缩块。
[0114] 在步骤103中,当检测到内存压缩块的数据量达到第二阈值时,获取内存压缩块中至少一个第一槽位中的全部子键,将至少一个第一槽位中的全部子键写入磁盘压缩块的至
少一个第二槽位中,磁盘压缩块部署在内存存储和磁盘存储中,磁盘压缩块部署于内存存
储的第一部分压缩块包括与至少一个第一槽位对应的至少一个第二槽位。
[0115] 在步骤104中,对于至少一个第二槽位中的任一第二槽位,对第二槽位对应的全部第二内存块进行紧缩处理,生成待写入磁盘文件,将待写入磁盘文件写入磁盘压缩块部署
于磁盘存储的第二部分压缩块。
[0116] 本发明实施例提供的方法,当检测到哈希表的数据量达到第一阈值时,将哈希表的至少一个子键写入内存压缩块的至少一个第一槽位中,对第一槽位对应的全部第一内存
块进行紧缩处理,生成第二内存块,将第二内存块写入内存压缩块,并当检测到内存压缩块
的数据量达到第二阈值时,获取内存压缩块中至少一个第一槽位中的全部子键,将至少一
个第一槽位中的全部子键写入磁盘压缩块的至少一个第二槽位中,对第二槽位对应的全部
第二内存块进行紧缩处理,生成待写入磁盘文件,将待写入磁盘文件写入磁盘压缩块部署
于磁盘存储的第二部分压缩块,通过多步的紧缩过程将存储节点中存储的值数据均写入磁
盘存储,使得存储节点可以写入或追加的数据的数据量不会受到内存存储容量的限制,智
能性较优。
[0117] 在另一个实施例中,当检测到哈希表的数据量达到第一阈值时,将哈希表的至少一个子键写入内存压缩块的至少一个第一槽位中之前,方法还包括:
[0118] 建立多个子键,生成哈希表;
[0119] 接收用户的数据写入指令,数据写入指令携带待写入值数据和待写入子键;
[0120] 当检测到哈希表的数据量未达到第一阈值时,基于待写入值数据,生成待写入第一内存块;
[0121] 将待写入第一内存块写入待写入子键在哈希表中指示的位置。
[0122] 在另一个实施例中,方法还包括:
[0123] 在内存存储中设置候选哈希表,候选哈希表包括的内容与哈希表包括的内容一致;
[0124] 当哈希表中的至少一个第一内存块进行紧缩处理时,基于候选哈希表接收用户的待写入值数据。
[0125] 在另一个实施例中,当检测到哈希表的数据量达到第一阈值时,将哈希表的至少一个子键写入内存压缩块的至少一个第一槽位中包括:
[0126] 当检测到哈希表的数据量达到第一阈值时,获取哈希表中的至少一个子键;
[0127] 获取至少一个第一槽位的至少一个第一槽位锁;
[0128] 在至少一个第一槽位中确定至少一个子键对应的至少一个第一槽位分片,内存压缩块中至少一个第一槽位中每个第一槽位均包括多个第一槽位分片;
[0129] 基于至少一个第一槽位锁,将哈希表的至少一个子键写入至少一个第一槽位分片。
[0130] 在另一个实施例中,对于至少一个第一槽位中的任一第一槽位,对第一槽位对应的全部第一内存块进行紧缩处理,生成第二内存块,将第二内存块写入内存压缩块包括:
[0131] 对于至少一个第一槽位中的任一第一槽位,确定第一槽位的至少一个第一槽位分片中每个第一槽位分片对应的第一内存块;
[0132] 并行对至少一个第一槽位分片中每个第一槽位分片对应的第一内存块进行紧缩处理,生成第二内存块;
[0133] 如果第一槽位在内存压缩块中存在对应的旧第二内存块,则基于第二内存块对旧第二内存块进行替换,完成待写入内存块的写入;
[0134] 如果第一槽位在内存压缩块中不存在对应的旧第二内存块,则直接将第二内存块写入内存压缩块。
[0135] 在另一个实施例中,当检测到内存压缩块的数据量达到第二阈值时,获取内存压缩块中至少一个第一槽位中的全部子键,将至少一个第一槽位中的全部子键写入磁盘压缩
块的至少一个第二槽位中包括:
[0136] 当检测到内存压缩块的数据量达到第二阈值时,获取内存压缩块中至少一个第一槽位中的全部子键;
[0137] 获取至少一个第二槽位的至少一个第二槽位锁;
[0138] 在至少一个第二槽位中确定至少一个第一槽位中全部子键对应的至少一个第二槽位分片,磁盘压缩块中至少一个第二槽位中每个第二槽位均包括多个第二槽位分片;
[0139] 基于至少一个第二槽位锁,将至少一个第一槽位中的全部子键写入至少一个第二槽位分片。
[0140] 在另一个实施例中,对于至少一个第二槽位中的任一第二槽位,对第二槽位对应的全部第二内存块进行紧缩处理,生成待写入磁盘文件,将待写入磁盘文件写入磁盘压缩
块部署于磁盘存储的第二部分压缩块包括:
[0141] 对于至少一个第二槽位中的任一第二槽位,确定第二槽位的至少一个第二槽位分片中每个第二槽位分片对应的第二内存块;
[0142] 并行对至少一个第二槽位分片中每个第二槽位分片对应的第二内存块进行紧缩处理,生成待写入磁盘文件;
[0143] 如果第二槽位在磁盘压缩块部署于磁盘存储的第二部分压缩块中存在对应的旧磁盘文件,则基于待写入磁盘文件对旧磁盘文件进行替换,完成待写入磁盘文件的写入;
[0144] 如果第二槽位在磁盘压缩块部署于磁盘存储的第二部分压缩块中不存在对应的旧磁盘文件,则直接将待写入磁盘文件写入磁盘压缩块。
[0145] 在另一个实施例中,方法还包括:
[0146] 当接收到用户的数据读取指令时,基于数据读取指令携带的待读取槽位标识确定待读取槽位锁;
[0147] 获取待读取槽位锁在哈希表中指示的第一候选数据;
[0148] 获取待读取槽位锁在内存压缩块中指示的第二候选数据;
[0149] 获取待读取槽位锁在磁盘压缩块中指示的第三候选数据;
[0150] 将第一候选数据、第二候选数据和第三候选数据作为待读取值数据,将待读取值数据返回至用户。
[0151] 上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
[0152] 在对本发明进行详细的解释说明之前,先对本发明涉及的实施框架进行简单介绍。
[0153] 参见图2A,本发明涉及的实施框架包括Gateway(网关)和多个Storage(存储节点)。在本发明实施例中,以Gateway使用键最高3Bit(位)将内存存储中的键进行分片为例
进行说明,Gateway将键的键空间(0~232)划分为8个子空间,每个子空间负责(0~229)范围
的键空间,将8个子空间对应到8个Storage存储,并当接收到用户的指令时,将指令路由到
对应的Storage进行处理。Storage用于将子键与值数据对应存储,参见图2B,Storage中的
存储空间分为内存存储和磁盘存储,其中,内存存储中部署有哈希表(HashTable)、内存压
缩块(MemCompactedBlock)和磁盘压缩块(DiskCompactedBlock)的第一部分压缩块,磁盘
存储中部署有磁盘压缩块的第二部分压缩块。另外,内存压缩块和磁盘压缩块均被划分为
至少一个槽位,也即slot(槽位),一般来说,通常将内存压缩块和磁盘压缩块划分为4096个
槽位,且内存压缩块和磁盘压缩块基于槽位存储子键,因此,在Storage中存储有内存压缩
块及磁盘压缩块中各个槽位的槽位锁,以便在接收到用户的数据写入指令或数据读取指令
时,获取相应槽位的槽位锁,并基于槽位锁完成指令所指示的操作。哈希表存储有至少一个
子键和至少一个第一内存块之间的对应关系,内存压缩块包括至少一个第一槽位和至少一
个第二内存块,第二内存块可以用MemBlock(内存块)表示;磁盘压缩块包括至少一个第二
槽位和至少一个磁盘文件,磁盘文件可以用FlieBlock(文件内存块)表示。其中,磁盘压缩
块的至少一个第二槽位部署在Storage的内存存储中,至少一个磁盘文件部署在Storage的
磁盘存储中。
[0154] 需要说明的是,在内存存储中设置有候选哈希表,也即图中所示HashTable(1),候选哈希表包括的内容与哈希表包括的内容一致。由于哈希表在进行紧缩处理时,无法进行
任何的数据写入操作或数据读取操作,因此,在内存存储中设置有与哈希表完全一致的候
选哈希表,这样,当哈希表中的至少一个第一内存块进行紧缩处理时,可以基于候选哈希表
接收用户的待写入值数据和待追加值数据,从而保证Storage中的数据写入操作和数据读
取操作不会受到紧缩操作的限制。
[0155] 图3A是根据一示例性实施例示出的一种数据写入方法的流程图,如图3A所示,该方法包括以下步骤。
[0156] 在步骤301中,建立多个子键,生成哈希表,接收用户的数据写入指令,当检测到哈希表的数据量未达到第一阈值时,执行下述步骤302;当检测到哈希表的数据量达到第一阈
值时,执行下述步骤303。
[0157] 在本发明实施例中,数据写入指令携带待写入值数据和待写入子键,参见图3B,哈希表中包括至少一个子键及至少一个第一内存块,其中,子键可以用key(子键)表示,第一
内存块可以用Value(值数据)表示。在进行值数据的存储之前,存储节点中可以建立多个子
键,生成用于存储子键与第一内存块之间对应关系的哈希表,以便在后续接收到用户的数
据写入指令时,基于数据写入指令中携带的待写入子键确定将待写入值数据写入的位置。
参见图3B,哈希表中多个子键可以采用连续的子键内存块进行存储,且每个子键对应不同
的下标,也即图3B中的key0、key1、key2等等,以便对多个子键进行区分。需要说明的是,当哈
希表初次形成时,哈希表中并不包括第一内存块,第一内存块为哈希表在接收到用户的数
据写入指令时,根据数据写入指令携带的待写入值数据生成并添加到待写入子键在哈希表
中所指示的位置的。
[0158] 当用户请求将值数据写入时,实施框架中的Gateway首先接收到用户发送的携带待写入值数据的数据写入指令,如果数据写入指令携带的待写入值数据是首次写入内存进
行存储,则Gateway会根据当前各个存储节点的存储状态,确定空闲存储空间可以满足用户
存储需求的指定存储节点,并为数据写入指令添加待写入子键,将添加待写入子键的数据
写入指令路由至指定存储节点,以便指定存储节点将数据写入指令携带的待写入子键和待
写入值数据对应存储;如果数据写入指令中携带了待写入子键,则表示数据写入指令中携
带的待写入值数据为追加数据,这样,便可以直接将该追加数据添加至数据写入指令中携
带的待写入子键在哈希表中指示的位置,无需再为待写入值数据分配新的子键,既保证了
对之前数据追加的准确性,同时又简化了数据写入的过程。
[0159] 在实际应用的过程中,为了将更多的存储空间留给内存压缩块,尽可能的减少在后续将内存压缩块紧缩到磁盘压缩块的次数,Storage中哈希表被分配的内存比较小,因
此,Storage中设置有第一阈值,当Storage接收到用户的数据写入指令时,需要对哈希表的
数据量进行检测,如果检测到哈希表的数据量未达到第一阈值,则表示可以将数据写入指
令携带的待写入值数据写入哈希表,也即执行下述步骤302;如果检测到哈希表的数据量达
到第一阈值,则表示当前哈希表的存储空间已满,无法存储数据写入指令携带的待写入值
数据,需要将哈希表中的内容紧缩到内存压缩块中,也即执行下述步骤303。
[0160] 在步骤302中,当检测到哈希表的数据量未达到第一阈值时,基于待写入值数据,生成待写入第一内存块,将待写入第一内存块写入待写入子键在哈希表中指示的位置。
[0161] 在本发明实施例中,当检测到哈希表的数据量未达到第一阈值时,则表示当前哈希表中还存在空闲的存储空间,可以将数据写入指令携带的待写入值数据写入哈希表中,
无需将哈希表中当前的全部内容紧缩至内存压缩块中,因此,可以基于待写入值数据,生成
待写入第一内存块,将待写入第一内存块写入待写入子键在哈希表中指示的位置。
[0162] 在实际应用的过程中,由于数据写入指令中携带的待写入值数据可能会是追加数据,也即待写入子键在哈希表中指示的位置中已经存储有其他的第一内存块,这样,在基于
待写入值数据生成待写入第一内存块后,可以确定待写入子键在哈希表中指示位置已经存
储的连续的其他第一内存块,将待写入第一内存块添加至该连续的其他第一内存块的末尾
即可;如果待写入子键在哈希表中所指示位置并未存储任一第一内存块,则直接将待写入
第一内存块添加至待写入子键在哈希表中指示的位置即可。
[0163] 在步骤303中,当检测到哈希表的数据量达到第一阈值时,获取哈希表中的至少一个子键,获取至少一个第一槽位的至少一个第一槽位锁,内存压缩块中至少一个第一槽位
中每个第一槽位均包括多个第一槽位分片。
[0164] 在本发明实施例中,参见图3C,内存压缩块部署在内存存储中,内存压缩块包括至少一个第一槽位,也即slot,且每个第一槽位对应不同的下标,例如slot0000、slot0001、
slot0002等等;其中,至少一个第一槽位中每个槽位均包括多个第一槽位分片,也即slice,
且每个第一槽位分片对应不同的下标,例如slice0、slice1、slice2等等,通常来说,每个第
一槽位包括16个第一槽位分片,第一槽位分片用于存储哈希表中至少一个子键,指定第一
槽位为至少一个第一槽位中未满的第一槽位。如果检测到哈希表的数据量达到第一阈值,
则表示当前哈希表的存储空间已满,无法存储数据写入指令携带的待写入值数据,需要将
哈希表中的至少一个子键和至少一个第一内存块紧缩到内存压缩块中,使得哈希表中存在
可以写入待写入值数据的空闲空间。
[0165] 在将哈希表中的至少一个子键和至少一个第一内存块紧缩到内存压缩块中时,首先将至少一个子键紧缩至内存压缩块中的指定第一槽位中,由于Storage中的每个槽位均
对应槽位锁,为了保证将哈希表中至少一个子键紧缩到正确的槽位,避免发生写入错误,需
要先在内存压缩块中分别确定至少一个子键对应的至少一个第一槽位;随后,获取至少一
个第一槽位的至少一个第一槽位锁,以便后续基于第一槽位锁将至少一个子键写入与其对
应的第一槽位,保证至少一个第一槽位紧缩的准确性。
[0166] 在步骤304中,在至少一个第一槽位中确定至少一个子键对应的至少一个第一槽位分片,基于至少一个第一槽位锁,将哈希表的至少一个子键写入至少一个第一槽位分片。
[0167] 在本发明实施例中,由于每个第一槽位均包括多个第一槽位分片,且基于第一槽位分片存储接收到的子键,因此,在确定了存储至少一个子键的至少一个第一槽位后,需要
在至少一个第一槽位中确定具体存储至少一个子键的至少一个第一槽位分片,并基于第一
槽位锁,将哈希表的至少一个子键写入至少一个第一槽位分片,以便在后续对至少一个第
一槽位中包括的全部子键对应的第一内存块进行紧缩处理,从而在将哈希表中的内容紧缩
到内存压缩块中时,可以尽可能少的占用内存压缩块中的存储空间。例如,哈希表中属于槽
位0001的至少一个子键需要紧缩到内存压缩块中第一槽位0001指示的第一槽位分片中。
[0168] 在步骤305中,对于至少一个第一槽位中的任一第一槽位,确定第一槽位的至少一个第一槽位分片中每个第一槽位分片对应的第一内存块,并行对至少一个第一槽位分片中
每个第一槽位分片对应的第一内存块进行紧缩处理,生成第二内存块,如果第一槽位在内
存压缩块中存在对应的旧第二内存块,则执行下述步骤306;如果第一槽位在内存压缩块中
不存在对应的旧第二内存块,则执行下述步骤307。
[0169] 在本发明实施例中,对于至少一个第一槽位中的任一第一槽位来说,在将哈希表的至少一个子键写入至少一个子键在该第一槽位中的第一槽位分片后,便可以对该第一槽
位进行紧缩处理,也即对该第一槽位中全部子键指示的全部第一内存块进行紧缩处理。在
对该第一槽位进行紧缩处理时,首先,分别确定该第一槽位的至少一个第一槽位分片中每
个第一槽位分片对应的第一内存块;随后,并行对至少一个第一槽位分片中每个第一槽位
分片对应的第一内存块进行紧缩处理,也即至少一个槽位分片同时对其对应的全部第一内
存块进行紧缩处理,生成第二内存块,完成对该第一槽位进行紧缩处理,以便提高对指定第
一槽位进行紧缩处理的效率。
[0170] 当生成第二内存块后,由于该第一槽位中包括多个第一槽位分片,多个第一槽位分片中存储的值数据可能在之前已经做过紧缩操作,这样,该第一槽位可能在内存压缩块
中已经存在对应的旧第二内存块。如果该第一槽位在内存压缩块中存在对应的旧第二内存
块,则需要基于上述操作生成的第二内存块对旧第二内存块进行替换,进而完成将第二内
存块写入内存压缩块,也即执行下述步骤306;如果该第一槽位在内存压缩块中不存在对应
的旧第二内存块,则表示当前是首次对该第一槽位进行紧缩处理,直接将第二内存块写入
内存压缩块即可,也即执行下述步骤307。需要说明的是,至少一个第一槽位中的每个槽位
均可以通过上述305中所示的过程生成与其对应的第二内存块。
[0171] 在步骤306中,如果该第一槽位在内存压缩块中存在对应的旧第二内存块,则基于第二内存块对旧第二内存块进行替换,完成第二内存块的写入。
[0172] 在本发明实施例中,当生成第二内存块后,如果该第一槽位在内存压缩块中存在对应的旧第二内存块,则基于第二内存块对旧第二内存块进行替换,将旧第二内存块删除,
将生成的第二内存块写入该第一槽位在内存压缩块中指示的位置即可。
[0173] 在步骤307中,如果该第一槽位在内存压缩块中不存在对应的旧第二内存块,则直接将第二内存块写入内存压缩块。
[0174] 在本发明实施例中,当生成第二内存块后,如果该第一槽位在内存压缩块中不存在对应的旧第二内存块,则可以直接将第二内存块写入该第一槽位在内存压缩块中指示的
位置。
[0175] 在步骤308中,当检测到内存压缩块的数据量达到第二阈值时,获取内存压缩块中至少一个第一槽位中的全部子键,获取至少一个第二槽位的第二槽位锁,磁盘压缩块中至
少一个第二槽位中每个第二槽位均包括多个第二槽位分片。
[0176] 在本发明实施例中,参见图3D,磁盘压缩块分为第一部分压缩块和第二部分压缩块,第一部分压缩块部署在内存存储中,第二部分压缩块部署在磁盘存储中,其中,磁盘压
缩块在第一内存压缩块中部署至少一个第二槽位,也即磁盘压缩块将全部子键存储在内存
存储;将值数据存储在第二部分压缩块中也即进行值数据存储在磁盘存储中,由于磁盘存
储的存储空间远远大于内存存储,因此,使得磁盘存储可以存储的数据量不会受到限制。另
外,磁盘压缩块的内存存储包括至少一个第二槽位,也即slot,且每个第二槽位对应不同的
下标,例如slot0000、slot0001、slot0002等等;其中,至少一个第二槽位中每个槽位均包括多个
第二槽位分片,也即slice,且每个第一槽位分片对应不同的下标,例如slice0、slice1、
slice2等等,通常来说,每个第二槽位包括16个第二槽位分片。第二槽位分片用于存储内存
压缩块中至少一个子键,指定第二槽位为至少一个第二槽位中未满槽位。
[0177] 为了确定是否需要将内存压缩块紧缩至磁盘压缩块,Storage中设置有第二阈值,当检测到内存压缩块的数据量达到第二阈值时,则表示当前内存压缩块中无法再写入其他
值数据,需要对内存压缩块进行紧缩操作,这样,便需要先在磁盘压缩块中确定至少一个第
二槽位的至少一个第二槽位锁,以便随后将内存压缩块中的全部内容紧缩至至少一个第二
槽位在磁盘压缩块中指示的位置。其中,在磁盘压缩块中确定至少一个第二槽位及获取至
少一个第二槽位锁的过程与上述步骤303中所示的确定至少一个第一槽位及获取至少一个
第二槽位锁的过程一致,此处不再进行赘述。
[0178] 需要说明的是,由于进行一次将内存压缩块紧缩至磁盘压缩块的成本较高,需要将内存压缩块中的全部值数据都进行读取-追加-写入操作,且内存压缩块中的数据量巨
大,会占用大量的磁盘IO(Input/Output,输入/输出),因此,只有在内存压缩块不存在任何
空闲存储空间时才将内存压缩块中的全部内容紧缩至磁盘压缩块中,进而保证Storage的
正常工作不会受到影响。
[0179] 在步骤309中,在至少一个第二槽位中确定至少一个第一槽位中全部子键对应的至少一个第二槽位分片,基于至少一个第二槽位锁,将至少一个第一槽位中的全部子键写
入至少一个第二槽位分片。
[0180] 在本发明实施例中,当确定至少一个第二槽位后,便可以在至少一个第二槽位中确定至少一个第一槽位中全部子键对应的至少一个第二槽位分片,并基于至少一个第二槽
位锁,将至少一个第一槽位中的全部子键写入指定第二槽位分片。其中,在至少一个第二槽
位锁中确定至少一个第一槽位中全部子键对应的至少一个第二槽位分片并将全部子键写
入至少一个第二槽位分片的过程与上述步骤304中所示的确定至少一个第一槽位分片将至
少一个子键写入至少一个第一槽位分片的过程一致,此处不再进行赘述。例如,内存压缩块
中属于第一槽位0001的至少一个子键需要紧缩到磁盘压缩块中第二槽位0001指示的第二
槽位分片中。
[0181] 在步骤310中,对于至少一个第二槽位中的任一第二槽位,确定该第二槽位的至少一个第二槽位分片中每个第二槽位分片对应的第二内存块,并行对至少一个第二槽位分片
中每个第二槽位分片对应的第二内存块进行紧缩处理,生成待写入磁盘文件,如果该第二
槽位在磁盘压缩块部署于磁盘存储的第二部分压缩块中存在对应的旧磁盘文件,则执行下
述步骤311;如果该第二槽位在磁盘压缩块部署于磁盘存储的第二部分压缩块中不存在对
应的旧磁盘文件,则执行下述步骤312。
[0182] 在本发明实施例中,对于至少一个第二槽位中的任一第二槽位,在将至少一个第一槽位中的全部子键写入该第二槽位分片后,便可以对该第二槽位进行紧缩处理,也即对
该第二槽位中全部子键指示的全部第二内存块进行紧缩处理。其中,对该第二槽位进行紧
缩处理的过程与上述步骤305中所示的对第一槽位进行紧缩处理的过程一致,此处不再进
行赘述。
[0183] 当生成待写入磁盘文件后,由于该第二槽位中包括多个第二槽位分片,多个第二槽位分片中存储的值数据可能在之前已经做过紧缩操作,这样,该第二槽位可能在磁盘压
缩块中已经存在对应的旧磁盘文件。如果该第二槽位在磁盘压缩块中存在对应的旧磁盘文
件,则需要基于上述操作生成的磁盘文件对旧磁盘文件进行替换,进而完成将磁盘文件写
入磁盘压缩块,也即执行下述步骤311;如果该第二槽位在磁盘压缩块中不存在对应的旧磁
盘文件,则表示当前是首次对该第二槽位进行紧缩处理,直接将磁盘文件写入磁盘压缩块
即可,也即执行下述步骤312。
[0184] 在步骤311中,如果该第二槽位在磁盘压缩块部署于磁盘存储的第二部分压缩块中存在对应的旧磁盘文件,则基于待写入磁盘文件对旧磁盘文件进行替换,完成待写入磁
盘文件的写入。
[0185] 在本发明实施例中,当生成磁盘文件后,如果该第二槽位在磁盘压缩块部署于磁盘存储的第二部分压缩块中存在对应的旧磁盘文件,则基于生成的磁盘文件对旧磁盘文件
进行替换,将旧磁盘文件删除,将生成的磁盘文件写入该第二槽位在磁盘压缩块部署于磁
盘存储的第二部分压缩块中指示的位置即可。
[0186] 在步骤312中,如果该第二槽位在磁盘压缩块部署于磁盘存储的第二部分压缩块中不存在对应的旧磁盘文件,则直接将待写入磁盘文件写入磁盘压缩块。
[0187] 在本发明实施例中,当生成磁盘文件后,如果该第二槽位在磁盘压缩块部署于磁盘存储的第二部分压缩块中不存在对应的旧磁盘文件,则可以直接将磁盘文件写入指定第
二槽位在磁盘压缩块部署于磁盘存储的第二部分压缩块中指示的位置。
[0188] 需要说明的是,参见图3E,在正常运行的过程中,如果用户需要读取Storage中存储的值数据,则Storage还可能会接收到用户的数据读取指令,这样,便需要执行下述步骤
313至步骤315中的过程。
[0189] 在步骤313中,当接收到用户的数据读取指令时,基于数据读取指令携带的待读取槽位标识确定待读取槽位锁。
[0190] 在本发明实施例中,数据读取指令中携带待读取槽位标识。由于需要基于槽位锁才可以获取槽位中的值数据,因此,当接收到用户的数据读取指令时,首先基于数据读取指
令携带的待读取槽位标识确定待读取槽位锁,以便随后基于待读取槽位锁确定待读取槽
位,进而对待读取槽位中的值数据进行读取。
[0191] 在步骤314中,获取待读取槽位锁在哈希表中指示的第一候选数据,获取待读取槽位锁在内存压缩块中指示的第二候选数据,获取待读取槽位锁在磁盘压缩块中指示的第三
候选数据。
[0192] 在本发明实施例中,由于用户需要读取的待读取数据可能并不是同时存储至Storage的,使得在待读取数据陆续存储至Storage的过程中哈希表、内存压缩块及磁盘压
缩块可能会进行了紧缩操作,导致待读取数据可能分别存储在哈希表、内存压缩块及磁盘
压缩块中,因此,需要分别在哈希表、内存压缩块及磁盘压缩块中的待读取槽位锁中读取第
一候选数据、第二候选数据及第三候选数据,以便后续将第一候选数据、第二候选数据和第
三候选数据作为待读取数据。
[0193] 在步骤315中,将第一候选数据、第二候选数据和第三候选数据作为待读取数据,将待读取数据返回至用户。
[0194] 在本发明实施例中,当获取到第一候选数据、第二候选数据和第三候选数据后,便可以将第一候选数据、第二候选数据和第三候选数据作为待读取数据,将待读取数据返回
给用户。
[0195] 需要说明的是,如果在获取第一候选数据或第二候选数据或第三候选数据时发生了获取失败,则将成功获取的候选数据在后续作为待读取数据即可。
[0196] 在实际应用的过程中,当接收到用户的数据写入指令时,可以通过执行图3F中所示的过程实现将待写入值数据的写入;当接收到用户的数据读取指令时,可以通过执行图
3G中所示的过程实现对待读取值数据的读取。
[0197] 参见图3F,当接收到用户的数据写入指令时,确定待写入槽位锁,将数据写入指令携带的待写入值数据写入哈希表中,并检测哈希表的数据量是否达到第一阈值;如果哈希
表的数据量未达到第一阈值,则将待写入值数据写入哈希表,完成值数据的写入;如果哈希
表的数据量达到第一阈值,则将哈希表的全部内容紧缩至内存压缩块,并将待写入值数据
写入清空后的哈希表。其中,如果哈希表正在进行紧缩操作,则可以基于候选哈希表执行对
待写入值数据的写入。对内存压缩块的数据量进行检测,如果内存压缩块的数据量未达到
第二阈值,则将哈希表的全部内容写入内存压缩块;如果内存压缩块的数据量达到第二阈
值,则将内存压缩块的全部内容紧缩至磁盘压缩块,进而将内存压缩块中的内容写入磁盘
压缩块部署于磁盘存储的第二部分压缩块中,完成待写入值数据的写入。其中,在将哈希表
中的全部内容写入内存压缩块时,将相同槽位的值数据合并到一起,例如,哈希表中属于槽
位0001的数据只能压缩合并到内存压缩块中第一槽位0001指示的位置;内存压缩块中第一
槽位0001的数据只能压缩合并到磁盘压缩快中第二槽位槽位0001指示的位置。
[0198] 参见图3G,当接收到用户的数据读取指令时,确定待读取槽位锁,基于待读取槽位锁在哈希表、内存压缩块及磁盘压缩块中获取第一候选数据、第二候选数据和第三候选数
据。其中,如果哈希表正在进行紧缩操作,则可以基于待读取槽位锁在候选哈希表中获取第
一候选数据。当获取到第一候选数据、第二候选数据和第三候选数据后,将第一候选数据、
第二候选数据进而第三候选数据作为待读取值数据,将待读取值数据返回给用户,完成对
待读取值数据的读取。
[0199] 本发明实施例提供的方法,当检测到哈希表的数据量达到第一阈值时,将哈希表的至少一个子键写入内存压缩块的至少一个第一槽位中,对第一槽位对应的全部第一内存
块进行紧缩处理,生成第二内存块,将第二内存块写入内存压缩块,并当检测到内存压缩块
的数据量达到第二阈值时,获取内存压缩块中至少一个第一槽位中的全部子键,将至少一
个第一槽位中的全部子键写入磁盘压缩块的至少一个第二槽位中,对第二槽位对应的全部
第二内存块进行紧缩处理,生成待写入磁盘文件,将待写入磁盘文件写入磁盘压缩块部署
于磁盘存储的第二部分压缩块,通过多步的紧缩过程将存储节点中存储的值数据均写入磁
盘存储,使得存储节点可以写入或追加的数据的数据量不会受到内存存储容量的限制,智
能性较优。
[0200] 图4A是根据一示例性实施例示出的一种数据写入装置的框图。参照图4A,该装置包括第一写入模块401,第一紧缩模块402,第二写入模块403和第二紧缩模块404。
[0201] 该第一写入模块401,用于当检测到哈希表的数据量达到第一阈值时,将哈希表的至少一个子键写入内存压缩块的至少一个第一槽位中,哈希表中包括至少一个子键及至少
一个第一内存块,哈希表和内存压缩块部署在内存存储中,内存压缩块包括与至少一个子
键对应的至少一个第一槽位;
[0202] 该第一紧缩模块402,用于对于至少一个第一槽位中的任一第一槽位,对第一槽位对应的全部第一内存块进行紧缩处理,生成第二内存块,将第二内存块写入内存压缩块;
[0203] 该第二写入模块403,用于当检测到内存压缩块的数据量达到第二阈值时,获取内存压缩块中至少一个第一槽位中的全部子键,将至少一个第一槽位中的全部子键写入磁盘
压缩块的至少一个第二槽位中,磁盘压缩块部署在内存存储和磁盘存储中,磁盘压缩块部
署于内存存储的第一部分压缩块包括与至少一个第一槽位对应的至少一个第二槽位;
[0204] 该第二紧缩模块404,用于对于至少一个第二槽位中的任一第二槽位,对第二槽位对应的全部第二内存块进行紧缩处理,生成待写入磁盘文件,将待写入磁盘文件写入磁盘
压缩块部署于磁盘存储的第二部分压缩块。
[0205] 本发明实施例提供的装置,当检测到哈希表的数据量达到第一阈值时,将哈希表的至少一个子键写入内存压缩块的至少一个第一槽位中,对第一槽位对应的全部第一内存
块进行紧缩处理,生成第二内存块,将第二内存块写入内存压缩块,并当检测到内存压缩块
的数据量达到第二阈值时,获取内存压缩块中至少一个第一槽位中的全部子键,将至少一
个第一槽位中的全部子键写入磁盘压缩块的至少一个第二槽位中,对第二槽位对应的全部
第二内存块进行紧缩处理,生成待写入磁盘文件,将待写入磁盘文件写入磁盘压缩块部署
于磁盘存储的第二部分压缩块,通过多步的紧缩过程将存储节点中存储的值数据均写入磁
盘存储,使得存储节点可以写入或追加的数据的数据量不会受到内存存储容量的限制,智
能性较优。
[0206] 在另一个实施例中,参见图4B,该装置还包括第一生成模块405,接收模块406,第二生成模块407和第三写入模块408。
[0207] 该第一生成模块405,用于建立多个子键,生成哈希表;
[0208] 该接收模块406,用于接收用户的数据写入指令,数据写入指令携带待写入值数据和待写入子键;
[0209] 该第二生成模块407,用于当检测到哈希表的数据量未达到第一阈值时,基于待写入值数据,生成待写入第一内存块;
[0210] 该第三写入模块408,用于将待写入第一内存块写入待写入子键在哈希表中指示的位置。
[0211] 在另一个实施例中,参见图4C,该装置还包括设置模块409。
[0212] 该设置模块409,用于在内存存储中设置候选哈希表,候选哈希表包括的内容与哈希表包括的内容一致;
[0213] 该接收模块406,还用于当哈希表中的至少一个第一内存块进行紧缩处理时,基于候选哈希表接收用户的待写入值数据。
[0214] 在另一个实施例中,参见图4D,该第一写入模块401,包括第一获取子模块4011,第二获取子模块4012,确定子模块4013和写入子模块4014。
[0215] 该第一获取子模块4011,用于当检测到哈希表的数据量达到第一阈值时,获取哈希表中的至少一个子键;
[0216] 该第二获取子模块4012,用于获取至少一个第一槽位的至少一个第一槽位锁;
[0217] 该确定子模块4013,用于在至少一个第一槽位中确定至少一个子键对应的至少一个第一槽位分片,内存压缩块中至少一个第一槽位中每个第一槽位均包括多个第一槽位分
片;
[0218] 该写入子模块4014,用于基于至少一个第一槽位锁,将哈希表的至少一个子键写入至少一个第一槽位分片。
[0219] 在另一个实施例中,参见图4E,该第一紧缩模块402,包括确定子模块4021,紧缩子模块4022,替换子模块4023和写入子模块4024。
[0220] 该确定子模块4021,用于对于至少一个第一槽位中的任一第一槽位,确定第一槽位的至少一个第一槽位分片中每个第一槽位分片对应的第一内存块;
[0221] 该紧缩子模块4022,用于并行对至少一个第一槽位分片中每个第一槽位分片对应的第一内存块进行紧缩处理,生成第二内存块;
[0222] 该替换子模块4023,用于如果第一槽位在内存压缩块中存在对应的旧第二内存块,则基于第二内存块对旧第二内存块进行替换,完成待写入内存块的写入;
[0223] 该写入子模块4024,用于如果第一槽位在内存压缩块中不存在对应的旧第二内存块,则直接将第二内存块写入内存压缩块。
[0224] 在另一个实施例中,参见图4F,该第二写入模块403,包括第一获取子模块4031,第二获取子模块4032,确定子模块4033和写入子模块4034。
[0225] 该第一获取子模块4031,用于当检测到内存压缩块的数据量达到第二阈值时,获取内存压缩块中至少一个第一槽位中的全部子键;
[0226] 该第二获取子模块4032,用于获取至少一个第二槽位的至少一个第二槽位锁;
[0227] 该确定子模块4033,用于在至少一个第二槽位中确定至少一个第一槽位中全部子键对应的至少一个第二槽位分片,磁盘压缩块中至少一个第二槽位中每个第二槽位均包括
多个第二槽位分片;
[0228] 该写入子模块4034,用于基于至少一个第二槽位锁,将至少一个第一槽位中的全部子键写入至少一个第二槽位分片。
[0229] 在另一个实施例中,参见图4G,该第二紧缩模块404,包括确定子模块4041,紧缩子模块4042,替换子模块4043和写入子模块4044。
[0230] 该确定子模块4041,用于对于至少一个第二槽位中的任一第二槽位,确定第二槽位的至少一个第二槽位分片中每个第二槽位分片对应的第二内存块;
[0231] 该紧缩子模块4042,用于并行对至少一个第二槽位分片中每个第二槽位分片对应的第二内存块进行紧缩处理,生成待写入磁盘文件;
[0232] 该替换子模块4043,用于如果第二槽位在磁盘压缩块部署于磁盘存储的第二部分压缩块中存在对应的旧磁盘文件,则基于待写入磁盘文件对旧磁盘文件进行替换,完成待
写入磁盘文件的写入;
[0233] 该写入子模块4044,用于如果第二槽位在磁盘压缩块部署于磁盘存储的第二部分压缩块中不存在对应的旧磁盘文件,则直接将待写入磁盘文件写入磁盘压缩块。
[0234] 在另一个实施例中,参见图4H,该装置还包括确定模块410,获取模块411和返回模块412。
[0235] 该确定模块410,用于当接收到用户的数据读取指令时,基于数据读取指令携带的待读取槽位标识确定待读取槽位锁;
[0236] 该获取模块411,用于获取待读取槽位锁在哈希表中指示的第一候选数据;
[0237] 该获取模块411,还用于获取待读取槽位锁在内存压缩块中指示的第二候选数据;
[0238] 该获取模块411,还用于获取待读取槽位锁在磁盘压缩块中指示的第三候选数据;
[0239] 该返回模块412,用于将第一候选数据、第二候选数据和第三候选数据作为待读取值数据,将待读取值数据返回至用户。
[0240] 关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0241] 图5是根据一示例性实施例示出的一种数据写入装置500的框图。例如,装置500可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健
身设备,个人数字助理等。
[0242] 参照图5,装置500可以包括以下一个或多个组件:处理组件502,存储器504,电源组件506,多媒体组件508,音频组件510,I/O(Input/Output,输入/输出)的接口512,传感器
组件514,以及通信组件516。
[0243] 处理组件502通常控制装置500的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件502可以包括一个或多个处理器520来执行指
令,以完成上述的方法的全部或部分步骤。此外,处理组件502可以包括一个或多个模块,便
于处理组件502和其他组件之间的交互。例如,处理组件502可以包括多媒体模块,以方便多
媒体组件508和处理组件502之间的交互。
[0244] 存储器504被配置为存储各种类型的数据以支持在装置500的操作。这些数据的示例包括用于在装置500上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消
息,图片,视频等。存储器504可以由任何类型的易失性或非易失性存储设备或者它们的组
合实现,如SRAM(Static Random Access Memory,静态随机存取存储器),EEPROM
(Electrically-Erasable Programmable Read-Only Memory,电可擦除可编程只读存储
器),EPROM(Erasable Programmable Read Only Memory,可擦除可编程只读存储器),PROM
(Programmable Read-Only Memory,可编程只读存储器),ROM(Read-Only Memory,只读存
储器),磁存储器,快闪存储器,磁盘或光盘。
[0245] 电源组件506为装置500的各种组件提供电力。电源组件506可以包括电源管理系统,一个或多个电源,及其他与为装置500生成、管理和分配电力相关联的组件。
[0246] 多媒体组件508包括在所述装置500和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括LCD(Liquid Crystal Display,液晶显示器)和TP(Touch 
Panel,触摸面板)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的
输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所
述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相
关的持续时间和压力。在一些实施例中,多媒体组件508包括一个前置摄像头和/或后置摄
像头。当装置500处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可
以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统
或具有焦距和光学变焦能力。
[0247] 音频组件510被配置为输出和/或输入音频信号。例如,音频组件510包括一个MIC(Microphone,麦克风),当装置500处于操作模式,如呼叫模式、记录模式和语音识别模式
时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器504
或经由通信组件516发送。在一些实施例中,音频组件510还包括一个扬声器,用于输出音频
信号。
[0248] I/O接口512为处理组件502和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁
定按钮。
[0249] 传感器组件514包括一个或多个传感器,用于为装置500提供各个方面的状态评估。例如,传感器组件514可以检测到设备500的打开/关闭状态,组件的相对定位,例如组件
为装置500的显示器和小键盘,传感器组件514还可以检测装置500或装置500一个组件的位
置改变,用户与装置500接触的存在或不存在,装置500方位或加速/减速和装置500的温度
变化。传感器组件514可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近
物体的存在。传感器组件514还可以包括光传感器,如CMOS(Complementary Metal Oxide 
Semiconductor,互补金属氧化物)或CCD(Charge-coupled Device,电荷耦合元件)图像传
感器,用于在成像应用中使用。在一些实施例中,该传感器组件514还可以包括加速度传感
器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
[0250] 通信组件516被配置为便于装置500和其他设备之间有线或无线方式的通信。装置500可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施
例中,通信组件516经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。
在一个示例性实施例中,所述通信组件516还包括NFC(Near Field Communication,近场通
信)模块,以促进短程通信。例如,在NFC模块可基于RFID(Radio  Frequency 
Identification,射频识别)技术,IrDA(Infra-red Data Association,红外数据协会)技
术,UWB(Ultra Wideband,超宽带)技术,BT(Bluetooth,蓝牙)技术和其他技术来实现。
[0251] 在示例性实施例中,装置500可以被一个或多个ASIC(Application Specific Integrated Circuit,应用专用集成电路)、DSP(Digital signal Processor,数字信号处
理器)、DSPD(Digital signal Processor Device,数字信号处理设备)、PLD(Programmable 
Logic Device,可编程逻辑器件)、FPGA)(Field Programmable Gate Array,现场可编程门
阵列)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述数据写入方法。
[0252] 在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器504,上述指令可由装置500的处理器520执行以完成上述方法。例如,
所述非临时性计算机可读存储介质可以是ROM、RAM(Random Access Memory,随机存取存储
器)、CD-ROM(Compact Disc Read-Only Memory,光盘只读存储器)、磁带、软盘和光数据存
储设备等。
[0253] 一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可执行指令,所述处理器执行所述计算机可执行指令时实现上述的数据写入方法。
[0254] 一种可读存储介质,当所述存储介质中的指令由数据写入装置的处理器执行时,使得数据写入装置能够执行上述数据写入方法。
[0255] 本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或
者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识
或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的
权利要求指出。
[0256] 应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。