= Cassandra =
The Apache Cassandra Project develops a
highly scalable second-generation distributed database,
bringing together Dynamo's fully distributed design and
Bigtable's ColumnFamily-based data model.

== Slackbuild ==
 * cd /tmp
 * wget  http://slackbuilds.org/slackbuilds/14.1/system/apache-cassandra.tar.gz
 * tar xvzf apache-cassandra.tar.gz
 * wget http://archive.apache.org/dist/cassandra/2.0.7/apache-cassandra-2.0.7-bin.tar.gz
 * ./apache-cassandra.SlackBuild 
 * installpkg /tmp/apache-cassandra-2.0.7-noarch-1_SBo.tgz

== Node up ==
 * useradd cassandra
 * mkdir /home/cassandra
 * cd /home/cassandra
 * chown cassandra . -R
 * mkdir /var/lib/cassandra
 * cd /var/lib/cassandra
 * chown cassandra . -R
 * mkdir /var/log/cassandra
 * cd /var/log/cassandra
 * chown cassandra . -R
 * JAVA_HOME=/opt/java /opt/apache-cassandra/bin/cassandra -f

== cqlsh ==
http://wiki.apache.org/cassandra/GettingStarted

 * bin/cqlsh

{{{#! sql
CREATE KEYSPACE mykeyspace WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };
describe keyspaces;
USE mykeyspace;
CREATE TABLE users (  user_id int PRIMARY KEY,  fname text,  lname text );
INSERT INTO users (user_id,  fname, lname)  VALUES (1745, 'john', 'smith');
INSERT INTO users (user_id,  fname, lname)  VALUES (1744, 'john', 'doe');
INSERT INTO users (user_id,  fname, lname)  VALUES (1746, 'john', 'smith');
describe tables;
SELECT * FROM users;
desc table users;
CREATE INDEX ON users (lname);
desc table users;
SELECT * FROM users WHERE lname = 'smith';
}}}

== Python sample app ==
http://datastax.github.io/python-driver/getting_started.html

 * cd /tmp/
 * wget http://slackbuilds.org/slackbuilds/14.1/libraries/libev.tar.gz
 * tar xvzf libev.tar.gz 
 * cd libev
 * wget http://dist.schmorp.de/libev/Attic/libev-4.15.tar.gz
 * ./libev.SlackBuild 
 * installpkg /tmp/libev-4.15-i486-2_SBo.tgz
 * easy_install pip # if not installed
 * pip install cassandra-driver
 * pip install blist

=== python3 cass.py ===
{{{#!highlight python
from cassandra.cluster import Cluster

cluster = Cluster(['127.0.0.1'])
session = cluster.connect('mykeyspace')
rows = session.execute('SELECT  user_id , fname , lname FROM users')
for user_row in rows:
    print('%d %s %s'%( user_row.user_id, user_row.fname, user_row.lname) )
}}}

== Python types conversion ==


||'''Python Type''' ||'''CQL Literal Type'''||
||None	|| NULL ||
||bool	|| boolean||
||float   || float  double||
||int     || int||
||long   || bigint varint counter||
||decimal.Decimal ||	decimal||
||str unicode  || ascii  varchar text||
|| buffer bytearray || blob||
||date datetime || timestamp||
||list tuple generator || list||
||set frozenset  || set||
||dict  OrderedDict || map||
||uuid.UUID || timeuuid uuid ||