电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOCX文档下载
分享到微信 分享到微博 分享到QQ空间

阿里面试题亿级表合并引发的思考之 SQL Bloom Filter(一).docx

  • 资源ID:141583648       资源大小:98.18KB        全文页数:6页
  • 资源格式: DOCX        下载积分:10金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要10金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

阿里面试题亿级表合并引发的思考之 SQL Bloom Filter(一).docx

阿里面试题亿级表合并引发的思考之 SQL Bloom Filter(一)很久之前,我写了一次亲身面试经历,在面试阿里的时候,有一题引起了我的思考,详情看这里:回忆当年阿里的一道 SQL 面试题,亿级表合并当时获得了很多读者朋友的反馈,大家兴趣盎然,回答都很详细,看得出来都很用心。包括知乎以及 CSDN 上的反应都很强烈。各自对数据库原理的理解不同,因此解法也都各异。有一位朋友的解法引起了我相当大的兴趣,且不说最终解法是否正确,单看他的思路就很奇特,我贴出来大家一起分析:这位朋友提到的 IBLT,是个比较新的数据结构,始创于2011年,主要应用场景来自于区块链共识算法。更深入的不在这里讨论,涉及区块链或者比特币的事情,暂时回避。有兴趣的朋友可以看下面的文章:https:/gist.github.com/gavinandresen/e20c3b5a1d4b97f79ac2Set reconciliation means finding the difference between two sets of data.Invertible Bloom Lookup Tables (IBLTs) are a new (described in 2011) data structure that can be used to solve the set reconciliation problem.https:/gist.github.com/gavinandresen/e20c3b5a1d4b97f79ac2随着深入挖掘下去,IBLT 引出来一个基础概念,就是布隆过滤器(Bloom Filter),当然如果是科班的同学,对布隆肯定很熟悉。它的原理是这样的:首先,使用位数组,有向的记录每个元素的hash值位置:从左往右,以0-7记录每个比特(bit)的位置,每个比特位置可以存储0或者1,有1的地方代表了某个值可能出现,这个值究竟有多少个1组成,分布在哪些位置,都是由hash函数决定。第二要素,hash 函数比如我使用简单的取模函数,将每个字母的ASCII码值取模作为hash值,存到这位数组中,可以得到这样的结果:hash函数我们采用 T-SQL来写:CREATE FUNCTION dbo.fnHashByNine( Number Int ) RETURNS int AS BEGIN RETURN ( SELECT Number % 9 ) END GO取样字母的ASCII码HASH值求法: SELECT Name ,ASCII(Name) AS AsciiMark ,dbo.fnHashByNine(ASCII(Name) AS Remainder FROM ( SELECT DISTINCT LEFT(Name,1)AS Name FROM sys.objects ) RSL ORDER BY 2 ASC 最终排列到位数组,就成了刚才的那图:第三要素,匹配输入的字母:假设我们要判断 s(小写)是否在当前的集合中时, 首先求其 ASCII码,是 102, 取模后hash值为 7,此时 7 个位置,正好是空着,那意味着s不在此位数组中。众所周知,数据下标访问元素,时间复杂度为O(1),时间恒定。聪明如你肯定会想到,如果能将这种方法用在判断两个集合中数据重合的可能性,那速度将会超快。是的,真如你所愿,各种数据库都实现了这类算法。我们将一一将其拨开来讲,这是第一篇。猜你喜欢:本周阶段性的收获颇丰,我满意了本号精华合集

注意事项

本文(阿里面试题亿级表合并引发的思考之 SQL Bloom Filter(一).docx)为本站会员(A***)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.