在同一事务上读取和修改 - Bigtable

Posted

技术标签:

【中文标题】在同一事务上读取和修改 - Bigtable【英文标题】:Read And Modify on same transaction - Bigtable 【发布时间】:2019-09-12 21:26:53 【问题描述】:

我建立了一个优惠券系统并使用了 bigtable。

我的架构有两列 - 客户 ID、优惠券代码

我想查询该表以检查客户是否已经存在,如果为 true 则返回代码,如果不存在,则使用 id 修改客户 ID 单元格并返回代码。

我看到有一个选项可以在 Bigtable ReadModifyWriteRow 运算符或 CheckAndMutateRow 中执行此操作,但我没有找到任何参考。

【问题讨论】:

【参考方案1】:

Google 提供了用于 Bigtable 和 Python 的 API 文档here。这向您展示了所有可用的方法和它们引用的源代码,因此您可以轻松、更有效地使用和理解用法。

ReadModifyWriteRow 以字节形式追加或增加行中现有单元格中的数据。

CheckAndMutateRow 检查过滤器是否匹配,然后应用 2 组突变。这些是“真突变”和“假突变”。

您可以使用if 语句来实现您希望的用法。

你可以阅读CheckAndMutateRow conditional requests,也有code samples可用。

【讨论】:

谢谢,也许你的代码示例我应该如何实现它? 您可以查看ReadModifyWriteRow here 的实现和CheckAndMutateRow here 的实现。这将提供有关如何在自己的实现中实现这些方法的见解。希望这会有所帮助。

以上是关于在同一事务上读取和修改 - Bigtable的主要内容,如果未能解决你的问题,请参考以下文章

MYSOL 学习笔记之事务处理

数据库-封锁协议

数据库-封锁协议

什么是脏读,幻读和不可重复读

mysql 不同事务隔离级别

脏读相关