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

Enroll in or hire us to teach our Introduction to Cassandra 2, CQL 3, and the Datastax Java Driver class in Phoenix, Arizona by calling us @303.377.6176. Like all HSG classes, Introduction to Cassandra 2, CQL 3, and the Datastax Java Driver may be offered either onsite or via instructor led virtual training. Consider looking at our public training schedule to see if it is scheduled: Public Training Classes
Provided there are enough attendees, Introduction to Cassandra 2, CQL 3, and the Datastax Java Driver may be taught at one of our local training facilities.
We offer private customized training for groups of 3 or more attendees.

Course Description

 
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 Length: 3 Days
Course Tuition: $1090 (US)

Prerequisites

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

Course Outline

 

 

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

Interesting Reads Take a class with us and receive a book of your choosing for 50% off MSRP.