Cassandra Intro

@beckje01

http://bit.ly/tcjug-cassandra

Agenda

  1. whoami
  2. What is Cassandra
  3. Glossary
  4. Cassandra Current State
  5. Connection Options
  6. Data Modeling
  7. Anti Patterns
  8. Links

whoami

Jeff Beck

beckje01 on GitHub and Twitter

TechLead at ReachLocal

What is Cassandra

  • Highly-Available, Distributed, Tuned Consistency
  • Master-less Replication
  • redundancy configurable per table
  • Cluster can span DCs
  • Flexible schema

Consistency

Great talk on Cassandra consistency, Eventual Consistency != Hopeful Consistency

Video Slides

OpsCenter

Links

Extras

CREATE KEYSPACE Simple
        WITH REPLICATION = {'class' : 'SimpleStrategy',
                            'replication_factor': 1};

CREATE TABLE Person (
     firstName varchar,
     lastName varchar,
     age int,
    PRIMARY KEY (lastName,firstName)
); 
insert into person (firstname, lastname, age) values ('Jeff','Beck',30) ;
insert into person (firstname, lastname, age) values ('Bob','Beck',60) ;
create table alist (
 page varchar,
 visits list <timestamp>,
 PRIMARY KEY(page)
);

Append Item to list

update alist set visits=visits+['2014-04-14 19:34:20-0500'] where page='/fake' ;

Update.Assignments updateAssignments = QueryBuilder.update(keyspaceName, table).with(); for (PersistentProperty prop : persistentEntity.getPersistentProperties()){ updateAssignments = updateAssignments.and(QueryBuilder.set(prop.getName(), convertToCassandraType(entry.get(prop.getName())))); }

Statement update = updateAssignments.where(QueryBuilder.eq("id", UUID.fromString(uuid.toString())));

session.execute(update);

      ByteBuffer bb = row.getBytes(columnName);
      byte[] result = new byte[bb.remaining()];
      bb.get(result);
      ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(result);
      ObjectInputStream ois = new ObjectInputStream(byteArrayInputStream);
      o = ois.readObject();    

Local Cassandra Meetup

http://www.meetup.com/Minneapolis-St-Paul-Cassandra-Meetup/ http://bit.ly/C-MSP