【问题标题】:Atomic way of inserting a row if not exist in bigtable如果 bigtable 中不存在则插入行的原子方式
【发布时间】:2021-12-18 06:18:37
【问题描述】:

如果 bigtable 中不存在,我们想插入一行。我们的想法是使用带有 onNoMatch 插入的CheckAndMutateRow api。我们正在使用nodejs sdk,想法是执行以下操作(它似乎有效,但我们不知道操作的原子性)

 const row = table.row('phone#4c410523#20190501');
  const filter = [];

  const config = {
    onNoMatch: [
      {
        method: 'insert',
        data: {
          stats_summary: {
            os_name: 'android',
            timestamp,
          },
        },
      },
    ],
  };

  await row.filter(filter, config);

【问题讨论】:

    标签: node.js google-cloud-platform hbase bigtable


    【解决方案1】:

    CheckAndMutateRow 是原子的。基于API definition

    突变以原子方式按顺序应用,这意味着早期的突变可以被后来的突变掩盖/否定。除非通过突变显式更改,否则行中已存在的单元格将保持不变。
    提交累积的突变后,重置本地突变。

    【讨论】:

    • 性能怎么样? onNoMatch 和 onMatch 一样高效吗?
    猜你喜欢
    • 1970-01-01
    • 2018-09-17
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多