BigTable数据加载模式优化

时间:2019-11-01 08:11:21

标签: google-cloud-bigtable bigtable

我正在将数据加载到BigTable集群(当前为开发人员实例)中。我正在使用c ++客户端放置数据,并且看到两种不同的加载模式:

  1. 使用Table类的Apply方法同时发出一个单行突变
  2. 使用Table类的BulkApply方法同时发出多个突变

我希望至少在网络使用方面,#2会更有效率,但是我不知道BigTable方面是否还有其他优化可以提高性能(例如,更好的压缩,更少的CPU / IO)压力)与选项1相比。

绝对的问题是:是否值得为BigTable客户端添加复杂性以执行批量突变,还是我应该立即触发每个突变并忘记其他任何客户端优化?

1 个答案:

答案 0 :(得分:2)

您指出,使用BulkApply可以节省网络。在客户端方面,还可以节省CPU,减少请求/响应工作,并且在Bigtable serverm中,将批量应用到同一行或连续行范围的突变。

这些节省的费用在很大程度上取决于要插入的数据的分布,并且增加的复杂性还取决于应用程序的设计方式。 C ++客户端提供了一个BulkApply方法,该方法应该很容易:

https://github.com/googleapis/google-cloud-cpp/blob/master/google/cloud/bigtable/table_bulk_apply_test.cc#L59

对于插入大量数据,Cloud Bigtable用户发现大量应用是值得的,这是因为节省了节点cpu并增加了插入吞吐量。