cassandra 如何处理失败的插入?
cassandra how to handle failed inserts?
可能是某个用户注册了我的应用程序。
然后我做这件事:
const query1 = INSERT INTO users_by_email ... values (...)
const query2 = INSERT INTO users_by_id ... VALUES (...)
可能查询 2 失败了。那我是什么?或者如果所有数据都正确就不会失败?
在 Cassandra 中写入可能因多种原因而失败。例如,一个节点可能会出现故障,或者节点之间可能存在网络问题。因此,不要假设如果所有数据都正确或您的查询正确,写入就会成功。
回到您的问题,应用程序应该做什么。最简单的答案是再次尝试失败的查询。
还有一件事我想告诉你,如果你想同步两个表有相同的数据,你应该使用批处理
BEGIN BATCH
INSERT INTO users_by_email ... values (...);
INSERT INTO users_by_id ... VALUES (...);
APPLY BATCH ;
还有一点,批处理不能保证您的更改会回滚。它只会通知客户端查询集失败,因此您作为客户端应该重试您的批量查询。
可能是某个用户注册了我的应用程序。
然后我做这件事:
const query1 = INSERT INTO users_by_email ... values (...)
const query2 = INSERT INTO users_by_id ... VALUES (...)
可能查询 2 失败了。那我是什么?或者如果所有数据都正确就不会失败?
在 Cassandra 中写入可能因多种原因而失败。例如,一个节点可能会出现故障,或者节点之间可能存在网络问题。因此,不要假设如果所有数据都正确或您的查询正确,写入就会成功。
回到您的问题,应用程序应该做什么。最简单的答案是再次尝试失败的查询。
还有一件事我想告诉你,如果你想同步两个表有相同的数据,你应该使用批处理
BEGIN BATCH
INSERT INTO users_by_email ... values (...);
INSERT INTO users_by_id ... VALUES (...);
APPLY BATCH ;
还有一点,批处理不能保证您的更改会回滚。它只会通知客户端查询集失败,因此您作为客户端应该重试您的批量查询。