 Autor: [Adam Nadolny](/autorzy/adam-nadolny) Ekspert DevOps i infrastruktury · Zweryfikowano Kwiecień 2026

1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  Apache Cassandra na VPS

# Apache Cassandra — NoSQL dla dużej skali: instalacja i konfiguracja

Opublikowano: 10 kwietnia 2026 · Kategoria: VPS / Bazy danych

Apache Cassandra to rozproszona baza NoSQL stworzona przez Facebooka (2008), od 2010 roku projekt Apache. Projektowana pod kątem ogromnej skali zapisu i odczytu: Instagram używał jej do przechowywania miliardów zdjęć i danych aktywności, Netflix obsługuje przez nią biliony operacji dziennie. Nie ma single point of failure — każdy węzeł pełni tę samą rolę (architektura peer-to-peer). Dane są replikowane między węzłami z konfigurowalnym replication factor. Ten artykuł przeprowadzi Cię przez instalację, konfigurację i podstawy CQL (Cassandra Query Language).

## Instalacja — Java i Cassandra przez apt

\# Cassandra wymaga Java 11 lub 17
sudo apt update
sudo apt install -y openjdk-17-jdk

# Weryfikacja
java -version
# openjdk version "17.0.x"

# Dodaj repozytorium Apache Cassandra
echo "deb https://debian.cassandra.apache.org 41x main" | \\
  sudo tee /etc/apt/sources.list.d/cassandra.sources.list
curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -

sudo apt update && sudo apt install -y cassandra

# Sprawdz status
sudo systemctl status cassandra
nodetool status
# UN = Up Normal (wlaczony i normalny)
# DC = DataCenter, Rack = rack (topologia fizyczna)

# Logowanie Cassandra
sudo journalctl -u cassandra -f
# lub: tail -f /var/log/cassandra/system.log

# Polaczenie z baza
cqlsh
# lub z autentykacja:
# cqlsh -u cassandra -p cassandra

## cassandra.yaml — kluczowe ustawienia

\# /etc/cassandra/cassandra.yaml - najwazniejsze parametry

cluster\_name: 'MyCluster'   # Unikalna nazwa klastra

# Dane kontaktowe - lista seed nodes
seed\_provider:
  - class\_name: org.apache.cassandra.locator.SimpleSeedProvider
    parameters:
      - seeds: "10.0.0.1,10.0.0.2"   # Min 1 seed per DC

listen\_address: 10.0.0.1    # IP tego wezla (nie 0.0.0.0!)
rpc\_address: 0.0.0.0        # Adres dla klientow CQL

# Katalogi danych
data\_file\_directories:
  - /var/lib/cassandra/data
commitlog\_directory: /var/lib/cassandra/commitlog   # SSD!
hints\_directory: /var/lib/cassandra/hints
saved\_caches\_directory: /var/lib/cassandra/saved\_caches

# Pamiéc (JVM)
# Edytuj /etc/cassandra/jvm.options:
# -Xms4G   # Min heap - minimum polowa RAM
# -Xmx4G   # Max heap - maksimum polowa RAM (reszta = OS cache)

# Szyfrowanie (producja)
authenticator: PasswordAuthenticator   # domyslnie: AllowAllAuthenticator
authorizer: CassandraAuthorizer

# Topologia
endpoint\_snitch: GossipingPropertyFileSnitch   # Dla multi-DC
# Edytuj /etc/cassandra/cassandra-rackdc.properties:
# dc=datacenter1
# rack=rack1

## CQL — tworzenie keyspace i tabel

\-- Keyspace to odpowiednik bazy danych
-- replication\_factor: ile kopii danych na ilu wezlach

CREATE KEYSPACE myapp
WITH replication = {
  'class': 'NetworkTopologyStrategy',
  'datacenter1': 3   -- 3 kopie w datacenter1
}
AND durable\_writes = true;

USE myapp;

-- Tabela: dane aktywnosci uzytkownikow (time series pattern)
-- KLUCZOWE: partition key + clustering key = PRIMARY KEY
CREATE TABLE user\_events (
    user\_id     UUID,
    event\_time  TIMESTAMP,
    event\_type  TEXT,
    page\_url    TEXT,
    data        MAP<TEXT, TEXT>,    -- Mapa klucz-wartosc
    tags        SET<TEXT>,           -- Zbior
    PRIMARY KEY ((user\_id), event\_time)  -- user\_id = partition key
) WITH CLUSTERING ORDER BY (event\_time DESC)   -- Najnowsze pierwsze
  AND gc\_grace\_seconds = 864000
  AND compaction = {
    'class': 'TimeWindowCompactionStrategy',
    'compaction\_window\_unit': 'DAYS',
    'compaction\_window\_size': 1
  };

-- INSERT - zawsze z TTL dla time series!
INSERT INTO user\_events (user\_id, event\_time, event\_type, page\_url)
VALUES (uuid(), toTimestamp(now()), 'pageview', '/pricing')
USING TTL 2592000;  -- 30 dni TTL

-- SELECT MUSI zawierac partition key!
SELECT \* FROM user\_events
WHERE user\_id = 550e8400-e29b-41d4-a716-446655440000
ORDER BY event\_time DESC
LIMIT 10;

-- Nie mozna robic full-table scan bez ALLOW FILTERING
-- (wolne i niezalecane w produkcji)
SELECT \* FROM user\_events WHERE event\_type = 'click' ALLOW FILTERING;

## Replication Factor i Consistency Level

Cassandra pozwala konfigurować "ile węzłów musi potwierdzić zapis/odczyt". To tzw. Consistency Level (CL). Im wyższy CL, tym silniejsza spójność, ale większy koszt wydajności. Kluczowa formuła: **CL\_write + CL\_read > RF** zapewnia spójność.

Consistency Level

Ile węzłów odpowiada

Kiedy używać

ONE

1 węzeł

IoT logi, gdzie drobna utrata danych OK

QUORUM

RF/2 + 1 węzłów

Rekomendowane dla danych biznesowych

ALL

Wszystkie węzły

Krytyczne dane, ale brak tolerancji awarii

LOCAL\_QUORUM

Quorum w lokalnym DC

Multi-datacenter, zapis lokalny

EACH\_QUORUM

Quorum w każdym DC

Silna spójność global

## Cassandra vs ScyllaDB

Cecha

Apache Cassandra

ScyllaDB

Język implementacji

Java

C++

Wydajność (ops/node)

Bazowa

5-10x szybszy

RAM overhead

Duży (JVM heap)

Mniejszy (bez JVM)

GC pauses

Tak (Java GC)

Brak

CQL kompatybilność

Native

Pełna (drop-in)

Licencja

Apache 2.0

AGPL (CE) / Enterprise

Dojrzałość ekosystemu

Bardzo wysoka

Wysoka i rosnąca

## Najczęstsze pytania

Do czego nadaje się Apache Cassandra i kiedy NIE używać? +

Cassandra jest idealna dla: write-heavy workloads (bardzo szybkie zapisywanie dużych ilości danych — np. IoT sensors, metryki, logi, timeseries, activity tracking), systemów gdzie read/write działa po znanych kluczach (wysoce selektywne zapytania po partition key), aplikacji globalnych wymagających multi-datacenter replikacji bez single master, dużej skali (petabajty danych, tysiące węzłów). Cassandra NIE nadaje się dla: ad-hoc zapytań z wieloma filtrami (brak elastycznych JOIN-ów), transakcji ACID na wielu rekordach (ma lightweight transactions ale są wolne), małych projektów (overhead konfiguracji jest duży), aplikacji wymagających częstych UPDATE/DELETE (Cassandra używa append-only log — stare wersje są "tombstone" i czyszczone przez compaction). Używają jej Netflix, Apple, Instagram, Discord.

Co to jest consistent hashing i vnodes w Cassandra? +

Cassandra używa consistent hashing do rozdzielania danych między węzły. Partition key każdego wiersza jest haszowany na token (liczba na "pierścieniu" tokenów). Każdy węzeł odpowiada za określony zakres tokenów. Vnodes (virtual nodes) to rozwiązanie problemu nierównomiernego rozłożenia: zamiast jednego zakresu tokenów per węzeł, każdy węzeł ma wiele małych zakresów (domyślnie 256 tokenów). Dzięki temu dodawanie nowego węzła i rebalancing danych jest płynniejszy — nowy węzeł "kradnie" małe zakresy z wielu istniejących węzłów zamiast jednego dużego. W praktyce: vnodes są domyślnie włączone i nie trzeba ich ręcznie zarządzać, ale warto rozumieć dlaczego "wyglądają" jak wiele węzłów logicznych w nodetool ring.

Czym różni się Cassandra od ScyllaDB? +

ScyllaDB to reimplementacja Cassandra w C++ (zamiast Java). Kluczowe różnice: ScyllaDB jest szybsza — benchmarki pokazują 5-10x więcej operacji per node, bo nie ma Java GC pauses i lepiej wykorzystuje CPU per-core architekturą shard-per-core. ScyllaDB zużywa mniej RAM (brak JVM overhead). ScyllaDB jest w pełni kompatybilna z protokołem Cassandra i CQL — sterowniki działają bez zmian. Cassandra jest bardziej dojrzała, ma większą społeczność i szerszy ekosystem narzędzi. ScyllaDB jest lepszym wyborem dla nowych projektów jeśli zależy Ci na wydajności. Cassandra jeśli masz istniejącą infrastrukturę Cassandra lub potrzebujesz zaawansowanych funkcji (np. SAI — Storage-Attached Indexes w Cassandra 4.x).

## Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.

Contabo

VPS z dużą ilością RAM dla Cassandra — JVM wymaga minimum 8 GB

High-RAM VPS

[Aktywuj rabat →](/out/contabo)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/contabo)

ProSerwer.pl

Polski dedykowany serwer pod Cassandra z NVMe storage

Dedykowany

[Aktywuj rabat →](/out/proserwer-pl)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/proserwer)

## Powiązane strony

-   [MongoDB na VPS — instalacja i replica set](/baza-wiedzy/mongodb-vps-instalacja)
-   [Redis Cluster — sharding danych](/baza-wiedzy/redis-cluster-konfiguracja)
-   [ClickHouse — analityka kolumnowa na VPS](/baza-wiedzy/clickhouse-analytics-vps)
-   [Wszystkie artykuły](/baza-wiedzy/)