Cassandra Java Driver- QueryBuilder API vs PreparedStatement



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

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

上面的文档没有说明使用QueryBuilder API优于PreparedStatements的任何优点,除了以编程方式编写查询,这不是一个很大的优势(在我的书中)。

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

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'))

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

最新更新