大数据系统中的数据结构 (I)- 稀疏位图
发布时间:2022-12-12 11:24:49 所属栏目:大数据 来源:
导读: 位图(/)在工程中应用广泛(如搜索引擎中的 list),同时也是面试中一个重要考点(去看《编程珠玑》)
位图在求交(),求并(union)计算时有很好的性能,但如果数据集分布稀疏时大数据 操作系统,也
位图在求交(),求并(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等一系列移植。不妨将放进你的工具箱,然后耐心等待使用它的时机。 (编辑:草根网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐


浙公网安备 33038102330473号