BigTable:何时应启用单行交易?

时间:2019-03-22 22:03:10

标签: bigtable google-cloud-bigtable

Cloud Bigtable docs on Single-row Transactions says:

  

Cloud Bigtable还支持某些写操作,这将需要   其他数据库中的交易:

     
      
  • 读-修改-写操作,包括增量和追加。一种   read-modify-write操作读取现有值;增量或   附加到现有值;并将更新后的值写入   表。

  •   
  • 检查并变异操作,也称为条件操作   突变或有条件的写入。在检查和变异操作中,   Cloud Bigtable会检查一行以查看其是否满足指定条件。   如果满足条件,则Cloud Bigtable会将新值写入该行。

  •   

因此,如果我理解正确,那么如果我使用“读-修改-写”或“检查并突变”操作,则需要启用单行事务。

这些操作是CheckAndMutateRow之类的API方法,对吗? 那么,如果程序使用该方法并且未启用单行事务怎么办?该应用程序会失败吗?方向正确吗?

我的目标是了解如何,何时何地(在应用程序中)利用应用程序配置文件上的单行交易设置。

谢谢!

Gabriel

2 个答案:

答案 0 :(得分:3)

仅当从应用程序调用CheckAndMutateRow或ReadModifyWriteRow时,才应启用单行事务,因为在未启用设置的情况下,这些调用将失败。如果您不使用它们,我什至会禁用,因为这会减少使用复制时看到的警告数量。

请注意,Jeff在评论中指出,默认情况下已启用这些功能,特别是如果您的实例是使用单个群集创建的。这仅仅是为了避免损坏旧版客户端,因为在启动复制之前,这种区别并不重要。

有关此设置为何存在的更多信息,请参阅here部分,有关使用复制时单行事务之间的冲突。

答案 1 :(得分:-4)

  

因此,如果我理解正确,那么如果我使用“读-修改-写”或“检查并突变”操作,则需要启用单行事务。

那是不正确的。使用这些API可以进行单行交易,您无需事先启用任何功能。

  

这些操作是API方法,例如CheckAndMutateRow,对吧?

是的

  

那么,如果程序使用该方法并且未启用单行事务怎么办?

没有什么可以启用的。调用这些API会对您要更改的行进行原子操作。

  

应用程序会失败吗?

这不适用,请参见上文。