Cloud Bigtable docs on Single-row Transactions says:
Cloud Bigtable还支持一些需要在其他数据库中执行事务的写操作:
- 读 - 修改 - 写操作,包括增量和附加。读 - 修改 - 写操作读取现有值;增加或附加现有价值;并将更新后的值写入表中。
- 检查和变异操作,也称为条件突变或条件写入。在检查和变异操作中,Cloud Bigtable检查一行以查看它是否满足指定条件。如果满足条件,Cloud Bigtable会将新值写入该行。
因此,如果我理解正确,如果我使用“读 - 修改 - 写”或“检查和改变”操作,则需要启用单行事务。
这些操作是像CheckAndMutateRow这样的API方法,对吧?那么,如果程序使用该方法并且未启用单行事务,该怎么办?应用程序会失败吗?我正朝着正确的方向前进?
我的目标是了解应用程序配置文件中的单行事务设置的使用方式,时间和位置(在应用程序中)。
谢谢!
加布里埃尔
只有在从应用程序调用CheckAndMutateRow或ReadModifyWriteRow时才应启用单行事务,因为这些调用将在未启用设置的情况下失败。如果不使用它们,我甚至会禁用它们,因为它会减少使用复制时看到的警告数量。
请注意,Jeff在他的评论中指出,这些默认情况下已启用,特别是如果您的实例是使用单个群集创建的。这只是为了避免遗留客户端的破坏,因为这种区别在复制启动之前无关紧要。
有关此设置存在的更多颜色,请参阅here部分,了解使用复制时单行事务之间的冲突。
因此,如果我理解正确,如果我使用“读 - 修改 - 写”或“检查和改变”操作,则需要启用单行事务。
这是不正确的。使用这些API会导致单行事务,您不需要事先启用任何内容。
这些操作是像CheckAndMutateRow这样的API方法,对吗?
是。
那么,如果程序使用该方法并且未启用单行事务,该怎么办?
没有什么可以启用的。调用这些API会导致对您尝试更改的行进行原子操作。
应用程序会失败吗?
这不适用,见上文。