Apache Cassandra Learning Step by Step (2): Core Concepts
====15 Feb 2012, by Bright Zheng (IT进行时)====
3. Core Concepts
3.1. Keyspace
3.1.1. Intro
A keyspace is the first dimension of the Cassandrahash, and is the container for the ColumnFamilies. Keyspaces are of roughly thesame granularity as a schema or database (i.e. a logical collection of tables)in the RDBMS world. They are the configuration and management point for columnfamilies, and is also the structure on which batch inserts are applied. In mostcases you will have one Keyspace for an application.
3.1.2. CLI
[default@unknown] drop keyspace Tutorial; 876ee520-571f-11e1-0000-242d50cf1ffd Waiting for schema agreement... ... schemas agree across the cluster [default@unknown] create keyspace Tutorial ... with strategy_options = [{replication_factor:1}] ... and placement_strategy = 'org.apache.cassandra.locator.SimpleStrategy'; WARNING: [{}] strategy_options syntax is deprecated, please use {} 8daea060-571f-11e1-0000-242d50cf1ffd Waiting for schema agreement... ... schemas agree across the cluster [default@unknown] use Tutorial; Authenticated to keyspace: Tutorial [default@Tutorial] |
3.2. Column Family
3.2.1. Intro
A column family is a container for columns, somethinglike the TABLE in a relational system.
Model representation:
ColumnFamily | |
key | list |
binary | 1 .. * Columns |
Data representation:
ColumnFamily | |||
key | Columns | ||
1 | name | value | timestamp |
| "firstname" | "Ronald" | 1270073054 |
| "lastname" | "Mathies" | 1270073054 |
| "birthday" | "01/01/1978" | 1270073054 |
2 | name | value | timestamp |
| "firstname" | "John" | 1270084021 |
| "lastname" | "Steward" | 1270084021 |
| "birthday" | "01/01/1982" | 1270084021 |
3.2.2. CLI
[default@Tutorial] drop column family StateCity; StateCity not found in current keyspace. [default@Tutorial] create column family StateCity ... with comparator = LongType ... and default_validation_class = 'UTF8Type' ... and key_validation_class = 'UTF8Type'; d3cfa8f0-571f-11e1-0000-242d50cf1ffd Waiting for schema agreement... ... schemas agree across the cluster [default@Tutorial] |
Where:
1. Comparatoris used to validate and compare/sort Column names in the CF. It has followingsupported types:
Type | Description |
BytesType | Simple non-validating byte comparison (Default) |
AsciiType | Similar to BytesType, but validates that input is US-ASCII |
UTF8Type | UTF-8 encoded string comparison |
LongType | Compares values as 64 bit longs |
LexicalUUIDType | 128 bit UUID compared by byte value |
TimeUUIDType | Timestamp compared 128 bit version 1 UUID |
Note:
- The above types are changeable subject to different versions.
- It is also valid to specify the fully-qualified class name to a customized class that extends org.apache.Cassandra.db.marshal.AbstractType.
3.3. Column
3.3.1. Intro
A Column consists of a name, value and a timestamp.
Model representation:
Column | |
name | Binary |
value | Binary |
timestamp | i64 |
Data representation:
Column | ||
name | value | timestamp |
"firstname" | "Ronald" | 1270073054 |
3.3.2. CLI
N/A
3.4. SuperColumn
3.4.1. Intro
A SuperColumn is very similar to a ColumnFamily, itconsists of a key and a list of Columns.
Model representation:
SuperColumn | |
key | list |
binary | 1 .. * Columns |
Data representation:
SuperColumn | |||
key | Columns | ||
1 | name | value | timestamp |
| "firstname" | "Ronald" | 1270073054 |
| "lastname" | "Mathies" | 1270073054 |
| "birthday" | "01/01/1978" | 1270073054 |
2 | name | value | timestamp |
| "firstname" | "John" | 1270084021 |
| "lastname" | "Steward" | 1270084021 |
| "birthday" | "01/01/1982" | 1270084021 |
The only difference to ColumnFamily is the usage. ASuperColumn is used within a ColumnFamily. So it adds an extra layer in yourdata structure, instead of having only a row which consists of a key and a listof columns. We can now have a row which consists of a key and a list of supercolumns which by itself has keys and per key a list of columns.
Once the ColumnFamily uses SuperColumn, the columntype must be “Super”. By default the column type is “Standard” which meanscommon Column.
3.4.2. CLI (TODO)
To be added here!
3.5. Others?
Please refer to http://wiki.apache.org/cassandra/APIfor more.