Developer Quickstart
Get up and running with Apache Cassandra in minutes. Choose your path: explore CQL interactively or build your first application in your preferred language.
Start Cassandra
The fastest way to get a development instance running is with Docker. You need Docker installed before you start.
docker pull cassandra:latest
docker run --name cassandra -d -p 9042:9042 cassandra:latest
Wait 30-60 seconds for the node to initialize, then verify it is ready. If the check fails, wait another 30 seconds and try again:
docker exec cassandra cqlsh -e "DESCRIBE KEYSPACES"
For detailed setup options, see the Cassandra Quickstart.
Choose Your Path
Build Your First Application
Jump straight into a working application in your language:
Each quickstart takes about 10 minutes and produces a complete, runnable application with CRUD operations.
Explore CQL First
If you prefer to learn the query language before writing application code, connect with cqlsh:
docker exec -it cassandra cqlsh
Think of Cassandra data in this order:
| Level | What it means |
|---|---|
Keyspace |
A top-level namespace for related tables. |
Table |
A group of rows for one query pattern. |
Partition |
The chunk of data Cassandra stores and reads together. |
Row |
One record inside a partition. |
The partition key chooses which partition a row belongs to, and clustering columns control the order of rows inside that partition.
Create a Keyspace
replication_factor = 1 gives you no fault tolerance. Use it only for local development.
|
CREATE KEYSPACE my_app
WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
USE my_app;
Create a Table
CREATE TABLE users (
user_id uuid PRIMARY KEY,
name text,
email text,
created_at timestamp
);
Insert Data
INSERT INTO users (user_id, name, email, created_at)
VALUES (uuid(), 'Alice', 'alice@example.com', toTimestamp(now()));
INSERT INTO users (user_id, name, email, created_at)
VALUES (uuid(), 'Bob', 'bob@example.com', toTimestamp(now()));
uuid() generates a new unique identifier for each row.
This quickstart uses UUIDs instead of integer IDs so the examples can create rows without coordinating a shared counter first.
toTimestamp(now()) stores the current write time as a timestamp.
Next Steps
-
Choose a Driver — find the right driver for your language and use case
-
Data Modeling — design tables for your access patterns
-
CQL Reference — complete query language documentation
-
Vector Search — build AI-powered search with vector embeddings
-
SAI Quickstart — create storage-attached indexes for flexible queries