A keyspace is a collection of related tables, equivalent to a database in a relational system. To create the keyspace for our MyStatus application, issue the following statement in the CQL shell:
CREATE KEYSPACE "my_status" WITH REPLICATION = { 'class': 'SimpleStrategy', 'replication_factor': 1 };
Here we created a keyspace called my_status
, which we will use for the remainder of this book. When we create a keyspace, we have to specify replication options. Cassandra provides several strategies for managing replication of data; SimpleStrategy
is the best strategy as long as your Cassandra deployment does not span multiple data centers. The replication_factor
value tells Cassandra how many copies of each piece of data are to be kept in the cluster; since we are only running a single instance of Cassandra, there is no point in keeping more than one copy of the data. In a production deployment, you would certainly want a higher replication factor; 3 is a good place to start.
Note
A few things at this point are worth noting about CQL's syntax:
It's syntactically very similar to SQL; as we further explore CQL, the impression of similarity will not diminish.
Double quotes are used for identifiers such as keyspace, table, and column names. As in SQL, quoting identifier names is usually optional, unless the identifier is a keyword or contains a space or another character that will trip up the parser.
Single quotes are used for string literals; the key-value structure we use for replication is a map literal, which is syntactically similar to an object literal in JSON.
As in SQL, CQL statements in the CQL shell must terminate with a semicolon.
Once you've created a keyspace, you would want to use it. In order to do this, employ the USE
command:
USE "my_status";
This tells Cassandra that all future commands will implicitly refer to tables inside the my_status
keyspace. If you close the CQL shell and reopen it, you'll need to reissue this command.