Introduction to Cassandra 2, CQL 3, and the Datastax Java Driver Training in Charleston
Enroll in or hire us to teach our Introduction to Cassandra 2, CQL 3, and the Datastax Java Driver class in Charleston, West Virginia 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
|
Course Directory [training on all levels]
Technical Training Courses
Software engineer/architect, System Admin ... Welcome!
- .NET Classes
- Agile/Scrum Classes
- Ajax Classes
- Android and iPhone Programming Classes
- Blaze Advisor Classes
- C Programming Classes
- C# Programming Classes
- C++ Programming Classes
- Cisco Classes
- Cloud Classes
- CompTIA Classes
- Crystal Reports Classes
- Design Patterns Classes
- DevOps Classes
- Foundations of Web Design & Web Authoring Classes
- Git, Jira, Wicket, Gradle, Tableau Classes
- IBM Classes
- Java Programming Classes
- JBoss Administration Classes
- JUnit, TDD, CPTC, Web Penetration Classes
- Linux Unix Classes
- Machine Learning Classes
- Microsoft Classes
- Microsoft Development Classes
- Microsoft SQL Server Classes
- Microsoft Team Foundation Server Classes
- Microsoft Windows Server Classes
- Oracle, MySQL, Cassandra, Hadoop Database Classes
- Perl Programming Classes
- Python Programming Classes
- Ruby Programming Classes
- Security Classes
- SharePoint Classes
- SOA Classes
- Tcl, Awk, Bash, Shell Classes
- UML Classes
- VMWare Classes
- Web Development Classes
- Web Services Classes
- Weblogic Administration Classes
- XML Classes
Business Training Courses
Project Managers, Business Analysts, Paralegals ... Welcome!
Upcoming Classes
Gain insight and ideas from students with different perspectives and experiences.