Intro
Since I started to work in a team that deals with BigData stuff I came into contact with Apache Cassandra. After years in the relational world it took me some getting used to the many concepts that the Cassandra relies on. Actually in the relational world the concepts would be heavy anti patterns. I went over a couple of tutorials etc. for intro into the Cassandra data model I would recommend this video by Patrick McFadin:
C* Summit 2013: The World's Next Top Data Model
Basic setup
The easiest way to get the Cassandra is to download it from here: http://planetcassandra.org/Download/StartDownload
I somehow dislike when various applications write to /var/something
and having to use the root access to install something unless it's absolutely necessary. So I followed this manual to avoid this problem.
cassandra.yaml
The Cassandra is setup out of the box to support queries coming from cql shell ("cqlsh"). The goal of this blog entry is to show how to make a simple connection from node.js to the Cassandra, so there is a bit of tweaking that has to be done in order to get all this working. The necessary configuration is located in this file:
install_dir/conf/cassandra.yamlThe properties I had to change were (basically this allows logging in with users other than default):
authenticator: PasswordAuthenticator authorizer: CassandraAuthorizerAfter that going into
bin
directory and running cqlsh
will require username & password
./cqlsh -u cassandra -p cassandra
Cassandra keyspace setup
CREATE KEYSPACE test WITH REPLICATION = {'class': 'SimpleStrategy', 'replication_factor': 1}; --check if it's created with this DESCRIBE KEYSPACES; USE test; CREATE TABLE test_table ( id text, test_value text, PRIMARY KEY (id) ); INSERT INTO test_table (id, test_value) VALUES ('1', 'a'); INSERT INTO test_table (id, test_value) VALUES ('2', 'b'); INSERT INTO test_table (id, test_value) VALUES ('3', 'c'); SELECT * FROM test_table;If everything is o.k. you should see something like:
id | test_value ----+------------ 3 | c 2 | b 1 | a (3 rows)Add a testuser to make the hello world example work:
create user testuser with password 'testuser'; grant all on test.test_table to testuser;
node-cassandra-cql
I tried several Cassandra connection libraries from gitHub for the node.js and the one that
I found most easy to work with (and setup) was node-cassandra-cql by jorgebay. The story with the project is pretty much standard. Going into
new project empty directory and initializing it with init
and then installing module
with npm.
npm init npm install node-cassandra-cql #copy hellocassandra.js from #https://github.com/msval/hellocassandrainnodejs node hellocassandra.js
Anyway here's my example on gitHub.