如何解决在BigTable中对多列进行过滤
摘自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是否会失败?
解决方法
检查然后写为条件突变的过程是作为单个原子动作完成的。如果要发送多个变异,它们可以以任意顺序执行,但是由于conditionalMutation是单个操作,因此不会受到另一个变异的影响。因此,在您的情况下,tbl.Apply应该不会失败。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。