一种多索引的数据处理方法及装置的制造方法_2

文档序号:9667357阅读:来源:国知局
存储桶区域为4K桶区域。则38除以4得到9.5,进行取整得到10。即待存储数据被分为10块子待存储数据,每块子待存储数据的大小为4K。拆分后最后一块子待存储数据的实际大小为2K,则用补齐码0将最后一块子待存储数据的大小补齐至4K。
[0039]进一步的,将各子待存储数据顺序放置入关联存储桶区域中包含的空存储块。
[0040]对待存储数据拆分后,将各子待存储数据顺序的放置入关联存储桶区域中的空存储块中。优选的,存储之前先确定所述关联存储桶区域中包含的空存储块的数量是否大于所述子待存储数据的数量。若是,顺序将各子待存储数据放置入关联存储桶区域中的空存储块中;若否,则在所述关联存储桶区域的空存储空间大于待存储数据所需存储空间时,在所述关联存储桶区域中创建新的存储桶,并顺序将各子待存储数据放置入关联存储桶区域中的空存储块中。其中,若存储桶区域中的存储空间小于所述待存储数据所需要的空间时,则表明程序异常,并回滚本次操作。例如,需要10块4K存储块的存储数据,在确定存储数据对应的桶空间为4K桶空间时,判断所述桶空间是否有大于或等于10块的空存储块,若有,则将子存储数据顺序存入空存储快中;若小于10块,则判断4K桶空间中是否有足够的剩余空间存储待存储数据,若有,则建立新的空桶,桶中至少有10块空存储块,将各子待存储数据顺序写入空存储块中,若4K桶空间中没有足够的剩余空间存储待存储数据,则表明程序异常,回滚本次操作。
[0041 ] S140、依据创建的待存储数据与各关联存储块间的映射关系,存储所述待存储数据,并将所述待存储数据的唯一标识分配给各索弓I链表节点。
[0042]示例性的,确定各子待存储数据关联存储桶区域,将各子待存储数据顺序存储至关联存储桶区域中的空存储块中。在关联存储桶区域的表头存储待存储数据与各关联存储块间的映射关系,映射关系优选包括所述待存储数据的唯一标识及对应的存储块地址,并将各关联存储块的状态标识改为存储标识。之后可以将表头中存储的映射关系反馈给相应的索引链表节点,也可以将链表中存储的待存储数据的唯一标识分配给各索引链表节点,优选为将待存储数据的唯一标识分配给各索引链表节点。关联桶区域的表头反馈的唯一标识存储在索引链表节点的第二部分。待存储数据对应的各索引链表节点获取的唯一标识相同,即不同的索引值对应相应的存储位置,这样可以节省存储空间。例如,待存储数据存入5块4K大小的存储块中,表头中存储块的状态标识为“0”和“ 1 ”,分别表示未存储标识和存储标识。5块存储块的地址分别为0010、0011、0100、0101和0110,计算得到存储块的唯一标识为 01000100010001000,则在表头中存储 0100010001000100000100011010001010110一段序列,并将表头中5块存储块的状态标识从“0”变为“1”。将待存储数据的唯一标识01000100010001000分配给各索引链表节点的第二部分。当通过用户输入某一索引值找到对应的索引链表节点后,根据01000100010001000找到相应的表头,并得到相应存储块的地址0010、0011、0100、0101和0110,通过查找存储块与存储桶之间的映射关系找到对应的存储桶进而找到所述存储块。
[0043]图2为本发明实施例一所提供的多索引建立区域图,如图2所示,从逻辑上将索引区域分为索引区10和数据区20。索引区10由指针数组101构成的散列表和指针数组101对应单链表102构成,单链表102同一指针数组101指向的各索引链表节点103构成。指针数据101的长度大于预计存储的索引值个数。索引链表节点103包括第一部分1031,用于存储索引值;第二部分1032,用于存储索引数据的唯一标识;第三部分1033,用于处理哈希冲突。其中指针数组101指向单链表102的第一个索引链表节点103的第一部分1031,索引链表节点103的第二部分1032指向对应的表头202,索引链表节点103的第三部分1033在发生哈希冲突时,指向同一单链表102中新建索引链表节点103的第一部分1031。哈希冲突为指针数组101已指向索引链表节点103,则遍历该单链表102,并在末尾建立新索引链表节点103。数据区20的基本单位为存储块204,按照存储块204大小不同,将数据区20逻辑上分成各存储桶区域201,每个存储桶区域201中的存储块204大小相同。存储桶区域201分为若干个实际的存储桶203。每个存储桶203的容量大小为存储块204容量大小的整数倍。待存储数据就是顺序存入相应存储桶区域201的存储块204中。每个存储桶区域包含唯一一个表头202,表头202分为两个部分,第一部分用来存储桶区域201、存储桶203和存储块204的映射关系,存储桶203的地址,存储块204的地址,及存储块204的状态标识;第二部分用来存储待存储数据的唯一标识及对应存储的存储块204的地址。当待存储数据存入对应的空存储块204后,在表头202第二部分存入新的待存储数据的唯一标识及对应存储的存储块204的地址,并将唯一标识反馈给索引链表节点103并存入索引链表节点103的第二部分1032中,此时完成索引的建立。
[0044]本发明实施例一提供的一种多索引的数据处理方法,通过取得待存储数据的各索引值,创建关联的索引链表节点,对待存储数据进行计算确定关联的存储桶区域,将存储数据顺序写入关联桶区域的空存储块中,并将待存储数据的唯一标识分配给各索引链表节点。采用上述方法,可以快速的创建索引,并且由于对待存储数据的合理拆分,可以有效的避免存储空间的浪费,提高了存储空间的利用率。
[0045]实施例二
[0046]图3为本发明实施例二提供的一种多索引的数据处理方法的流程图。本实施例是在实施例一的基础上,添加了利用已创建的索引进行查询的步骤,由图2可知,该方法包括:
[0047]S210、在监测到数据查询事件时,获取客户端发送的待查询索引值。
[0048]示例性的,当客户需要根据某个索引值来查询存储数据时,输入相应的索引值,由客户端获取客户输入的待查询索引值。
[0049]S220、确定所述待查询索引值在指针数组中的关联位置所指向的索引链表节点。
[0050]示例性的,对客户输入的待查询索引值进行哈希计算并取模,得到结果后找到相应的指针数组,通过指针数组映射到相应的单链表节点的入口,即确定待查询索引值在指针数组中的关联位置所指向的索引链表节点,此部分的时间复杂度为0(1)。若指针数组对应指向的索引链表节点存放的索引值与待查询索引值不相符即发生冲突,则遍历单链表中所有索引链表节点,查询与待查询索引值相符的索引链表节点。单链表发生冲突的概率非常小,并且解决冲突的时间为一个很小的常量。
[0051 ] S230、确定指向的索引链表节点对应的存储桶区域的表头。
[0052]示例性的,根据索引链表节点中的第二部分里面存放的标识,确定需要查询的存储数据对应的存储桶区域的表头。
[0053]S240、依据对应的存储桶区域的表头,查询待查询索引值对应的存储块,将对应的存储块中的数据合并,作为待查询索引值对应的访问数据。
[0054]示例性的,依据对应的存储桶区域的表头中待存储数据的唯一标识确定存储块的地址,根据存储块与存储桶的映射关系,找到存储数据的全部存储块,将存储块中的数据取出合并成原始压缩的存储数据作为待查询索引值对应的访问数据返回给客户端。
[0055]本发明实施例二提供的一种多索引的数据处理方法,通过获取客户输入的索引值确定索引链表节点,通过索引链表节点存储的待存储数据的唯一标识,找到对应的桶区域表头,根据存储桶区域中的表头确定对应的存储块,将各存储块中的存储数据合并获得对应的待查询的访问数据。采用上述查询方法,可以快速准确的取得索引值对应的存储数据,提升客户体验。
[0056]实施例三
[0057]图4为本发明实施例三提供的一种多索引的数据处理方法的流程图。本实施例是在实施例一的基础上,添加了删除已建立好的索引的步骤,如图4所示,该方法包括:
[0058]S310、在监测到数据删除事件时,获取客户端发送的待删除数据。
[0059]示例性的,获取客户端发送的待删除数据,也可以是获取客户端发送的待删除索引值;确定待删除索引值在指针数组中的关联位置指向的索引链表节点;依据指向的索引链表节点对应的存储桶区域的表头,获取对应的存储块的数据进行合并,作为待删除数据。
[0060]S320、按照预设的索引规则,提取待删除数据的各待删除索引值。
[0061]示例性的,根据预先配置的索引构建规则,提取待删除数据构建各个索引值。其中索引构建规则可以根据实际情况设定,这里不作具体限定。
[0062]S330、确定所述各待删除索引值在指针数组中的关联位置所指向的各索引链表节点。
[0063]示例性的,对各待删除索引值进行计算后,确定各待删除索引值在指针数组中的关联位置指向的各索引链表节点。具体计算规则为对各待删除索引值进行哈希计算,将计算后得到的整数与指针数组的长度进行取模计算,根据计算结果找到对应的指针数组,确定指针数组指向的索引链表节点。若指针数组指向的索引链表节点的索引值与待删除索引
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1