11

lái xe Datastax Java (cassandra-lái-core 2.0.2) cho Cassandra hỗ trợ PreparedStatements cũng như QueryBuilder API. Bất kỳ lợi thế cụ thể bằng cách sử dụng một trong những khác? Nhược điểm?Cassandra Java Driver- QueryBuilder API vs PreparedStatements

Tài liệu: http://www.datastax.com/documentation/developer/java-driver/2.0/common/drivers/reference/driverReference_r.html

Các doc trên không nêu bất kỳ ưu điểm so với sử dụng QueryBuilder API trên PreparedStatements, khác hơn là viết các truy vấn theo chương trình, mà không phải là nhiều của một lợi thế (trong cuốn sách của tôi).

Hãy chia sẻ suy nghĩ và kinh nghiệm của bạn. Cảm ơn.

Trả lời

17

PreparedStatements cung cấp cho bạn hiệu suất tăng vì những gì bạn đang thực hiện đã được lưu trữ phía máy chủ (giả sử bạn sử dụng lại các câu lệnh). Bạn chỉ cần gắn kết các giá trị cụ thể mới và thực hiện lại câu lệnh.

Trình tạo truy vấn là cách sáng tạo nhất để tạo câu lệnh chuỗi được thực hiện như không cần chuẩn bị.

Từ một quan điểm hiệu suất tùy chọn đầu tiên là nhanh nhất, thứ hai và thứ ba là giống hệt nhau:

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

Không quá chắc chắn nếu điều này là có liên quan nhưng có một ví dụ tốt về việc chuyển từ chuỗi thực hiện các truy vấn xây dựng với các trình tạo truy vấn để sử dụng các câu lệnh đã chuẩn bị sẵn trong this ycsb client.

+2

Lưu ý, bạn có thể tạo các đối tượng '' 'PreparedStatement''' từ chuỗi' '' QueryBuilder''' để dễ dàng di chuyển từ '' 'QueryBuilder''' sang' '' PreparedStatement''' – Drew

Các vấn đề liên quan