MoinMoin Logo
  • Comments
  • Immutable Page
  • Menu
    • Navigation
    • RecentChanges
    • FindPage
    • Local Site Map
    • Help
    • HelpContents
    • HelpOnMoinWikiSyntax
    • Display
    • Attachments
    • Info
    • Raw Text
    • Print View
    • Edit
    • Load
    • Save
  • Login

Navigation

  • Start
  • Sitemap
Revision 15 as of 2016-06-25 21:07:38
  • Cassandra

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

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

   1 from cassandra.cluster import Cluster
   2 
   3 cluster = Cluster(['127.0.0.1'])
   4 session = cluster.connect('mykeyspace')
   5 rows = session.execute('SELECT  user_id , fname , lname FROM users')
   6 for user_row in rows:
   7     print('%d %s %s'%( user_row.user_id, user_row.fname, user_row.lname) )

python3 asyncCass.py

   1 import time
   2 from cassandra.cluster import Cluster
   3 
   4 def sucessHandler(rows):
   5     print('Received data !')
   6     try:
   7         for user_row in rows:
   8             print('>>> %d %s %s'%( user_row.user_id, user_row.fname, user_row.lname) )
   9     except Exception as ex:
  10         print(ex) 
  11 
  12 def errorHandler(exception):
  13     print(exception) 
  14 
  15 if __name__=='__main__':
  16     cluster = Cluster(['127.0.0.1'])
  17     session = cluster.connect('mykeyspace')
  18     futurex = session.execute_async('SELECT  user_id , fname , lname FROM users')
  19     futurex.add_callbacks(sucessHandler,errorHandler)
  20     print('Wait 3 seconds ...')
  21     time.sleep(3)

Python types conversion

http://datastax.github.io/python-driver/getting_started.html

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

Java types conversion

http://www.datastax.com/documentation/developer/java-driver/2.0/java-driver/reference/javaClass2Cql3Datatypes_r.html

CQL3 data type

Java type

ascii

java.lang.String

bigint

long

blob

java.nio.ByteBuffer

boolean

boolean

counter

long

decimal

java.math.BigDecimal

double

double

float

float

inet

java.net.InetAddress

int

int

list

java.util.List<T>

map

java.util.Map<K, V>

set

java.util.Set<T>

text

java.lang.String

timestamp

java.util.Date

timeuuid

java.util.UUID

uuid

java.util.UUID

varchar

java.lang.String

varint

java.math.BigInteger

Export and import schema

  • echo -e "use schema;\nDESCRIBE KEYSPACE;\n" | cqlsh CassandraHost > mySchema.cdl

  • cqlsh CassandraNEWhost -f mySchema.cdl
  • MoinMoin Powered
  • Python Powered
  • GPL licensed
  • Valid HTML 4.01