发布时间:2019-08-07 06:16:28
现有一批不同KEY值的数据要存储到服务器集群上。:
请问,经过一致性哈希算法分配后,每台服务器上,分别存储了哪些KEY值的数据?KEY值: 13, 22, 29, 45,46, 71, 88服务器1:服务器2:服务器3:服务器4:如果服务器2崩溃了,那么,将会发生数据的迁移。请问迁移后,服务器上数据又是如何分布的?(5分)服务器1:服务器2:服务器3:服务器4
哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个...
RTest = record Key:Integer; Name:String[20]; Sex:Boolean; Age:Integer; end; PTest = ^RTest ; 1:创建Hash表. ScHash:=THashedStringlist.Create; 2:将数据结构加入Hash表中. var Index:Integer; p_Test:PTest; Index:=ScHash.IndexOf(IntToStr(p_Test.Key)); if Index=-1 then begin ScHash.AddObject(IntToStr(p_Test.Key),TObject(Integer(p_Test))); end;[/td][/tr][/table] 在加入Hash表的时候,首先我们检查看这个Key是否在Hash表中,如果Index=-1则说明此Key不在Hash表中,则我们将这个结构指针加入到Hash表中. 3:将数据结构从Hash表中删除.[table=95%][tr][td][b]以下是引用片段:[/b] var Index:Integer; t_Object: TObject; Index:=ScHash.IndexOf(IntToStr(p_Test.Key)); if Index<>-1 then begin t_Object:=ScHash.Objects[Index]; ScHash.Delete(Index); end;[/td][/tr][/table] 4:删除Hash表 在删除Hash表的时候和一般的Tlist删除一样,使用Free.