cassandra README

The project's README from github.com/apache/cassandra. As one markdown file: README.md.

image:https://img.shields.io/badge/License-Apache%202.0-blue.svg[License, link=https://github.com/apache/cassandra/blob/trunk/LICENSE.txt] image:https://ci-cassandra.apache.org/job/Cassandra-trunk/badge/icon[Build Status, link=https://ci-cassandra.apache.org/job/Cassandra-trunk/]     image:https://img.shields.io/badge/Official-Downloads-brightgreen[Official Downloads, link=https://cassandra.apache.org/$$_$$/download.html] image:https://img.shields.io/docker/pulls/$$_$$/cassandra[Docker Pulls, link=https://hub.docker.com/r/$$_$$/cassandra]     image:https://img.shields.io/badge/Slack-4A154B?style=flat&logo=slack&logoColor=white[Slack, link=https://infra.apache.org/slack.html] image:https://img.shields.io/badge/Bluesky-0285FF?logo=bluesky&logoColor=fff&color=0285FF[Bluesky, link=https://bsky.app/profile/cassandra.apache.org] image:https://img.shields.io/badge/-LinkedIn-blue?style=flat-square&logo=Linkedin&logoColor=white&link=https://www.linkedin.com/company/apache-cassandra/[LinkedIn, link=https://www.linkedin.com/company/apache-cassandra/] image:https://img.shields.io/badge/YouTube-FF0000?style=flat&logo=youtube&logoColor=white[Youtube, link=https://www.youtube.com/c/PlanetCassandra]

Apache Cassandra

Apache Cassandra is a highly-scalable partitioned row store. Rows are organized into tables with a required primary key.

https://cwiki.apache.org/confluence/display/CASSANDRA2/Partitioners[Partitioning] means that Cassandra can distribute your data across multiple machines in an application-transparent matter. Cassandra will automatically repartition as machines are added and removed from the cluster.

https://cwiki.apache.org/confluence/display/CASSANDRA2/DataModel[Row store] means that like relational databases, Cassandra organizes data by rows and columns. The Cassandra Query Language (CQL) is a close relative of SQL.

For more information, see https://cassandra.apache.org/[the Apache Cassandra web site].

Issues should be reported on https://issues.apache.org/jira/projects/CASSANDRA/issues/[The Cassandra Jira].

Requirements

Getting started

This short guide will walk you through getting a basic one node cluster up and running, and demonstrate some simple reads and writes. For a more-complete guide, please see the Apache Cassandra website's https://cassandra.apache.org/doc/latest/cassandra/getting-started/index.html[Getting Started Guide].

First, we'll unpack our archive:

$ tar -zxvf apache-cassandra-$VERSION.tar.gz $ cd apache-cassandra-$VERSION

After that we start the server. Running the startup script with the -f argument will cause Cassandra to remain in the foreground and log to standard out; it can be stopped with ctrl-C.

$ bin/cassandra -f

Now let's try to read and write some data using the Cassandra Query Language:

$ bin/cqlsh

The command line client is interactive so if everything worked you should be sitting in front of a prompt:


Connected to Test Cluster at localhost:9160. [cqlsh 6.3.0 | Cassandra 7.0-SNAPSHOT | CQL spec 3.4.8 | Native protocol v5] Use HELP for help. cqlsh>

As the banner says, you can use 'help;' or '?' to see what CQL has to offer, and 'quit;' or 'exit;' when you've had enough fun. But lets try something slightly more interesting:


cqlsh> CREATE KEYSPACE schema1 WITH replication = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 }; cqlsh> USE schema1; cqlsh:Schema1> CREATE TABLE users ( user_id varchar PRIMARY KEY, first varchar, last varchar, age int ); cqlsh:Schema1> INSERT INTO users (user_id, first, last, age) VALUES ('jsmith', 'John', 'Smith', 42); cqlsh:Schema1> SELECT * FROM users; user_id | age | first | last ---------+-----+-------+------- jsmith | 42 | john | smith

cqlsh:Schema1>

If your session looks similar to what's above, congrats, your single node cluster is operational!

For more on what commands are supported by CQL, see https://cassandra.apache.org/doc/trunk/cassandra/developing/cql/index.html[the CQL reference]. A reasonable way to think of it is as, "SQL minus joins and subqueries, plus collections."

Wondering where to go from here?

cassandra (apache/cassandra)

Searching Database…

10.1K ·GitHub
What is this?Apache Cassandra is an open source, transactional distributed database — a highly-scalable partitioned row store built for linear scalability and proven fault-tolerance on commodity hardware or cloud infrastructure.
Is this a server I run, or a library I embed in my app?It is a database server, not a library: you run it as a cluster of nodes and query it over the network with CQL (Cassandra Query Language), for example through the bundled interactive cqlsh client.
How do I get a basic one-node cluster up and running?Unpack the release archive (tar -zxvf apache-cassandra-$VERSION.tar.gz), start the server with 'bin/cassandra -f' (it stays in the foreground and logs to stdout; Ctrl-C stops it), then run 'bin/cqlsh' to create tables and read/write data.
What do I need installed before starting it?A supported Java version — the exact list is the java.supported property in build.xml — plus Python, which the cqlsh shell requires (its supported versions are checked in bin/cqlsh).
How close is CQL to SQL — can I just write my usual SQL?CQL is a close relative of SQL, but think of it as 'SQL minus joins and subqueries, plus collections.' If your workload leans on joins or subqueries, you will have to model your tables around that.
What happens to my data when I add or remove machines from the cluster?Cassandra rebalances on its own: it automatically repartitions data as machines are added and removed, and distributes it across nodes transparently to the application.
What does a first CQL session actually look like?From cqlsh you create a keyspace with a replication setting (e.g. SimpleStrategy with replication factor 1), then CREATE TABLE users with a userid PRIMARY KEY, INSERT a row and SELECT it back — at that point your one-node cluster is operational.
How is the data model organized inside?Like a relational database: rows are organized into tables with a required primary key. The difference is that the store is partitioned, so rows are spread across the machines of the cluster instead of living on one server.
What are similar projects?scylladb, nebula, tidb, zookeeper, druid, foundationdb, yugabyte-db, trino
Creator
apache
Size
460.7 MB
Stars
10.1K
Updated
CommitOct 15
Age
17y
Commits · 90 Days