| 
  
   Size: 4483 
  
  Comment:  
 | 
  
   Size: 4693 
  
  Comment:  
 | 
| Deletions are marked like this. | Additions are marked like this. | 
| Line 6: | Line 6: | 
https://docs.datastax.com/en/cql/3.3/cql/ddl/dataModelingApproach.html Data in Cassandra is often arranged as one query per table, and data is repeated in many tables, a process known as denormalization.  | 
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.
https://docs.datastax.com/en/cql/3.3/cql/ddl/dataModelingApproach.html
Data in Cassandra is often arranged as one query per table, and data is repeated in many tables, a process known as denormalization.
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
 ./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
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
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
 
