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:

  • Java — Maven/Gradle project with the Apache Cassandra Java Driver

  • Python — Script using the Apache Cassandra Python Driver

  • Go — Module using gocql

  • Node.js — Project using the Apache Cassandra Node.js Driver

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.

Query Data

SELECT * FROM users;

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