Creating and updating a keyspace
Creating a keyspace is the CQL counterpart to creating an SQL database.
Creating a keyspace is the CQL counterpart to creating an SQL database, but a little different. The Cassandra keyspace is a namespace that defines how data is replicated on nodes. Typically, a cluster has one keyspace per application. Replication is controlled on a per-keyspace basis, so data that has different replication requirements typically resides in different keyspaces. Keyspaces are not designed to be used as a significant map layer within the data model. Keyspaces are designed to control data replication for a set of tables.
When you create a keyspace, specify a Replication strategy class and factor settings
for replicating keyspaces. Using the SimpleStrategy
class is fine for
evaluating Cassandra. For production use or for use with mixed workloads, use the
NetworkTopologyStrategy
class.
To use NetworkTopologyStrategy
for evaluation purposes using, for example, a
single node cluster, the default data center name is used. To use
NetworkTopologyStrategy
for production use, you need to change the default
snitch, SimpleSnitch
, to a network-aware snitch, define one or more data
center names in the snitch properties file, and use the data center name(s) to define the
keyspace; see Snitch. For example, if the cluster uses the PropertyFileSnitch, create the keyspace using the
user-defined data center and rack names in the
cassandra-topologies.properties file. If the cluster uses the Ec2Snitch, create the keyspace using EC2 data center and rack
names. If the cluster uses the GoogleCloudSnitch,
create the keyspace using GoogleCloud data center and rack names.
NetworkTopologyStrategy
,
Cassandra will fail to complete any write request, such as inserting data into a table, and
log this error message:
Unable to complete request: one or more nodes were unavailable.
NetworkTopologyStrategy
unless you define the data center names in the
snitch properties file or you use a single data center named datacenter1
.