加入收藏 | 设为首页 | 会员中心 | 我要投稿 草根网 (https://www.0372zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数据系统中的数据结构 (I)- 稀疏位图

发布时间:2022-12-12 11:24:49 所属栏目:大数据 来源:
导读:  位图(/)在工程中应用广泛(如搜索引擎中的 list),同时也是面试中一个重要考点(去看《编程珠玑》)

  位图在求交(),求并(union)计算时有很好的性能,但如果数据集分布稀疏时大数据 操作系统,也
  位图(/)在工程中应用广泛(如搜索引擎中的 list),同时也是面试中一个重要考点(去看《编程珠玑》)
 
  位图在求交(),求并(union)计算时有很好的性能,但如果数据集分布稀疏时大数据 操作系统,也会浪费较多空间。例如,当数据取值范围为[0, 2^32-1],数据个数在1000w左右时,位图占用512MB,其中0的个数只占0.2%,空间浪费相当严重。
 
  为了解决空间浪费大数据 操作系统,显然位图需要进行压缩。 的 是众多压缩(稀疏)位图实现中的性能最好的一种:
 
  支持动态修改位图(静态的位图有其它压缩方式)利用SIMD加速位图操作的数据结构
 
  明确面向稀疏位图,使用之前你要明确数据的分布/数量,否则可能占用比未压缩位图更多的空间和耗费更多的操作时间。
 
  思路是将取值范围分片,每片大小相同,可容纳2^16个数。根据范围内实际数据的个数/分布选择最紧凑的存储形式:
 
  大数据 操作系统_大数据修炼系统_大数据风控系统架构
 
  将从一层的连续存储,转换为一个二级的存储结构
 
  这里另一个重要参数是如何依据数据个数来判定使用位图还是数组。 选择4096作为阈值。
 
  大数据风控系统架构_大数据修炼系统_大数据 操作系统
 
  提供O(logn)的查找性能:
 
  的性能
 
  使用了SIMD对操作进行了加速,但是SIMD是一门相当trick的技术,有机会可以单独再分析SIMD对性能的影响(尤其是/union)。
 
  在5.0中引入了缓存,并对进行了性能评测,得到了一些有趣的结论。
 
  从评测效果来看,并非在所有场景下均具备最优性能,但是一个性能衰退很慢的一种实现,在确定数据集比较稀疏同时要进行修改时,是一个不错的选择。
 
  结论
 
  除了使用了,时序数据库也使用来索引,还有Spark等等等,这些都实打实表明并非一个玩具,而是一个工业强度的实现。
 
  目前性能最好实现是C/C++版本的,除此以为还有Java/Go等一系列移植。不妨将放进你的工具箱,然后耐心等待使用它的时机。
 

(编辑:草根网)

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