Keyspace
A keyspace is a top-level namespace that defines a name, replication strategy and configurable options. SchemaBuilder offers API methods for creating, altering and dropping keyspaces.
Creating a Keyspace (CREATE KEYSPACE)
To start a CREATE KEYSPACE
query, use createKeyspace
in SchemaBuilder:
import static com.datastax.oss.driver.api.querybuilder.SchemaBuilder.*;
CreateKeyspaceStart create = createKeyspace("cycling");
Like all other CREATE
queries, one may supply ifNotExists()
to require that the keyspace should
only be created if it doesn’t already exist, i.e.:
CreateKeyspaceStart create = createKeyspace("cycling").ifNotExists();
Note that, at this stage, the query cannot be completed yet. You need to provide at least a replication strategy. The two most widely used ones are SimpleStrategy and NetworkTopologyStrategy.
To provide a replication strategy, use one of the following API methods on CreateKeyspaceStart
:
withSimpleStrategy(int replicationFactor)
withNetworkTopologyStrategy(Map<String, Integer> replications)
withReplicationOptions(Map<String, Object> replicationOptions)
For example, the following builds a completed CreateKeyspace
using NetworkTopologyStrategy
with
a replication factor of 2 in east
and 3 in west
:
CreateKeyspace create = createKeyspace("cycling")
.withNetworkTopologyStrategy(ImmutableMap.of("east", 2, "west", 3));
// CREATE KEYSPACE cycling WITH replication={'class':'NetworkTopologyStrategy','east':2,'west':3}
Optionally, once a replication factor is provided, one may provide additional configuration when creating a keyspace:
withDurableWrites(boolean durableWrites)
withOption(String name, Object value)
Altering a Keyspace (ALTER KEYSPACE)
To start an ALTER KEYSPACE
query, use alterKeyspace
:
AlterKeyspaceStart alterKeyspace = alterKeyspace("cycling");
From here, you can modify the keyspace’s replication and other settings:
withSimpleStrategy(int replicationFactor)
withNetworkTopologyStrategy(Map<String, Integer> replications)
withReplicationOptions(Map<String, Object> replicationOptions)
withDurableWrites(boolean durableWrites)
withOption(String name, Object value)
At least one of these operations must be used to return a completed AlterKeyspace
, i.e.:
alterKeyspace("cycling").withDurableWrites(true);
// ALTER KEYSPACE cycling WITH durable_writes=true
Dropping a keyspace (DROP KEYSPACE)
To create a DROP KEYSPACE
query, use dropKeyspace
:
dropKeyspace("cycling");
// DROP KEYSPACE cycling
You may also specify ifExists
:
dropKeyspace("cycling").ifExists();
// DROP KEYSPACE IF EXISTS cycling