我正在探索将构建在MySQL之上的应用程序移植到Spanner中,并且我不确定是否可以从MySQL数据库中复制某些功能。
基本上我们的mysql架构的简化版本看起来像这样
用户
id
姓名
余额
user_transactions
id
USER_ID
EXTERNAL_ID
量
的 user_locks
USER_ID
日期
当应用程序收到用户的事务时,应用程序启动mysql事务,更新该用户的user_lock,检查用户是否有足够的事务余额,创建新事务,然后更新余额。应用程序可能同时为用户接收事务,因此锁定会强制它们是顺序的。
是否可以在Spanner中复制它?我该怎么办?基本上如果应用程序同时收到两个事务,我想确保给他们一个订单,并且第一个事务中更改的数据传播到第二个事务。
答案 0 :(得分:0)
Cloud Spanner默认情况下会执行此操作,因为它提供了可序列化,这意味着所有事务似乎都是按顺序发生的。您可以在此处阅读有关事务语义的更多信息: https://cloud.google.com/spanner/docs/transactions#rw_transaction_semantics