BigTable:我什么时候应该启用单行事务?

问题描述 投票:1回答:2

Cloud Bigtable docs on Single-row Transactions says:

Cloud Bigtable还支持一些需要在其他数据库中执行事务的写操作:

  • 读 - 修改 - 写操作,包括增量和附加。读 - 修改 - 写操作读取现有值;增加或附加现有价值;并将更新后的值写入表中。
  • 检查和变异操作,也称为条件突变或条件写入。在检查和变异操作中,Cloud Bigtable检查一行以查看它是否满足指定条件。如果满足条件,Cloud Bigtable会将新值写入该行。

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

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

我的目标是了解应用程序配置文件中的单行事务设置的使用方式,时间和位置(在应用程序中)。

谢谢!

加布里埃尔

bigtable google-cloud-bigtable
2个回答
3
投票

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

请注意,Jeff在他的评论中指出,这些默认情况下已启用,特别是如果您的实例是使用单个群集创建的。这只是为了避免遗留客户端的破坏,因为这种区别在复制启动之前无关紧要。

有关此设置存在的更多颜色,请参阅here部分,了解使用复制时单行事务之间的冲突。


-4
投票

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

这是不正确的。使用这些API会导致单行事务,您不需要事先启用任何内容。

这些操作是像CheckAndMutateRow这样的API方法,对吗?

是。

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

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

应用程序会失败吗?

这不适用,见上文。

© www.soinside.com 2019 - 2024. All rights reserved.