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
drop keyspace Tutorial;
876ee520-571f-11e1-0000-242d50cf1ffd
Waiting for schema agreement...
... schemas agree across the cluster
create keyspace Tutorial
... with strategy_options =[{replication_factor:1}]
... and placement_strategy ='org.apache.cassandra.locator.SimpleStrategy';
WARNING: [{}] strategy_options syntax isdeprecated, please use {}
8daea060-571f-11e1-0000-242d50cf1ffd
Waiting for schema agreement...
... schemas agree across the cluster
use Tutorial;
Authenticated to keyspace: 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
drop column family StateCity;
StateCity not found in current keyspace.
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
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.
页:
[1]