= Apache Cassandra Quickstart
:tabs:

_Interested in getting started with Cassandra? Follow these instructions._

*STEP 1: GET CASSANDRA USING DOCKER*

You'll need to have Docker Desktop for Mac, Docker Desktop for Windows, or
similar software installed on your computer.

[source, plaintext]
----
docker pull cassandra:latest
----

Apache Cassandra is also available as a https://cassandra.apache.org/download/[tarball or package download].

*STEP 2: START CASSANDRA*

[source, plaintext]
----
docker run --name cassandra cassandra
----

*STEP 3: CREATE FILES*

In the directory where you plan to run the next step, create these two files
so that some data can be automatically inserted in the next step.

A _cqlshrc_ file will log into the Cassandra database with the default superuser:

[source, plaintext]
----
[authentication]
	username = cassandra
	password = cassandra
----

Create a _scripts_ directory and change to that directory.
The following _data.cql_ file will create a keyspace, the layer at which Cassandra
replicates its data, a table to hold the data, and insert some data:

[source, plaintext]
----
# Create a keyspace
CREATE KEYSPACE IF NOT EXISTS store WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : '1' };

# Create a table
CREATE TABLE IF NOT EXISTS store.shopping_cart  (
	userid text PRIMARY KEY,
	item_count int,
	last_update_timestamp timestamp
);

# Insert some data
INSERT INTO store.shopping_cart
(userid, item_count, last_update_timestamp)
VALUES ('9876', 2, toTimeStamp(toDate(now))));
INSERT INTO store.shopping_cart
(userid, item_count, last_update_timestamp)
VALUES (1234, 5, toTimeStamp(toDate(now))));
----

You should now have a _cqlshrc_ file and _<currentdir>/scripts/data.cql_ file.

*STEP 4: RUN CQLSH TO INTERACT*

Cassandra is a distributed database that can read and write data across multiple
nodes with  peer-to-peer replication. The Cassandra Query Language (CQL) is
similar to SQL but suited for the JOINless structure of Cassandra. The CQL
shell, or `cqlsh`, is one tool to use in interacting with the database.

[source, plaintext]
----
docker run --rm -it -v /<currentdir>/scripts:/scripts  \
-v /<currentdir/cqlshrc:/.cassandra/cqlshrc  \
--env CQLSH_HOST=host.docker.internal --env CQLSH_PORT=9042  nuvo/docker-cqlsh
----

For this quickstart, this cqlsh docker image also loads some data automatically,
so you can start running queries.

*STEP 5: READ SOME DATA*

[source, plaintext]
----
SELECT * FROM store.shopping_cart;
----

*STEP 6: WRITE SOME MORE DATA*

[source, plaintext]
----
INSERT (userid, item_count) VALUES (4567, 20) INTO store.shopping_cart;
----

*STEP 7: TERMINATE CASSANDRA*

[source, plaintext]
----
docker rm cassandra
----

*CONGRATULATIONS!*

Hey, that wasn't so hard, was it?

To learn more, we suggest the following next steps:

* Read through the *need link*[Overview] to learn main concepts and how Cassandra works at a
high level.
* To understand Cassandra in more detail, head over to the
https://cassandra.apache.org/doc/latest/[Docs].
* Browse through the https://cassandra.apache.org/case-studies/[Case Studies] to
learn how other users in our worldwide community are getting value out of
Cassandra.
