【问题标题】:Can Bloom Filters in BigTable be used to filter based only on row ID?BigTable 中的布隆过滤器能否仅基于行 ID 进行过滤?
【发布时间】:2019-01-20 20:09:01
【问题描述】:

BigTable 使用 Bloom 过滤器来允许点读取以避免访问不包含给定键列对中任何数据的 SSTable。如果查询仅指定行 ID 而没有列 ID,是否也可以使用这些 Bloom 过滤器来避免访问 SSTables?

BigTable 使用行列对作为插入其布隆过滤器的键。这意味着查询可以将这些过滤器用于指定行列对的点读取。

现在,假设我们有一个查询,仅根据行 ID 获取行的所有列。据我所知,此查询事先不知道属于该行的列是什么,因此它可能无法使用布隆过滤器,因为它无法枚举可能的行列对。结果,这样的查询可能无法使用布隆过滤器,因此效率会降低。

理论上,BigTable 已经可以通过将行 ID 插入到布隆过滤器中来解决这个问题,但我无法判断当前的实现是否这样做。

这个问题对于设计在 BigTable 上运行的高效查询可能很重要。任何提示都会很棒。

【问题讨论】:

    标签: bigtable google-cloud-bigtable bloom-filter


    【解决方案1】:

    HBase Bloom 过滤器同时进行行和行列检查。 HBase 是基于 BigTable 论文构建的,因此 BigTable 很可能也会这样做。

    HBase Bloom Filter 是一种节省空间的机制,用于测试 StoreFile 是否包含特定的行或行列单元格。

    参考:https://learning.oreilly.com/library/view/hbase-administration-cookbook/9781849517140/ch09s11.html

    然而,2006 年的 BigTable 论文确实只提到了使用布隆过滤器的基于行列的搜索。
    https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf

    【讨论】:

    猜你喜欢
    • 2017-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多