11

Datastax जावा ड्राइवर (कैसेंड्रा-चालक-कोर 2.0.2) PreparedStatements के साथ-साथ QueryBuilder एपीआई का समर्थन करता है। एक दूसरे का उपयोग कर किसी भी विशिष्ट फायदे? नुकसान?कैसेंड्रा जावा Driver- QueryBuilder एपीआई PreparedStatements बनाम कैसेंड्रा के लिए

प्रलेखन: http://www.datastax.com/documentation/developer/java-driver/2.0/common/drivers/reference/driverReference_r.html

ऊपर डॉक (मेरी किताब में) PreparedStatements से अधिक QueryBuilder एपीआई, प्रश्नों प्रोग्राम के रूप में लेखन को छोड़कर, जो एक फायदा ज्यादा नहीं है का उपयोग करने पर किसी भी लाभ नहीं बताता है।

कृपया अपने विचार और अनुभव साझा करें। धन्यवाद।

उत्तर

17

तैयार किए गए स्तर आपको प्रदर्शन निष्पादन देता है क्योंकि आप जो निष्पादित कर रहे हैं वह पहले ही सर्वर-साइड संग्रहीत है (माना जाता है कि आप कथन का पुनः उपयोग करते हैं)। आप बस नए ठोस मूल्यों को बांधते हैं और कथन को दोबारा निष्पादित करते हैं।

क्वेरी बिल्डर किसी भी तैयारी की आवश्यकता के बिना निष्पादित करने के लिए एक स्ट्रिंग स्टेटमेंट बनाने का एक प्रशंसक तरीका है।

एक प्रदर्शन दृष्टिकोण पहला विकल्प सबसे तेज है, दूसरे और तीसरे से समान हैं:

// 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 में प्री-बिल्ट तैयार किए गए कथन का उपयोग करने के लिए क्वेरी बिल्डर।

+2

नोट, आप '' '' खरीदार 'की श्रृंखलाओं से '' 'प्रीपेडस्टेटमेंट''' ऑब्जेक्ट्स बना सकते हैं, इसलिए' '' QUERBuilder''' से '' 'PREDBilder'''' '' 'PREDBilder'''' – Drew

संबंधित मुद्दे