【问题标题】:Cassandra Java Driver- QueryBuilder API vs PreparedStatementsCassandra Java 驱动程序 - QueryBuilder API 与 PreparedStatements
【发布时间】:2014-09-15 11:34:48
【问题描述】:

Cassandra 的 Datastax Java 驱动程序 (cassandra-driver-core 2.0.2) 支持 PreparedStatements 以及 QueryBuilder API。使用其中一个有什么特定的优势吗?缺点?

文档:http://www.datastax.com/documentation/developer/java-driver/2.0/common/drivers/reference/driverReference_r.html

上述文档没有说明使用 QueryBuilder API 优于 PreparedStatements 的任何优势,除了以编程方式编写查询之外,这并不是什么优势(在我的书中)。

请分享您的想法和经验。谢谢。

【问题讨论】:

    标签: java cassandra prepared-statement cassandra-2.0 datastax-java-driver


    【解决方案1】:

    PreparedStatements 可以提高性能,因为您正在执行的内容已经存储在服务器端(假设您重复使用这些语句)。您只需绑定新的具体值并重新执行该语句。

    查询构建器是一种创建要按原样执行的字符串语句的更好方法,无需任何准备。

    从性能的角度来看,第一个选项最快,第二个和第三个是相同的:

    // below prepared statement has already been prepared, we're now just re-using
    PreparedStatement ps = session.prepare("SELECT * FROM users WHERE uname=?");
    
    1) session.execute(ps.bind('david');
    2) session.execute("SELECT * FROM users WHERE uname=david");
    3) session.exectute(QueryBuilder.select()
                                    .all()
                                    .from("users")
                                    .where(QueryBuilder.eq('uname', 'david'))
    

    不太确定这是否相关,但有一个很好的例子,从使用查询构建器构建的查询的字符串执行迁移到在this ycsb client 中使用预先构建的准备好的语句。

    【讨论】:

    • 注意,你可以从QueryBuilder链创建PreparedStatement对象,所以很容易从QueryBuilder移动到PreparedStatement
    猜你喜欢
    • 2021-02-17
    • 2016-10-06
    • 2016-08-04
    • 1970-01-01
    • 2021-02-09
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    相关资源
    最近更新 更多