BigTable 是否使用 Tiered 或 Leveled LSM-tree 压缩?
Does BigTable use Tiered or Leveled LSM-tree compaction?
Google BigTable是一个以LSM-tree为核心数据结构进行存储的系统。 LSM-tree 可以使用不同的合并策略。两种最常见的是 (1) 读取优化程度更高的分级合并,以及 (2) 写入优化程度更高的分层合并。这些合并策略可以通过调整相邻级别之间的大小比率来进一步配置。
我无法在任何地方找到 BigTable 在这些方面的默认行为是什么,以及是否可以对其进行调整。因此,很难理解它的默认性能属性以及如何使它们适应不同的工作负载。
通过分层合并,一层 LSM-tree 收集 运行s 直到达到容量。然后它合并这些 运行 并将生成的 运行 刷新到下一个更大的级别。每一级最多有O(T * log_T(N)) 运行s,写入成本为O(log_T(N) / B),其中N为数据大小,B为块大小,T为层间大小比。
通过分层合并,LSM-tree 的每一层都有一个 运行。一旦新的 运行 进入关卡,合并就会发生,如果关卡超过容量,生成的 运行 将刷新到下一个更大的关卡。每层至多有O(log_T(N))运行s,写入成本为O((T * log_T(N)) / B)。
因此,这些方案具有不同的 read/write 性能属性。但是,我一直无法找到有关 Google 的 BigTable 是使用分级合并还是分层合并以及默认大小比率 T 是多少的资料?另外,系统的这些方面是固定的还是可调的?
Google Cloud Bigtable 使用的合并压缩行为和策略目前无法由最终用户通过 Cloud Bigtable API 进行调整,尽管支持 Cloud Bigtable 产品的底层系统是动态的并且可以通过我们的工程进行调整和运营团队。
这是一篇关于在 Bigtable 中探索的合并压缩算法的不同方法的近期论文:
在线 Bigtable 合并压缩
https://arxiv.org/pdf/1407.3008.pdf
我们采用多种专有方法来动态调整和调整合并压缩行为。如果您确实有与系统使用相关的更具体的问题,或者遇到合并压缩行为的问题,您当然可以随时提交支持案例。
Google BigTable是一个以LSM-tree为核心数据结构进行存储的系统。 LSM-tree 可以使用不同的合并策略。两种最常见的是 (1) 读取优化程度更高的分级合并,以及 (2) 写入优化程度更高的分层合并。这些合并策略可以通过调整相邻级别之间的大小比率来进一步配置。
我无法在任何地方找到 BigTable 在这些方面的默认行为是什么,以及是否可以对其进行调整。因此,很难理解它的默认性能属性以及如何使它们适应不同的工作负载。
通过分层合并,一层 LSM-tree 收集 运行s 直到达到容量。然后它合并这些 运行 并将生成的 运行 刷新到下一个更大的级别。每一级最多有O(T * log_T(N)) 运行s,写入成本为O(log_T(N) / B),其中N为数据大小,B为块大小,T为层间大小比。
通过分层合并,LSM-tree 的每一层都有一个 运行。一旦新的 运行 进入关卡,合并就会发生,如果关卡超过容量,生成的 运行 将刷新到下一个更大的关卡。每层至多有O(log_T(N))运行s,写入成本为O((T * log_T(N)) / B)。
因此,这些方案具有不同的 read/write 性能属性。但是,我一直无法找到有关 Google 的 BigTable 是使用分级合并还是分层合并以及默认大小比率 T 是多少的资料?另外,系统的这些方面是固定的还是可调的?
Google Cloud Bigtable 使用的合并压缩行为和策略目前无法由最终用户通过 Cloud Bigtable API 进行调整,尽管支持 Cloud Bigtable 产品的底层系统是动态的并且可以通过我们的工程进行调整和运营团队。
这是一篇关于在 Bigtable 中探索的合并压缩算法的不同方法的近期论文:
在线 Bigtable 合并压缩 https://arxiv.org/pdf/1407.3008.pdf
我们采用多种专有方法来动态调整和调整合并压缩行为。如果您确实有与系统使用相关的更具体的问题,或者遇到合并压缩行为的问题,您当然可以随时提交支持案例。