Chapter 1, Getting Up and Running with Cassandra, introduces the major reasons to choose Cassandra over a traditional relational or document database. It then provides step-by-step instructions on installing Cassandra on various operating systems, creating a keyspace, and interacting with the database using the CQL language and cqlsh tool.
Chapter 2, The First Table, is a walkthrough of creating a table, inserting data, and retrieving rows by primary key. Along the way, it discusses how Cassandra tables are structured, and provides a tour of the Cassandra type system.
Chapter 3, Organizing Related Data, introduces more complex table structures that group related data together using compound primary keys and composite partition keys.
Chapter 4, Beyond Key-Value Lookup, puts the more robust schema developed in the previous chapter to use, explaining how to query for sorted ranges of rows. It also touches upon the JSON support that was introduced in Cassandra 2.2.
Chapter 5, Establishing Relationships, develops table structures for modeling relationships between rows. The chapter introduces static columns and row deletion. This chapter also touches upon secondary indexes and materialized views, which can be used to avoid denormalization of data.
Chapter 6, Denormalizing Data for Maximum Performance, explains when and why storing multiple copies of the same data can make your application more efficient. The chapter introduces batching mechanisms in Cassandra and when to use them.
Chapter 7, Expanding Your Data Model, demonstrates the use of lightweight transactions to ensure data integrity. It also introduces schema alteration, row updates, and single-column deletion.
Chapter 8, Collections, Tuples, and User-Defined Types, introduces collection columns and explores Cassandra's support for advanced, atomic collection manipulation. It also introduces tuples, nested collections, and user-defined types.
Chapter 9, Aggregating Time-Series Data, covers the common use case of collecting high-volume time-series data and introduces counter columns. It also introduces user-defined functions and user-defined aggregates.
Chapter 10, How Cassandra Distributes Data, explores what happens when you save a row to Cassandra. It considers eventual consistency and teaches you how to use tunable consistency to get the right balance between consistency and fault-tolerance.
Chapter 11, Cassandra Multi-Node Cluster, explains how the dynamics of consistency levels and replication factor, change with a multi-node cluster. This chapter also touches upon some of the architectural aspects of Cassandra, including the read/write paths and data repair mechanisms.
Chapter 12, Application Development Using the Java Driver, introduces the DataStax Java driver which can be used to develop applications in Java with appropriate load balancing, reconnection, and retry policies to work with Cassandra.
Appendix A, Peeking under the Hood, peels away the abstractions provided by CQL to reveal how Cassandra represents data at the lower column family level.
Appendix B, Authentication and Authorization, introduces ways to control access to your Cassandra cluster and specific data structures within it.