Accelebrate's Introduction to Cassandra 3 for Developers training course provides an in-depth introduction to using Cassandra and with a focus on the practical aspects of working with C*. Students learn the internal architecture and CQL (Cassandra Query Language), as well as the Java API for writing Cassandra clients.
- This course includes coverage of Cassandra 3.x, but is also suitable for users of Cassandra 2.
Skills Gained
All students will:
- Understand the needs that C* addresses
- Be familiar with the operation and structure of C*
- Be able to install and set up a C* database
- Use the C* tools, including cqlsh, nodetool, and ccm (Cassandra Cluster Manager)
- Be familiar with the C* architecture, and how a C* cluster is structured
- Understand how data is distributed and replicated in a C* cluster
- Understand core C* data modeling concepts, and use them to create well-structured data models
- Use data replication and eventual consistency intelligently
- Understand and use CQL to create tables and query for data
- Know and use the CQL data types (numerical, textual, uuid, etc.)
- Understand the various kinds of primary keys available (simple, compound, and composite primary keys)
- Use more advanced capabilities like collections, counters, secondary indexes, CAS (Compare and Set), static columns, and batches
- Be familiar with the Java client API
- Use the Java client API to write client programs that work with C*
- Build and use dynamic queries with QueryBuilder
- Understand and use asynchronous queries with the Java API
Prerequisites
Students should have reasonable Java experience and some knowledge of databases.
Software Requirements
VirtualBox 5.0 or later in a Windows, Linux, or Mac environment with at least 8GB of physical RAM. Accelebrate provides a virtual machine with everything necessary for this class.
Cassandra Training Outline
Introduction
Cassandra Overview
- Why We Need Cassandra
- High level Cassandra Overview
- Cassandra Features
- Basic Cassandra Installation and Configuration
Cassandra Architecture and CQL Overview
- Cassandra Architecture Overview
- Cassandra Clusters and Rings
- Data Replication in Cassandra
- Cassandra Consistency / Eventual Consistency
- Introduction to CQL
- Defining Tables with a Single Primary Key
- Using cqlsh for Interactive Querying
- Selecting and Inserting/Upserting Data with CQL
- Data Replication and Distribution
- Basic Data Types (including uuid, timeuuid)
Data Modeling and CQL Core Concepts
- Defining a Compound Primary Key
- Additional Querying Capabilities
- Data Modeling Guidelines
- Composite Partition Keys
Additional CQL Capabilities
- Indexing
- Cassandra Counters
- Cassandra collections
- Static Column: Overview and Usage
- Static Column Guidelines
- Materialized View: Overview and Usage
- Materialized View Guidelines
Data Consistency In Cassandra
- Overview of Consistency in Cassandra
- CAP Theorem
- Eventual (Tunable) Consistency in C* - ONE, QUORUM, ALL
- Choosing CL ONE
- Choosing CL QUORUM
- Achieving Immediate Consistency
- Using other Consistency Levels
- Internal Repair Mechanisms (Read Repair, Hinted Handoff)
Lightweight Transactions (LWT)/ Compare and Set (CAS)
- Overview of Lightweight Transactions
- Using LWT, the [applied] Column
- IF EXISTS, IF NOT EXISTS, Other IF conditions
- Basic CAS Internals
- Overhead and Guidelines
Practical Considerations
- Dealing with Write Failure
- Unavailable Nodes and Node Failure
- Requirements for Write Operations
- Key and Row Caches
- Cache Overview
- Usage Guidelines
- Multi-Data Center Support
- Overview
- Replication Factor Configuration
- Additional Consistency Levels - LOCAL/EACH QUORUM
- Deletes
The Java Client API
- API Overview
- Connecting to a Cluster
- The Query API
- Dynamic Queries and QueryBuilder
- Configuring Query Behavior
- Asynchronous Querying Overview
Conclusion