You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bigtable中行不存在则插入的原子实现方案,基于Node.js SDK

Bigtable 行不存在才插入的原子性说明

结论

你当前基于CheckAndMutateRow API的实现具备完全的原子性,可以放心用于仅当行不存在时插入的场景,不会出现并发竞态问题。

原理说明

  • Google Cloud Bigtable的CheckAndMutateRow本身就是单跨行的原子操作:过滤器条件判断、对应分支的修改操作会在服务端一次性完成,全程加行级锁,不会出现判断和操作中间被其他请求修改的情况。
  • 你代码中传入空过滤器filter: []的逻辑是正确的:空过滤器的匹配规则是「行存在任意单元格」,如果该行完全不存在,自然没有匹配结果,就会触发onNoMatch分支的插入逻辑,刚好匹配你“仅指定行不存在时插入”的需求。

你提供的实现代码示例

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);

补充提示

如果后续需求调整为「行存在但指定列不存在时才写入」,只需要修改filter数组的匹配规则即可,整个操作依然保持原子性。

内容的提问来源于stack exchange,提问作者Mazout

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 21:15:02