`
lijuanabc
  • 浏览: 120412 次
社区版块
存档分类
最新评论

可扩展性的hash算法和系统

 
阅读更多

Hash算法是计算机系统非常重要的算法,它的目的就是要将任意类型的信息均匀影射到一个有限的连续空间上;它的用途可以用于数据的快速检索(比如hashmap),也可以用于数据签名(比如md5),也可用于安全系统(SHA),也普遍用于p2p系统中的信息检索和路由;本文中提到的应用着重指数据检索中使用的hash算法。

<wbr></wbr>

在数据检索的应用中,需要利用hash算法将key映射到一个有序范围中,将具有相同hash值的key统一管理起来,理想情况可以达到O(1)的检索效率,因此跟Btree类的检索算法相比,具有更快的插入效率、检索效率、也具有空间效率;但是当数据的规模超过有序范围5倍以上的时候,hash算法的查询效率随着规模的增长线性降低;因此具有可扩展性的hash算法将是有效数据检索的一个方向。这里着重介绍两个hash算法,分别是动态hash算法和一致性Hash算法。

<wbr></wbr>

动态hash算法可以参考dynamichashing ,主要是为了解决规模扩展的问题主体思路是在数据规模变大后,映射的范围将翻倍,新数据的插入将按照最新的映射范围插入,对于查询,则逐层降级查找,先查找最新的范围查找,如果没有,再将范围缩短一倍进行查找,逐层下去,直到最小范围终止;该算法可以有效支持数据规模的扩展,整体数据的查询效率也维护在O(1)的效率;当前在bdb中的hash算法就基于此算法实现,并且广泛应用的memcache服务中的索引扩展也是基于改算法思想。

<wbr></wbr>

一致性hash算法可以参考一致性hashconsistenthashing主要是为了解决分布式系统如何扩展的问题,主体思路是保证数据分布的均匀性和单调性,让数据均匀分散在各个节点上,并且在扩展的时候只是对一个区间内的数据进行了重新整理,所以只影响了一部分的数据节点;当前 p2p系统中都普遍才了该算法进行数据的定位,以及要amazon-dynamo/Apache-Cassandra系统中也是采用了该算法作为基础进行数据管理。

<wbr></wbr>

这两类Hash算法都提供了一种扩展的思路,在不影响正常应用的情况实现了支持规模升级。

<wbr></wbr>


分享到:
评论

相关推荐

    论文研究-基于并行和变参数的混沌hash函数的构造与性能分析.pdf

    提出了一种基于可并行和变参数的混沌分段线性映射hash函数算法。该函数通过明文扩展将并行处理的明文消息矩阵元素信息关联起来,实现了并行性。由矩阵元素位置标号决定的可变参数和矩阵元素相应的ASCII码值分别作为...

    GeoHash是目前比较主流实现位置服务的技术,用最简洁的Java实现GeoHash算法.zip

    可移植性:Java字节码可以在所有安装了JVM的设备上执行,从服务器到嵌入式系统,再到移动设备和桌面应用。 健壮性与高性能:Java通过垃圾回收机制确保内存的有效管理,同时也能通过JIT编译器优化来提升运行时性能...

    论文研究-基于改进DHT算法的分布式资源发现模型的研究.pdf

    为了解决大型分布式系统由集中管理导致的扩展性和鲁棒性差的问题,利用改进的结构化对等网组织分布式计算资源,构造一个SRDM(scalable resource discovery model,可扩展资源发现模型)。SRDM将逻辑空间中的节点分为...

    论文研究-一种新的快速报文分类算法——RC-FST*.pdf

    RC-FST 算法利用IP 地址高8 比特前缀建立Hash 压缩索引表, 将分类规则集分成多个子集, 并针对...该算法查找速度快( 50Mbps) , 支持分类规则数据库大(105) , 可扩展性好, 适于硬件流水线方式实现, 具有很高的实用价值。

    面向海量电子凭据的分层可扩展存储架构

    针对上述问题,提出了一种面向海量电子凭据的分层可扩展存储架构,结合hash取模算法和一致性hash算法实现快速的数据定位,设计了基于hash取模算法的横向扩展方案,减少了节点增删时迁移的数据量。此外,设计并实现了...

    一种新的快速报文分类算法--RC-FST* (2005年)

    RC-FST 算法利用IP 地址高8 比特...为提高搜索树性能,在规则分割等问题上也提出了独到的解决方法,该算法查找速度快(50Mbps) 、支持分类规则数据库大、可扩展性好,适于硬件流水线方式实现,具有很高的实用价值。

    网站架构技术

    分布式缓存的一致性hash算法 数据存储服务器集群的伸缩性设计 关系数据库集群的伸缩性设计 nosql数据库的伸缩性设计 随需应变:网站的可扩展性 构建可扩展的网站架构 利用分布式消息队列降低系统耦合性 ...

    nlp:用于Golang中自然语言处理和语义分析的选定机器学习算法

    自然语言处理 用于golang中自然语言处理的选定机器学习算法的实现。 该软件包的主要重点是纯文本文档的... 和反射性随机索引(RRI)(扩展了RI以支持间接推理),可在大型Web语料库上进行可扩展的 。 使用快速算法的

    java笔试题算法-tlsh:特尔什

    快速最近邻搜索和可扩展聚类 攻击鲁棒性 2020年 被采取 被采取 2020 年 3 月 26 日 将版本标识符添加到摘要中 添加了输出选项 (-o) 添加了 json 对象输出 (-ojson) 添加了空摘要 (TNULL) TLSH 获得了一些关注。 它已...

    IOI国家集训队论文集1999-2019

    + [差分约束系统](#差分约束系统) + [平面图](#平面图) + [2-SAT](#2-sat) + [最小生成树](#最小生成树) + [二分图](#二分图) + [Voronoi图](#voronoi图) + [偶图](#偶图) * [树](#树) + [树](#树-1) + ...

    大数据的存储和管理.pdf

    并⾏数据库系统的⽬标是⾼性能和⾼可⽤性,通过多个节点并⾏执⾏数据库任务,提⾼整个数据库系统的性能和可⽤性。最近⼀些年不断涌 现⼀些提⾼系统性能的新技术,如索引、压缩、实体化视图、结果缓存、I/O共享等,...

    祝福皮肤服务器:Web应用程序将您的自定义皮肤带回离线的Minecraft服务器

    易于使用可视化的用户,角色,材质管理页面详细的站点配置页面多处UI / UX优化只为更好的用户体验安全支持多种安全密码Hash算法XML验证防止恶意请求的积分系统强大的可扩展性多种多样的插件支持与Authme / Discuz等...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    C++网络爬虫项目

    进程入口函数在进行必要的命令行参数处理和系统初始化以后,进入网络爬虫 的多路输入输出循环,一旦发现某个与服务器相连的套接字有数据可读,即创WEBCRAWLER 网络爬虫实训项目 10 建接收线程,后者负责抓取页面内容...

    Generic Hash and HMAC Program:在一个程序中有52个哈希函数,每个函数都具有HMAC或KMAC-开源

    完全支持SHA3:sha3-224,sha3-256,sha3-384,sha3-512和可扩展输出功能(XOF)shake128,shake256 V1.4.2支持KMAC(HMAC的更强替代品),用于SHA3​​系列,用于抖动的Base64输出*。 shake *可以产生1字节到无穷大...

Global site tag (gtag.js) - Google Analytics