From 0be7897e13ec21362e52214ebab41b1ff880919b Mon Sep 17 00:00:00 2001 From: Stanislav Hubacek Date: Thu, 11 Jun 2026 13:53:57 +0200 Subject: [PATCH] Delete CASSANDRA.md --- CASSANDRA.md | 135 --------------------------------------------------- 1 file changed, 135 deletions(-) delete mode 100644 CASSANDRA.md diff --git a/CASSANDRA.md b/CASSANDRA.md deleted file mode 100644 index 35dc912..0000000 --- a/CASSANDRA.md +++ /dev/null @@ -1,135 +0,0 @@ -# 🐘 Cassandra & ScyllaDB - -## Přehled - -Apache Cassandra je distribuovaná wide-column NoSQL databáze navržená pro vysokou dostupnost a lineární škálovatelnost bez single point of failure. Inspirována Amazon Dynamo paperem (2007) a Google Bigtable. ScyllaDB je C++ reimplementace kompatibilní s Cassandra protokolem, s drasticky nižší latencí a vyšší propustností. - -## Architektura (Dynamo-inspired) - -### Consistent hashing - -Data rozdělena na hash ringu, každý node zodpovídá za rozsah tokenů: - -```text - 0 ─── node A ─── hash(key1) - │ - 90 ─── node B ─── hash(key2) - │ - 180 ─── node C ─── hash(key3) - │ - 270 ─── node D ─── hash(key4) -``` - -- Přidání/odebrání nodu ovlivní jen K/N klíčů (díky virtual nodes) -- **Virtual nodes** (vnodes) — každý fyzický node má ~100-200 tokenů na ringu (rovnoměrnější distribuce) - -### Quorum (N, R, W) - -- N = replication factor (typicky 3) -- R = read quorum (typicky 2) -- W = write quorum (typicky 2) -- Podmínka: R + W > N (pro strong-ish konzistenci) -- **Sloppy quorum** — při nedostupnosti nodu, data dočasně uložena na jiném -- **Hinted handoff** — dočasný zápis s hintem, při obnově se data přenesou - -### Gossip protocol - -Decentralizované šíření membership informací — každý node periodicky komunikuje s 1-3 náhodnými nodes. Žádný centrální bod selhání. - -### Vector clocks - -Zachycení kauzality verzí objektu. Při konfliktu (partition merge) se vrací obě verze — aplikace merguje. - -### Merkle trees - -Anti-entropy — strom hashů pro detekci divergence mezi replikami. Rychlá detekce, které rozsahy dat jsou rozdílné. - -### Write path - -```text -Client → Coordinator → [1. Write to commit log (disk)] - [2. Write to memtable (RAM)] - [3. Acknowledge client] - → [4. Flush memtable → SSTable (periodicky)] - → [5. Compaction (merge SSTables)] -``` - -### Read path - -```text -Client → Coordinator → [1. Check bloom filter] - [2. Check row cache / key cache] - [3. Read from SSTable (disk)] - [4. Merge with memtable] - [5. Repair if stale (read repair)] -``` - -## Cassandra vs ScyllaDB - -| Vlastnost | Cassandra | ScyllaDB | -|-----------|-----------|----------| -| **Jazyk** | Java (JVM) | C++ (seastar framework) | -| **Architektura** | Thread-per-connection | Shared-nothing, CPU sharding | -| **Latence** | 5-20 ms (typicky) | 1-3 ms (typicky) | -| **Propustnost** | Dobrá | 5-10× vyšší na stejný HW | -| **GC pauzy** | Ano (JVM) | Ne (žádný GC) | -| **NUMA** | OS-dependent | Nativní NUMA aware | -| **Workload** | Standardní | High-throughput, real-time | -| **Cena** | Open source | Open source + Enterprise | - -## Data model - -- **Keyspace** = namespace (analogie DB) -- **Table** = definice sloupců (ne schema-less) -- **Partition key** = hash klíč pro distribuci na ringu -- **Clustering columns** = řazení v rámci partition -- **Primary key** = Partition key + Clustering columns - -## Doporučení — v čem je Cassandra lepší - -| Oblast | Cassandra | Konkurence | Proč Cassandra | -|--------|-----------|------------|----------------| -| **Zápisová propustnost** | Lineární škálování, žádný master bottleneck | PostgreSQL (master writes) | Každý node zapisuje, žádný single point of failure | -| **Dostupnost** | AP z CAP — vždy zapisovatelná | MongoDB (CP, primary down = read-only) | "Always-writeable" filozofie | -| **Multi-DC** | Nativní, režim per DC | CockroachDB (komplexní) | Jednoduchá konfigurace, latency-tolerant | -| **Time-series** | Wide-row model, TTL, compaction | InfluxDB (specializovaná) | Lze kombinovat s dalšími workloady | -| **IoT / sensor data** | Lineární škálování, žádný master | MongoDB (sharding komplexní) | Předvídatelný výkon při růstu | -| **Geografická distribuce** | Nativní multi-DC, hinted handoff | Spanner (vendor lock-in) | Open source, žádná závislost | - -### Kdy použít Cassandra / ScyllaDB - -- **IoT / sensor data ingest** — miliony zápisů/s, žádné ztráty -- **Time-series v masivním měřítku** — metriky, logy, event data -- **Uživatelské activity history** — zápisově těžké workloady -- **Multi-DC aplikace** — data dostupná v každé lokalitě -- **Doporučovací systémy** — wide-row model pro "co viděl uživatel" -- **Message / event store** — high-throughput append s TTL - -### Kdy použít něco jiného - -- **Relace, JOINy, transakce** → PostgreSQL (Cassandra nemá JOINy, omezené transakce) -- **Full-text search** → Elasticsearch -- **Agregace / OLAP** → ClickHouse (Cassandra není analytická DB) -- **Malá data (< 100 GB)** → PostgreSQL (Cassandra overhead se nevyplatí) -- **Časté ready podle vedlejších klíčů** → DynamoDB (SADA indexy) — Cassandra má omezené secondary indexy - -### ScyllaDB specific - -ScyllaDB je výhodná když: -- Potřebujete 5-10× vyšší propustnost na stejném HW -- Máte latency-sensitive workload (real-time scoring, ad-tech) -- Chcete eliminovat JVM/GC problémy -- Potřebujete předvídatelný výkon (P99 < 5 ms) - -## Zdroje - -Odkazy, knihy a standardy: [sources/databases/sources.md](sources/databases/sources.md) - -### Doporučená literatura - -| Paper / Kniha | Autoři | Popis | -|---------------|--------|-------| -| Dynamo: Amazon's Highly Available Key-value Store (SOSP 2007) | DeCandia et al. | Zakladatelský paper pro Cassandra architekturu | -| Cassandra: The Definitive Guide (3rd ed.) | E. Hewitt | Komplexní průvodce nasazením a provozem | - -*Poslední revize: 2026-06-03*