如果我在 ScalarDB 中开始一个事务但不提交它会发生什么?

What happens if I start a transaction in ScalarDB but do not commit it?

我正在使用 ScalarDB 在 Cassandra 应用程序中添加 ACID 支持。如果我开始 Transaction 但不提交会发生什么。会不会有什么副作用?

例如

def somefunction=  {
    //Create the transaction
    val transaction: DistributedTransaction = transactionService.start
    if(all OK){
... //go ahead with DB operations
     commitTransaction(transaction) //OK
      (user: User, profileAndPortfolio: ExternalUserProfile, emailToken: UserToken)
    } else {
//miss commiting the transaction here
    }
  }

没有效果。事务中的所有突变都存储在客户端的内存中,直到提交。其他交易看不到它们,数据存储区 (Cassandra) 没有收到任何变更请求。

更准确地说,如果您将 SERIALIZABLE 与 read-only 事务一起使用并使用读取数据,则可能会导致异常(读取偏斜异常或 read-only 事务异常)。

因此,作为最佳实践,调用 commit 总是更好。