【发布时间】:2020-12-03 19:44:51
【问题描述】:
来自 CBT 的文档
// READING OP HERE
timestamp := bigtable.Now()
mut := bigtable.NewMutation()
mut.Set(columnFamilyName, "os_name", timestamp, []byte("android"))
filter := bigtable.ChainFilters(
bigtable.FamilyFilter(columnFamilyName),
bigtable.ColumnFilter("os_build"),
bigtable.ValueFilter("PQ2A\\..*"))
conditionalMutation := bigtable.NewCondMutation(filter, mut, nil)
rowKey := "phone#4c410523#20190501"
if err := tbl.Apply(ctx, rowKey, conditionalMutation); err != nil {
return fmt.Errorf("Apply: %v", err)
}
fmt.Println("Successfully updated row's os_name")
我想知道这是否也启用并发控制,即如果我们按顺序进行
#1 - 阅读
#2 - 读取时修改
#3 - 写
如果两个线程同时尝试修改同一行,tbl.Apply 会失败吗?
【问题讨论】:
标签: go google-cloud-platform google-cloud-bigtable bigtable