联系hashgameCONTACT hashgame
地址:广东省广州市
手机:13988889999
电话:020-88889999
邮箱:admin@qq.com
查看更多
Rhashgamehashgame
你的位置: 首页 > hashgame

HASH GAME - Online Skill Game ET 300数据处理方法、装置、电子设备及计算机存储介质与流程

发布时间:2025-02-24 15:57:00  点击量:

  HASH GAME - Online Skill Game GET 300

HASH GAME - Online Skill Game GET 300数据处理方法、装置、电子设备及计算机存储介质与流程

  数据库是信息系统中最重要的资源,数据库的安全将直接影响信息系统的安全,一旦数据库中的数据被非法篡改,将会对整个系统构成不可弥补的破坏。数据校验可以防止非法数据进入程序、过滤误操作,从而保证程序的有效运行和数据完整。无论是单机存储还是分布式系统存储数据都需要进行数据一致性校验。单机情况如数据迁移、数据库升级等,而分布式存储则需要校验多个子系统和主系统中数据是否一致。目前为了校验kv数据库的完整性,一般要将数据生成梅克尔树,再保存梅克尔根来作为校验的凭证。但是当数据有变动的时候,重新构建梅克尔树的代价非常大,往往会消耗大量运算资源。

  基于哈希表结构的kv存储系统:哈希表可以高效的访问关联数据。每个条目都有一对对应的数据键和数据值,并且能仅通过数据键来快速的取回和赋值。使用哈希存储引擎的数据库一般只支持追加操作,即所有的写操作只追加而不修改老的数据。内存中存储了主键和value的索引信息,磁盘文件中存储了主键和value的实际内容,采用基于哈希表的索引数据结构,通过主键快速地定位到value的位置。由于只能追加,系统中的记录删除或者更新后,原来的记录成为垃圾数据。如果这些数据一直保存下去,文件会无限膨胀下去,因此需要定期执行合并(compaction)操作以实现垃圾回收。所谓合并操作,即将所有老数据文件中的数据扫描一遍并生成新的数据文件,这里的合并其实就是对同一个key的多个操作以只保留最新一个的原则进行删除,每次合并后,新生成的数据文件就不再有冗余数据了。但其不能利用部分索引键查询;以及不支持数据一致性校验。

  基于lsm结构的kv存储系统:在lsmtree中,写入操作是相当快速的,通过将大量的随机写转换为顺序写,从而极大地提升了数据写入的性能,虽然与此同时牺牲了部分读的性能。系统同样会周期的执行合并操作(compaction)。合并操作选择一些文件,并把他们合并到一起,移除重复的更新或者删除纪录,同时也会删除冗余。更重要的是,通过减少文件个数的增长,保证读操作的性能。基于lsm结构的kv存储系统只适合存储key值有序且写入大于读取的数据,或者读取操作通常是key值连续的数据。但由于大量的文件被创建,在最坏的情况下,执行读操作时,所有的文件都要搜索;以及不支持数据一致性校验。

  在本发明实施例中,前缀树结构中的各节点是长度为预设位数的列表,列表中的最后一位为数据值位,列表中的其他位为数据键的坐标位。其中,列表的位数与节点列表坐标相关,若节点列表坐标以十六进制字符表示,则前缀树结构中的节点是长度为17的列表,其中,前16位为数据键的坐标位,第17位为数据值位;若节点列表坐标以二进制字符表示,则前缀树结构中的节点是长度为3的列表,其中,前2位为数据键的坐标位,第3位为数据值位,这里不做具体限定。

  以待存储的数据为key[1]=“cat”,value[1]=“fish”为例,利用步骤s100确定key[1]=“cat”对应的节点列表坐标为636174,构建深度为7的前缀树结构,从第1层节点开始,在第1层节点对应的坐标位(6号位)处设置指向第2层节点的坐标位(3号位)的哈希指针,例如,可以在第1层节点的6号位标记next,在第2层节点对应的坐标位(3号位)处设置指向第3层节点的坐标位(6号位)的哈希指针,以此类推,在第6层节点对应的坐标位(4号位)处设置指向第7层节点的数据值位的哈希指针,将待存储数据的数据值“fish”存储至第7层节点的数据值位处,请参见图3。其中,next用于指向下一个节点,这样对于需要遍历的地方,就不需要知道节点的个数。

  由于节点是以列表形式存在的,在利用步骤s102将待存储数据的数据值“fish”存储至第7层节点的数据值位处后,需要先对第7层节点进行序列化处理,得到序列化处理结果,利用预设哈希算法,例如,ripemd160算法对序列化处理结果进行哈希处理,得到第7层节点对应的哈希值,并将计算得到的哈希值存储至第6层节点的坐标位(4号位)处;对第6层节点进行序列化处理,得到序列化处理结果,利用ripemd160算法对序列化处理结果进行哈希处理,得到第6层节点对应的哈希值,并将计算得到的哈希值存储至第5层节点的坐标位(7号位)处,以此类推,对第2层节点进行序列化处理,得到序列化处理结果,利用ripemd160算法对序列化处理结果进行哈希处理,得到第2层节点对应的哈希值,并将计算得到的哈希值存储至第1层节点的坐标位(6号位)处,数据存储结束,如图3所示。

  在本发明一种优选实施方式中,方法还包括:接收携带有待读取数据的数据键的数据读取请求;根据待读取数据的数据键计算该数据键对应的字符编码,确定字符编码的长度;利用预设哈希算法对待读取数据的数据键进行哈希处理,得到待读取数据的数据键对应的哈希值,确定哈希值的长度;将字符编码的长度与哈希值的长度进行比较,根据比较结果确定该数据键对应的节点列表坐标;根据节点列表坐标遍历查询前缀树结构,得到该数据键对应的数据值。

  具体地,用户可以通过输入设备(键盘或者手写输入板等)输入要查询的数据的数据键,例如,用户通过输入设备输入数据键“cat”,即被视为发送了读取数据键“cat”对应的数据值的数据读取请求,确定该数据键“cat”对应的节点列表坐标为636174,利用节点列表坐标636174遍历查询前缀树结构,具体地,根据节点列表坐标中的第一个数值“6”查询第1层节点,第1层节点的6号位设置了用于指向第2层节点的3号位的哈希指针,……,第6层节点的4号位设置了用于指向第7层节点的数据值位的哈希指针,查询到第7层节点存储有该数据键对应的数据值,从第7层节点的数据值位读取该数据键对应的数据值“fish”,在本优选实施例中,确定数据键“cat”对应的节点列表坐标的方法与数据存储时确定数据键对应的节点列表坐标时所采用的方法二类似,这里不再赘述。

  在本发明一种优选实施方式中,方法还包括:接收携带有待更新数据的数据键和数据值的数据更新请求;根据待更新数据的数据键计算该数据键对应的字符编码,确定字符编码的长度;利用预设哈希算法对待更新数据的数据键进行哈希处理,得到待更新数据的数据键对应的哈希值,确定哈希值的长度;将字符编码的长度与哈希值的长度进行比较,根据比较结果确定该数据键对应的节点列表坐标;根据节点列表坐标遍历查询前缀树结构,得到存储数据键对应的数据值的节点;将待更新数据的数据值存储至该节点的数据值位;从j=n+1开始,利用预设哈希算法对第j层节点进行哈希处理,得到第j层节点对应的哈希值,并将计算得到的哈希值存储至第j-1层节点对应的坐标位处;将j赋值为j-1,重复执行该步骤,直至j=2,数据存储结束,其中,j取值范围为[2,n+1]。

  具体地,用户可以通过输入设备(键盘或者手写输入板等)输入待更新数据的数据键和数据值,例如,用户通过输入设备输入待更新数据的数据键“cat”和更新后的数据值“mouse”,即被视为发送了更新数据键“cat”对应的数据值的数据更新请求,确定数据键“cat”对应的节点列表坐标为636174,根据节点列表坐标636174遍历查询前缀树结构,具体地,根据节点列表坐标中的第一个数值“6”查询第1层节点,第1层节点的6号位设置了用于指向第2层节点的3号位的哈希指针,……,第6层节点的4号位设置了用于指向第7层节点的数据值位的哈希指针,得到存储数据键对应的数据值的节点;将该节点的数据值位处存储的数据值“fish”更新为“mouse”,然后,从j=n+1开始,利用预设哈希算法对第j层节点进行哈希处理,得到节点对应的哈希值,并将计算得到的哈希值存储至第j-1层节点对应的坐标位处;将j赋值为j-1,重复执行该步骤,直至j=2,数据存储结束,其中,j取值范围为[2,n+1](与步骤s103类似,这里不再赘述)。

  在本发明一种优选实施方式中,方法还包括:接收携带有待更新数据的数据键和数据值的数据更新请求;利用预设哈希算法对待更新数据的数据键进行哈希处理,得到待更新数据的数据键对应的哈希值;将数据键对应的哈希值作为该数据键对应的节点列表坐标;根据节点列表坐标遍历查询前缀树结构,得到存储数据键对应的数据值的节点;将待更新数据的数据值存储至该节点的数据值位;从i=n+1开始,利用预设哈希算法对第j层节点进行哈希处理,得到第j层节点对应的哈希值,并将计算得到的哈希值存储至第j-1层节点对应的坐标位处;将j赋值为j-1,重复执行该步骤,直至j=2,数据存储结束,其中,j取值范围为[2,n+1]。

  其中,数据校验请求可以由用户发起,即用户主动请求校验不同数据库中存储的数据是否一致,例如,在对根节点进行哈希处理后,将根节点的哈希值进行备份存储至其他服务器的数据库中,若存储数据的服务器遭遇断电等情况时,用户可以发起数据校验请求,以确定该服务器的数据是否完整,是否存在数据丢失的情况,具体地,用户发送数据校验请求,存储数据的服务器根据数据校验请求,重新执行步骤s100-步骤s103,然后,对根节点进行序列化处理,得到序列化处理结果,利用预设哈希算法对序列化处理结果进行哈希处理,得到根节点对应的哈希值,将新生成的根节点对应的哈希值与备份存储至其他服务器的数据库中的根节点的哈希值进行比较,若一致,则确定该服务器的数据是完整的,不存在数据丢失的情况。

  当然数据校验请求也可以备份服务器发起,即备份服务器主动请求校验从数据库与主服务器的主数据库的数据是否一致。具体地,备份服务器向主服务器发送获取主服务器的主数据库中根节点的哈希值的请求,主服务器响应该请求,将主数据库中根节点的哈希值发送至备份服务器,备份服务器将从数据库中根节点的哈希值与接收的主数据库中根节点的哈希值进行比较,以确定主数据库中的数据与从数据库中的数据是否一致,若从数据库中根节点的哈希值与接收的主数据库中根节点的哈希值相同,则确定数据库之间的数据一致;若从数据库中根节点的哈希值与接收的主数据库中根节点的哈希值不相同,则确定数据库之间的数据不一致。

  具体地,在利用步骤s402将待存储数据的数据值存储至第n+1层节点的数据值位后,从j=n+1开始,对第j层节点进行序列化处理,得到序列化处理结果,利用预设哈希算法对序列化处理结果进行哈希处理,得到第j层节点对应的哈希值,并将计算得到的哈希值存储至第j-1层节点对应的坐标位处,以及将第k层节点对应的哈希值和第j层节点组成的数据键值对存储至键值数据库中;将j赋值为j-1,重复执行该步骤,直至j=2,数据存储结束,其中,j取值范围为[2,n+1]。

  由于节点是以列表形式存在的,在利用步骤s402将待存储数据的数据值“fish”存储至第7层节点的数据值位处后,需要先对第7层节点进行序列化处理,得到序列化处理结果,利用预设哈希算法,例如,ripemd160算法对序列化处理结果进行哈希处理,得到第7层节点对应的哈希值,并将计算得到的哈希值存储至第6层节点的坐标位(4号位)处,将第7层节点对应的哈希值和第7层节点组成的数据键值(key[1]7=hash7,value[1]7为第7层节点,第7层节点是数据值位存储了数据值的列表)对存储至键值数据库中;对第6层节点进行序列化处理,得到序列化处理结果,利用ripemd160算法对序列化处理结果进行哈希处理,得到第6层节点对应的哈希值,并将计算得到的哈希值存储至第5层节点的坐标位(7号位)处,将第6层节点对应的哈希值和第6层节点组成的数据键值(key[1]6=hash6,value[1]6为第6层节点,第6层节点是4号位存储有第7层节点的哈希值的列表)对存储至键值数据库中;以此类推,对第2层节点进行序列化处理,得到序列化处理结果,利用ripemd160算法对序列化处理结果进行哈希处理,得到第2层节点对应的哈希值,并将计算得到的哈希值存储至第1层节点的坐标位(6号位)处,将第2层节点对应的哈希值和第2层节点组成的数据键值(key[1]2=hash2,value[1]2为第6层节点,第2层节点是3号位存储有第3层节点的哈希值的列表)对存储至键值数据库中。

  下面以key[1]=“cat”,value[1]=“fish”为例详细介绍数据读取过程:利用上述方法步骤确定key[1]=“cat”的节点列表坐标为636174,以节点列表坐标中的第1位数值“6”查询键值数据库,定位到相应根节点的6号位,获取到该坐标位处存储的第2层节点的哈希值;从第2层节点开始,根据第2层节点的哈希值hash2查询键值数据库,得到与第2层节点的哈希值hash2对应的第2层节点,根据节点列表坐标中的第2位数值“3”查询节点,定位到所述第2层节点的3号位,得到该坐标位处存储的第3层节点的哈希值,以此类推得到,得到第7层节点的哈希值hash7,根据第7层节点的哈希值hash7得到与第7层节点的哈希值hash7对应的第7层节点,读取第7层节点数据值位的数据值。

  在本发明一种优选实施例中,所述方法还包括:接收携带有待读取数据的数据键的数据读取请求;利用预设哈希算法对所述待读取数据的数据键进行哈希处理,得到待读取数据的数据键对应的哈希值;将所述待读取数据的数据键对应的哈希值作为该数据键对应的节点列表坐标;根据所述节点列表坐标中的第1位数值查询键值数据库,定位到相应根节点中与所述第1位数值对应的坐标位,得到该坐标位处存储的第2层节点的哈希值;从m=2开始,根据第m层节点的哈希值和节点列表坐标中的第k位数值查询键值数据库,定位到所述第m层节点中与所述第k位数值对应的坐标位,得到该坐标位处存储的第m+1层节点的哈希值;将m赋值为m+1,k赋值为k+1,重复执行该步骤,直至m=n,k=n,其中,m取值范围为[2,n],k取值范围为[2,n];根据第m+1层节点的哈希值查询键值数据库,得到该待读取数据的数据键对应的数据值。

  类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

  本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

  应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

【返回列表页】

顶部

地址:广东省广州市  电话:020-88889999 手机:13988889999
Copyright © 2018-2025 哈希游戏(hash game)官方网站 版权所有 非商用版本 ICP备案编: