Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra 如何在CQL DataStax java驱动程序中进行数据更新_Cassandra_Cql3_Datastax Java Driver - Fatal编程技术网

Cassandra 如何在CQL DataStax java驱动程序中进行数据更新

Cassandra 如何在CQL DataStax java驱动程序中进行数据更新,cassandra,cql3,datastax-java-driver,Cassandra,Cql3,Datastax Java Driver,我正在使用DataStax java驱动程序进行CQL表数据的插入、更新。我的问题是如何通过ResultSet知道更新查询成功。下面的代码正在更新表中的记录 PreparedStatement statement = session.prepare(query); BoundStatement bs = new BoundStatement(statement); ResultSet resultSet = session.execute(bs.bind(key));

我正在使用DataStax java驱动程序进行CQL表数据的插入、更新。我的问题是如何通过
ResultSet
知道更新查询成功。下面的代码正在更新表中的记录

    PreparedStatement statement = session.prepare(query);
    BoundStatement bs = new BoundStatement(statement);
    ResultSet resultSet = session.execute(bs.bind(key));

一般来说,您将无法获取信息,但仍可以通过
启用跟踪
对其进行跟踪,这可以提供有关该操作的更多信息

  ResultSet results = session.execute(query);
  ExecutionInfo executionInfo = results.getExecutionInfo();
  QueryTrace queryTrace = executionInfo.getQueryTrace();

关于进一步的信息,我建议您在跟踪时进行此操作

我强烈建议不要在生产环境中启用跟踪,并在代码中使用其结果作为验证。一般来说,在cassandra world中,如果更新/插入调用未引发异常,则更新成功。您的更新是否反映在所有副本中是另一个问题。如果您想要更高的一致性,您应该使用C*的可调一致性,并在调用中使用更高的一致性级别

我认为@arya是正确的,在cassandra world中,一般来说,如果你的更新/插入调用没有抛出异常,那么你的更新就成功了。无论是SQL世界还是NoSQL世界,都不能从UPSERT操作中检索返回信息。不要以这种方式使用跟踪。这真是个糟糕的建议。你要求C*执行一个操作,你指定了你想要的操作一致性(1,quorum等),如果C*不能按照要求的一致性执行操作,它会告诉你,否则你可以假设一切都进行得很顺利。