加入收藏 | 设为首页 | 会员中心 | 我要投稿 盐城站长网 (https://www.0515zz.cn/)- 运维、云管理、管理运维、智能数字人、AI硬件!
当前位置: 首页 > 站长资讯 > 评论 > 正文

手机看车站大屏是怎样的感觉?

发布时间:2021-02-21 11:38:45 所属栏目:评论 来源:互联网
导读:我们通过哈希函数计算以后就可以到相应的位置去找是否存在了,我们看红色的线,24和147经过哈希函数得到的哈希值是一样的,我们把这种情况叫做哈希冲突或者哈希碰撞。哈希碰撞是不可避免的,我们能做的就是降低哈希碰撞的概率,第一种是可以扩大维数组的长度

我们通过哈希函数计算以后就可以到相应的位置去找是否存在了,我们看红色的线,24和147经过哈希函数得到的哈希值是一样的,我们把这种情况叫做哈希冲突或者哈希碰撞。哈希碰撞是不可避免的,我们能做的就是降低哈希碰撞的概率,第一种是可以扩大维数组的长度或者说位图容量,因为我们的函数是分布均匀的,所以位图容量越大,在同一个位置发生哈希碰撞的概率就越小。但是越大的位图容量,意味着越多的内存消耗,所以我们想想能不能通过其他的方式来解决,第二种方式就是经过多几个哈希函数的计算,你想啊,24和147现在经过一次计算就碰撞了,那我经过5次,10次,100次计算还能碰撞的话那真的是缘分了,你们可以在一起了,但也不是越多次哈希函数计算越好,因为这样很快就会填满位图,而且计算也是需要消耗时间,所以我们需要在时间和空间上寻求一个平衡。。

布隆过滤器

当然,这个事情早就有人研究过了,在 1970 年的时候,有一个叫做布隆的前辈对于判断海量元素中元素是否存在的问题进行了研究,也就是到底需要多大的位图容量和多少个哈希函数,它发表了一篇论文,提出的这个容器就叫做布隆过滤器。



有了这个屌炸天的东西,现在我们还需要一个映射关系,你总得知道某个元素在哪个位置上吧,然后在去看这个位置上是0还是1,怎么解决这个问题呢,那就要用到哈希函数,用哈希函数有两个好处,第一是哈希函数无论输入值的长度是多少,得到的输出值长度是固定的,第二是他的分布是均匀的,如果全挤的一块去那还怎么区分,比如MD5、SHA-1这些就是常见的哈希算法。


 

大家看下这幅图,用户可能进行了一次条件错误的查询,这时候redis是不存在的,按照常规流程就是去数据库找了,可是这是一次错误的条件查询,数据库当然也不会存在,也不会往redis里面写值,返回给用户一个空,这样的操作一次两次还好,可是次数多了还了得,我放redis本来就是为了挡一挡,减轻数据库的压力,现在redis变成了形同虚设,每次还是去数据库查找了,这个就叫做缓存穿透,相当于redis不存在了,被击穿了,对于这种情况很好解决,我们可以在redis缓存一个空字符串或者特殊字符串,比如&&,下次我们去redis中查询的时候,当取到的值是空或者&&,我们就知道这个值在数据库中是没有的,就不会在去数据库中查询,ps:这里缓存不存在key的时候一定要设置过期时间,不然当数据库已经新增了这一条记录的时候,这样会导致缓存和数据库不一致的情况

上面这个是重复查询同一个不存在的值的情况,如果应用每次查询的不存在的值是不一样的呢?即使你每次都缓存特殊字符串也没用,因为它的值不一样,比如我们的数据库用户id是111,112,113,114依次递增,但是别人要攻击你,故意拿-100,-936,-545这种乱七八糟的key来查询,这时候redis和数据库这种值都是不存在的,人家每次拿的key也不一样,你就算缓存了也没用,这时候数据库的压力是相当大,比上面这种情况可怕的多,怎么办呢,这时候我们今天的主角布隆过滤器就登场了。。

从一道面试题说起

问:如何在海量元素中(例如 10 亿无序、不定长、不重复)快速判断一个元素是否存在?好,我们最简单的想法就是把这么多数据放到数据结构里去,比如List、Map、Tree,一搜不就出来了吗,比如map.get(),我们假设一个元素1个字节的字段,10亿的数据大概需要 900G 的内存空间,这个对于普通的服务器来说是承受不了的,当然面试官也不希望听到你这个答案,因为太笨了吧,我们肯定是要用一种好的方法,巧妙的方法来解决,这里引入一种节省空间的数据结构,位图,他是一个有序的数组,只有两个值,0 和 1。0代表不存在,1代表存在。


 

选择满足你需求的数据仓库

各种规模的供应商都在试图利用企业对商业智能的兴趣赚钱,他们向IT社区提供大量的大数据产品。在这个竞争激烈的市场,所有现代数据仓库平台供应商都被迫加快发布新产品以及增强现有产品。

我们会看到,这些竞争对手经常发布功能,以扩展其产品的管理、数据集成、元数据管理、分析和信息治理功能。最新趋势是AI和机器学习增强工具,可帮助员工收集、准备和分析大数据并分享业务见解。

为了正确地为其企业选择和部署最合适的大数据平台,IT部门必须对竞争产品进行全方位的对比分析。由于云计算和内部部署架构以及数据基础架构的组合种类繁多,因此评估团队需要扩展其分析范围,以包括现代数据仓库生态系统。

评估团队不仅需要了解现代数据仓库产品,而且团队成员还必须学习该产品的基础架构的复杂性。选择正确的大型数据存储生态系统对于存储和处理大型数据的任何应用程序的成功至关重要,该生态系统包括类型、平台、服务器、存储架构、现场或云基础架构,数据存储和辅助工具集。

数据仓库评估技巧

  • 遵循标准化的产品评估方法以加快选择过程,其中包括选择合适的评估团队,进行全面的需求分析并创建一组加权评估指标。使用评估指标创建供应商候选清单,并对这些供应商进行深入比较;
  • 了解您的业务需求。你是在寻找专门满足某些应用程序独特需求的专用数据仓库,还是提供广泛功能的通用平台?
  • 哪些类型的用户将访问你的现代数据仓库-群众数据科学家、执行管理人员、销售团队、车间人员或用户?在平台和分析工具的选择中,最终用户的需求将发挥重要作用;
  • 你是否正在寻找可支持整个大数据处理生命周期(从初识数据收集到显示)的供应商产品,还是同类最佳解决方案?
  • 你所选择的产品提供哪些数据清洗和高级数据分析功能?
  • 全面评估供应商向你收取的费用的方式,以防止预算超支。大数据平台的成本模型涵盖从简单的软件购买到基于云的系统,这些系统均按查询、存储和计算或处理时间收费;
  • 估计初始和将来的数据存储量和工作量。你是否可简单地扩展平台以适应不断增长的数据量和工作量?
  • 访问供应商、同行测评和大数据讨论论坛网站。Gartner的Peer Reviews网站是了解IT社区如何评价各种供应商产品的绝佳场所。供应商还经常购买Gartner数据仓库魔力象限,并提供给公众下载;
  • 根据你的偏好,你将确定供应商是否支持云计算、内部部署还是两种环境;
  • 该平台是否为系统和用户管理以及平台监控提供强大的界面?
  • 该平台是否支持多种数据类型?
  • 该平台是否支持批处理和实时数据加载?
  • 是否提供工作负载管理功能?
  • 该产品是否符合企业、特定行业或政府的法规要求?


(编辑:盐城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读