【问题标题】:How to kow data updation is done in CQL DataStax java driver如何知道数据更新是在 CQL DataStax java 驱动程序中完成的
【发布时间】:2014-02-28 13:43:40
【问题描述】:

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

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

【问题讨论】:

    标签: cassandra cql3 datastax-java-driver


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      一般情况下,您将无法获取信息,但您仍然可以通过enable tracing 追踪它,它可以提供有关该操作的更多信息。

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

      有关详细信息,建议您通过此documentation 进行跟踪。

      【讨论】:

      • 我认为@arya 是正确的In cassandra world in general, if your update/insert call does not throw an exception, your update was successful
      • 完全正确。无论是 SQL 世界还是 NoSQL 世界,您都无法从 UPSERT 操作中检索返回信息。
      • 不要以这种方式使用跟踪。这真是个糟糕的建议。您要求 C* 执行操作,您指定操作所需的一致性(一、仲裁等),如果 C* 无法以请求的一致性执行操作,它会告诉您,否则您可以假设一切顺利。
      猜你喜欢
      • 2016-10-19
      • 2016-11-29
      • 2013-12-19
      • 2016-11-14
      • 1970-01-01
      • 2017-05-25
      • 2013-10-25
      • 2016-05-23
      • 2013-10-07
      相关资源
      最近更新 更多