LearningPatterns: Your Global Source for Java Training, Mentoring, and Consulting
Home | About LearningPatterns | Our Services | Contact Us | Printer Friendly Link

Courseware for Lincense:

Introduction to Cassandra 2, CQL 3, and the Datastax Java Driver

Course ID: CASDEV2

The Cassandra (C*) NoSQL database is one of the most powerful and widely used non-relational databases available today. It is a fault tolerant, highly scalable database with tunable consistency that meets the demanding requirements of the "can't fail, must scale" systems driving growth for many of the most successful enterprises of today. However, along with that capability comes a new data and programming model that many organizations lack the expertise to use in an optimal fashion.

This course provides a technical introduction to all the conceptual and practical areas needed to use Cassandra successfully. It is written expressly for the new capabilities in the C* 2.0, including CQL3.1 and the new DataStax Java driver V2. The course provides a solid foundation in the architecture and data model of C* and how to work with it. It covers CQL3 in detail, as well as important data modeling techniques to optimize your usage of the database. It includes in-depth coverage of the new Java driver for C*, as well as a full-scale application based on a stock-trading system (StockWatcher) that uses the driver.

After taking this course, you will be ready to work with Cassandra in an informed and productive manner, including using CQL3 and the new Java driver. You will be aware of some common pitfalls as well as best practices for creating your data model and applications. You will gain a clear understanding of how C* works, and be fully prepared to use it in production systems.

Course Information

Duration: 3 days

Labs: Minimum 50% hands-on labs

Prerequisites Reasonable Java experience for the Java driver labs, some knowledge of databases

Supported Platforms: Cassandra 2.0.6+ and the DataStax Java Driver 2.0.1+ on Linux Operating Systems (VM provided for labs)

Skills Gained:

Course Details appear on Next Page in Print Version

Course Details:

Session 1: Introduction to Cassandra

  • Overview
    • The motivation for non-relational data stores
    • Why relational databases don't support modern applications well
    • Cassandra at a high-level
    • Use cases
    • Features Strengths (Scalability, robustness, linear performance with scale-out), etc.
    • High Level Structure
  • Acquiring and Installing Cassandra
  • Configuring and Installation Structure
  • LABS: 
    • Configure, Start/Stop Cassandra
    • StockWatcher Demo

Session 2: Overview of Architecture and Data Model

  • Basic Cassandra Architecture
    • Cluster Structure - Nodes, Virtual Nodes, Ring Topology
    • Consistent Hashing, Tokens, Partitioners, and Data Distribution
    • Data Replication, the Replication Factor, Keyspaces
    • Consistency, the CAP theorem, Eventual Consistency
  • The C* Data Model
    • Data Model and CQL 3 Introduction
    • Using CQL and cqlsh
    • Single primary key tables and how to define them using CQL
    • Inserting Data (INSERT), Data Distribution in the Ring, Upsert
    • Querying for Data (SELECT)
    • CQL Data Types
    • Working with Primary Keys
  • LABS:
    • Spin up the Lab Cluster
    • Create Simple Tables
    • Insert/Query Tables
    • Use copy to Populate a Table

Session 3: The Cassandra Data Model

  • Compound Primary Keys
    • CQL table definition
    • The partition key and clustering columns
    • CQL Mapping vs. Internal Storage View
  • Other Capabilities
    • Expiring Columns / Time To Live (TTL)
    • Batches
    • Clustering order, ORDER BY, and CLUSTERING ORDER BY
    • Filtering results and ALLOW FILTERING
  • Composite Partition Keys
    • Motivation and uses
    • CQL Definition
    • Effect on Partitioning and Internal Storage View
  • Indexes and Secondary Indexes
    • Partition Key Indexes, token()
    • Non-primary Key (Secondary) Indexes
    • Guidelines and Querying
  • Understand and Use Counters
    • Motivation and Uses
    • Structure, Characteristics, CQL, Usage
    • Limitations
  • Understand and use collections
    • Motivation and uses
    • CQL definition (set, list, and map)
    • Inserting, Updating, Deleting with a Collection
    • Limitations and Internal Storage View
  • LABS:
    • Introduce Compound Primary Keys
    • Refine Compound Primary Key
    • Work with Composite Partition Keys
    • Secondary Indexes
    • Counters
    • Using Collections

Session 4: Data Consistency

  • Data Consistency in Cassandra
    • Tunable Consistency
    • CAP Theorem
    • Coordinators and Client Requests
    • Consistency Levels in C* - ONE, QUORUM, ALL
    • Configuring Immediate Consistency
    • CL ONE is Your Friend
    • Other CL Levels
  • Compare and Set (CAS) / Lightweight Transactions
    • Motivation and Need
    • Overview of CAS
    • Using CAS - IF NOT EXISTS, IF condition
    • Paxos - How CAS works
    • Overhead and caveats
  • Static Columns
    • Overview
    • Declaring Tables and Using Static Columns
    • Guidelines and Uses
  • Repair Mechanisms
    • Read Repair
    • Hinted Handoff
  • LABS:
    • Data Consistency
    • CAS

Session 5: How Things Work

  • Write Failures
    • Unavailability, Node Failure
    • Requirements for Writing
  • Key and Row Caches
    • Cache Overview
    • Guidelines
  • Multi-Data Center Support
    • Overview
    • Replication Factor Configuration
    • Consistency Levels - LOCAL/EACH QUORUM
  • Deletes
    • CQL
    • Tombstones
    • Issues and Guidelines
  • LABS:
    • Deletes

Session 6: The Java Driver

  • Introduction
    • Overview and Architecture
    • Features
  • API Introduction
    • Cluster and Cluster.Builder
    • Creating the Cluster
    • Contact Points
    • Getting a Session
    • Working with Sessions
  • Querying
    • PreparedStatement, Statement, BoundStatement
    • Using PreparedStatements, Binding Values
    • Executing the Query
    • Processing Query Results
    • CQL to Java Type Mapping
    • Working with UUIDs
    • Setting Consistency Level
  • QueryBuilder and Dynamic Queries
    • Dynamic Queries
    • Bind Variables and SimpleStatement
    • QueryBuilder - Fluent API for Queries
    • Building SELECT, Select Type, Select.where(), Chaining WHERE Clauses
    • Building DELETE, Delete Type, Delete.where()
    • Building INSERT, Insert Type, Insert.insertInto(), Insert.value()
    • Building Update, Update Type, Insert.with(), Insert.value()
    • Building Regular Batches and Prepared Statement Batches (BatchStatemnt)
    • Other Queries
  • Asynchronous Querying
    • Normal vs Asynchronous Querying
    • Interface java.util.concurrent.Future
    • ResultSetFuture
    • Querying Asynchronously and Processing Future Results
    • Listeners for Processing
  • Driver Policies
    • Overview
    • Load Balancing Policies - RoundRobinPolicy, DCAwareRoundRobinPolicy
    • Retry Policies - DefaultRetryPolicy, DowngradingConsistencyRetryPolicy, LatencyAwarePolicy
    • The Policies Class
  • LABS:
    • Introducing StockWatcher (the Lab Domain)
    • Connect to a Cluster
    • Execute Queries
    • Use QueryBuilder for Select
    • Use QueryBuilder More Extensively
    • Use executeAsync() and ResultSetFuture
    • Use Driver Policies
    • StockWatcher Deep Dive - Examining a Full-fledged Application
LearningPatterns Inc. | http://www.LearningPatterns.com | tel:212.487.9064 | e-mail:
Copyright © LearningPatterns Inc. All rights reserved. LearningPatterns is a trademark of LearningPatterns Inc. Java, and all Java-based trademarks are registered trademarks of Sun Microsystems in the U.S. and other countries. JBoss is a registered trademark of Red Hat, Inc. in the U.S. and other countries. IBM and Rational are registered trademarks of IBM Corp. in the U.S. and other countries. All other products and company names mentioned here may be trademarks of their respective owners.