Routing queries
When using the TokenAwarePolicy
, the driver uses the RoutingKey
to determine which nodes is used as coordinator
for a given statement.
Prepared statements
When using prepared statements, the driver will determine which of the query parameters compose the partition key based on the prepared statement metadata.
Consider a table users that has a single partition key, id.
PreparedStatement prepared = session.Prepare(
"INSERT INTO users (id, name) VALUES (?, ?)");
When binding the parameters, the driver knows which parameter corresponds to the partition key.
BoundStatement bound = prepared.Bind(Guid.NewGuid(), "Franz Ferdinand");
session.Execute(bound);
As a rule of thumb, use prepared statements and the driver does all the routing for you.
Simple statements
If you need to use a simple statement with routing, you must specify the routing values.
var id = Guid.NewGuid();
var query = new SimpleStatement(
"INSERT INTO users (id, name) VALUES (?, ?)", id, "Franz Ferdinand");
// You must specify the values that compose the partition key
query.SetRoutingValues(id);
session.Execute(query);
Batch statements
If you want to enable routing for batch statements, you must specify the routing values.
var partitionKey = Guid.NewGuid();
var batch = new BatchStatement();
// ... Add statements to the query
// You must specify the values that compose the partition key
batch.SetRoutingValues(partitionKey);
session.Execute(batch);