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
Что это такое?Apache Cassandra — это open source распределённая база данных с поддержкой транзакций: высокомасштабируемое партиционированное строковое хранилище, созданное для линейного масштабирования и проверенной отказоустойчивости на обычном железе или в облачной инфраструктуре.
Это сервер, который я запускаю, или библиотека, которую я подключаю в своё приложение?Это сервер базы данных, а не библиотека: вы запускаете его как кластер из нескольких узлов и обращаетесь к нему по сети на языке CQL (Cassandra Query Language), например через интерактивный клиент cqlsh, который идёт в комплекте.
Как мне поднять простейший кластер из одного узла?Распакуйте архив релиза (tar -zxvf apache-cassandra-$VERSION.tar.gz), запустите сервер командой 'bin/cassandra -f' (он остаётся на переднем плане и пишет логи в stdout; Ctrl-C его останавливает), затем выполните 'bin/cqlsh', чтобы создавать таблицы и читать/записывать данные.
Что мне нужно установить перед запуском?Поддерживаемую версию Java — точный список задан в свойстве java.supported в файле build.xml — плюс Python, который нужен оболочке cqlsh (поддерживаемые версии проверяются в bin/cqlsh).
Насколько CQL похож на SQL — могу я просто писать привычные SQL-запросы?CQL — близкий родственник SQL, но думайте о нём как о «SQL минус joins и подзапросы, плюс коллекции». Если ваша нагрузка опирается на joins или подзапросы, придётся строить модель таблиц с учётом этого.
Что произойдёт с моими данными, когда я добавляю или убираю машины из кластера?Cassandra ребалансируется сама: она автоматически перераспределяет данные при добавлении и удалении машин и распределяет их по узлам прозрачно для приложения.
Как на самом деле выглядит первый сеанс работы с CQL?В cqlsh вы создаёте keyspace с настройкой репликации (например, SimpleStrategy с фактором репликации 1), затем CREATE TABLE users с ключом userid в качестве PRIMARY KEY, делаете INSERT строки и читаете её обратно через SELECT — после этого ваш кластер из одного узла полностью рабочий.
Как устроена модель данных внутри?Как в реляционной базе данных: строки организованы в таблицы с обязательным первичным ключом. Разница в том, что хранилище партиционированное, поэтому строки разбросаны по машинам кластера, а не лежат на одном сервере.
What are similar projects?scylladb, nebula, tidb, zookeeper, druid, foundationdb, yugabyte-db, trino
Creator
apache
Size
460.7 MB
Stars
10.1K
Updated
CommitOct 17
Age
17y
Commits · 90 Days