Keyspaces
Setting the Keyspace at Connection Time
A session can be initially connected using a supplied keyspace.
Performance Tip: An application should create a single session object per keyspace as a session object is designed to be created once, reused, and shared by multiple threads within the application.
CassSession* session = cass_session_new();
CassCluster* cluster = cass_cluster_new();
/* Configure cluster */
CassFuture* connect_future
= cass_session_connect_keyspace(session, cluster, "keyspace1");
/* Handle connect future */
cass_future_free(connect_future);
cass_session_free(session);
cass_cluster_free(cluster);
Changing Keyspaces
You can specify a keyspace to change to by executing a USE
statement on a connection session object.
void use_keyspace(CassSession* session) {
CassStatement* use_statement
= cass_statement_new("USE keyspace1", 0);
CassFuture* use_future
= cass_session_execute(session, use_statement);
/* Check future result... */
cass_statement_free(use_statement);
cass_future_free(use_future);
}
Be very careful though: if the session is shared by multiple threads, switching the keyspace at runtime could easily cause unexpected query failures.
Single Session and Multiple Keyspaces
It is possible to interact with multiple keyspaces using a single session object by fully qualifying the table names in your queries e.g. keyspace_name.table_name
.
Examples
SELECT * FROM keyspace_name.table_name WHERE ...;
INSERT INTO keyspace_name.table_name (...) VALUES (...);
Creating Keyspaces and Tables
It is also possible to create keyspaces and tables by executing CQL using a session object.
Examples
CREATE KEYSPACE cpp_driver
WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };
CREATE TABLE cpp_driver.contributers (
lastname text,
firstname test,
company text,
website text,
since timestamp,
last_activity timestamp
PRIMARY KEY(lastname));