11

conducente Datastax Java (cassandra-driver-nucleo 2.0.2) per Cassandra supporta PreparedStatements nonché QueryBuilder API. Qualche vantaggio specifico usando l'uno sull'altro? Svantaggi?Cassandra Java Driver- QueryBuilder API vs PreparedStatements

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

È possibile che questo documento non indica alcun vantaggio rispetto all'uso di QueryBuilder API sopra PreparedStatements, altro che scrivere query a livello di codice, che non è molto di un vantaggio (nel mio libro).

Si prega di condividere i tuoi pensieri ed esperienze. Grazie.

risposta

17

PreparedStatements offre un incremento delle prestazioni dal momento che ciò che si sta eseguendo è già memorizzato sul lato server (supponendo che si riutilizzino le istruzioni). Basta legare nuovi valori concreti e rieseguire la dichiarazione.

Il generatore di query è un modo più elaborato per creare un'istruzione di stringa che deve essere eseguita senza richiedere alcuna preparazione.

Dal punto di vista delle prestazioni la prima opzione è più veloce, il secondo e il terzo sono identiche:

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

Non troppo sicuro se questo è rilevante, ma c'è un buon esempio di migrazione da esecuzione stringa di query costruire con la query builder per utilizzare istruzioni preparate predefinite in this ycsb client.

+2

Nota, è possibile creare oggetti '' 'PreparedStatement''' dalle catene' '' QueryBuilder''', quindi è molto semplice passare da '' 'QueryBuilder'' a' 'PreparedStatement''' – Drew

Problemi correlati