Upload files to "/"
This commit is contained in:
135
CASSANDRA.md
Normal file
135
CASSANDRA.md
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
# 🐘 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*
|
||||||
270
CONNECTIVITY.md
Normal file
270
CONNECTIVITY.md
Normal file
@@ -0,0 +1,270 @@
|
|||||||
|
# 🔌 Server connectivity — síťová a storage konektivita
|
||||||
|
|
||||||
|
## Ethernet — síťová konektivita
|
||||||
|
|
||||||
|
### Rychlosti a formáty
|
||||||
|
|
||||||
|
| Rychlost | Označení | Form factor | Kabeláž | Rok standardu | Use case |
|
||||||
|
|----------|----------|-------------|---------|---------------|----------|
|
||||||
|
| **1 GbE** | 1000BASE-T | RJ45 (copper) | Cat5e/Cat6 | 1999 | Management, legacy |
|
||||||
|
| **10 GbE** | 10GBASE-T / SFP+ | RJ45 / SFP+ | Cat6A (30m) / Cat7 (100m) / DAC / SR/LR | 2006 | Běžný server, storage |
|
||||||
|
| **25 GbE** | 25GBASE-R | SFP28 | Cat8 (30m) / DAC (5m) / SR/LR (100m/10km) | 2016 | Standard pro servery (2020+) |
|
||||||
|
| **40 GbE** | 40GBASE-R | QSFP+ | DAC (7m) / SR (150m) / LR (10km) | 2010 | Legacy, spine |
|
||||||
|
| **50 GbE** | 50GBASE-R | SFP56 | DAC / SR / LR | 2018 | Emerging server |
|
||||||
|
| **100 GbE** | 100GBASE-R | QSFP28 | DAC (3m) / SR4 (100m) / LR4 (10km) / PSM4 (500m) | 2015 | Spine, storage, AI |
|
||||||
|
| **200 GbE** | 200GBASE-R | QSFP56 | DAC / SR4 / DR4 | 2019 | AI/ML, HPC |
|
||||||
|
| **400 GbE** | 400GBASE-R | QSFP-DD / OSFP | DAC (2.5m) / SR8 (100m) / DR4 (500m) / FR4 (2km) | 2017 | AI training, hyperscale |
|
||||||
|
| **800 GbE** | 800GBASE-R | QSFP-DD800 / OSFP | DAC (2m) / SR8 (100m) / DR8 (500m) | 2024 | Next-gen AI/ML |
|
||||||
|
|
||||||
|
**Doporučení pro servery (2026)**:
|
||||||
|
- **Standard**: 2× 25 GbE (management + data) nebo 2× 100 GbE pro náročné workloady
|
||||||
|
- **AI/ML training**: 8× 400 GbE (InfiniBand preferován pro GPU communication)
|
||||||
|
- **Storage**: 2× 25/100 GbE (iSCSI/NFS) nebo dedikovaná FC (16/32 Gbps)
|
||||||
|
|
||||||
|
### Form factor NIC
|
||||||
|
|
||||||
|
| Form factor | PCIe lanes | Rychlost | Use case |
|
||||||
|
|------------|-----------|----------|----------|
|
||||||
|
| **OCP 3.0** | x8/x16 | 25/100/200 GbE | Moderní servery (Dell, HPE), small form factor |
|
||||||
|
| **PCIe HHHL** | x8 | 25/50 GbE | Standardní 1U/2U servery |
|
||||||
|
| **PCIe FHHL** | x16 | 100/200/400 GbE | GPU servery, high-density |
|
||||||
|
| **Mezzanine** | x8 | 10/25 GbE | Blade servery (HPE Synergy, Dell MX) |
|
||||||
|
| **LOM (LAN on Motherboard)** | — | 1/10/25 GbE | Integrovaný, základní konektivita |
|
||||||
|
|
||||||
|
### NIC features
|
||||||
|
|
||||||
|
| Feature | Popis | Benefit |
|
||||||
|
|---------|-------|---------|
|
||||||
|
| **TSO/GRO** | TCP Segmentation Offload / Generic Receive Offload | Snížení CPU zátěže pro TCP |
|
||||||
|
| **LRO/LSO** | Large Receive/Send Offload | Obdoba TSO/GRO pro legacy |
|
||||||
|
| **RSS** | Receive Side Scaling | Distribuce příchozích packetů přes více CPU jader |
|
||||||
|
| **RPS/RFS** | Receive Packet Steering / Flow Steering | Softwarové RSS, cache affinity |
|
||||||
|
| **XDP** | eXpress Data Path | BPF-based packet processing (DDoS, load balancer) |
|
||||||
|
| **RDMA (RoCE v2)** | RDMA over Converged Ethernet | GPU direct communication, storage (NVMe-oF) |
|
||||||
|
| **iWARP** | RDMA over TCP | RDMA bez speciálního switch (vyšší latence) |
|
||||||
|
| **DPDK** | Data Plane Development Kit | Uživatelský prostor pro packet processing (VNF, vSwitch) |
|
||||||
|
| **VXLAN/NVGRE offload** | HW offload pro tunelování | Overlay networking (VMware NSX, OpenStack) |
|
||||||
|
| **SR-IOV** | Single Root I/O Virtualization | Direct NIC access pro VM (VF), nízká latence |
|
||||||
|
| **Flow Bifurcation** | Split NIC traffic mezi kernel a DPDK | Souběžný management a high-speed data path |
|
||||||
|
| **PTP (IEEE 1588)** | Precision Time Protocol | Finanční služby, 5G, telco |
|
||||||
|
|
||||||
|
### NIC selection per workload
|
||||||
|
|
||||||
|
| Workload | Doporučená NIC | Zdůvodnění |
|
||||||
|
|----------|---------------|------------|
|
||||||
|
| **Web / API servery** | 2× 25 GbE SFP28, OCP | Nízká cena, dostatečná bandwidth |
|
||||||
|
| **Virtualizace (VMware)** | 2× 25 GbE (SR-IOV, VXLAN offload) | SR-IOV pro VM, VXLAN pro NSX |
|
||||||
|
| **Databáze (OLTP)** | 2× 25/100 GbE (RSS, low latency) | Nízká latence, RSS pro CPU scaling |
|
||||||
|
| **Storage (NFS/iSCSI)** | 2× 25/100 GbE (RoCE v2) | RDMA pro NVMe-oF, low latency |
|
||||||
|
| **Storage (FC SAN)** | 2× 32 Gb FC HBA | SAN pro VMware VMFS, block storage |
|
||||||
|
| **AI/ML training** | 8× 400 GbE + InfiniBand NDR | GPU communication, data ingestion |
|
||||||
|
| **AI/ML inference** | 4× 100 GbE (RoCE v2) | Model serving, GPU direct |
|
||||||
|
| **HPC** | InfiniBand NDR 400 Gbps | MPI communication, low latency |
|
||||||
|
| **Telco / Edge** | 2× 25 GbE (DPDK, PTP) | VNF, 5G UPF, low latency |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Storage connectivity
|
||||||
|
|
||||||
|
### Fibre Channel (FC) SAN
|
||||||
|
|
||||||
|
| Generace | Rychlost | Označení | Form factor | Dosah (SMF) | Use case |
|
||||||
|
|----------|----------|----------|-------------|-------------|----------|
|
||||||
|
| **Gen 5** | 16 Gbps | 16GFC | SFP+ | 10 km | Legacy SAN |
|
||||||
|
| **Gen 6** | 32 Gbps | 32GFC | SFP28 | 10 km | Současný standard |
|
||||||
|
| **Gen 7** | 64 Gbps | 64GFC | SFP56 | 10 km | Emerging, high-performance |
|
||||||
|
| **Gen 8** | 128 Gbps | 128GFC | QSFP28 | 10 km | Emerging (první produkční nasazení) |
|
||||||
|
|
||||||
|
**HBA (Host Bus Adapter)**:
|
||||||
|
|
||||||
|
| Výrobce | Model | Rychlost | PCIe | Porty | Features |
|
||||||
|
|---------|-------|----------|------|-------|----------|
|
||||||
|
| **Broadcom / Emulex** | LPe35000 | 32 GFC | PCIe 3.0 x8 | 1-2 | NVMe-FC, T10-PI, SR-IOV |
|
||||||
|
| **Broadcom / Emulex** | LPe36000 | 64 GFC | PCIe 4.0 x16 | 1-2 | NVMe-FC, FC-NVMe |
|
||||||
|
| **Marvell / QLogic** | QLE2770 | 32 GFC | PCIe 3.0 x8 | 1-2 | FC-NVMe, T10-PI |
|
||||||
|
| **Marvell / QLogic** | QLE2870 | 64 GFC | PCIe 4.0 x8 | 1-2 | NVMe-FC, 64GFC |
|
||||||
|
|
||||||
|
**FC SAN topology**:
|
||||||
|
|
||||||
|
```
|
||||||
|
Server ──HBA── FC Switch ──── Storage Array (FC port)
|
||||||
|
│ │
|
||||||
|
│ ┌────┴────┐
|
||||||
|
│ │ Fabric │
|
||||||
|
│ └─────────┘
|
||||||
|
│
|
||||||
|
──── ISL (Inter-Switch Link) ──── backup fabric (B)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Zoning** (FC):
|
||||||
|
|
||||||
|
```
|
||||||
|
Zone A: Server1_HBA1 + Storage_Port1 (production)
|
||||||
|
Zone B: Server1_HBA2 + Storage_Port2 (backup fabric)
|
||||||
|
Zone C: Backup_Server + Storage_Target (backup)
|
||||||
|
```
|
||||||
|
|
||||||
|
### iSCSI
|
||||||
|
|
||||||
|
| Vlastnost | iSCSI | Poznámka |
|
||||||
|
|-----------|-------|----------|
|
||||||
|
| **Transport** | TCP/IP (port 3260) | Po standardním ethernetu |
|
||||||
|
| **Rychlost** | 1/10/25/100 GbE | Stejná jako Ethernet |
|
||||||
|
| **Initiator** | SW (OS) nebo HW (TOE) | SW initiator zdarma, ~5-10 % CPU load |
|
||||||
|
| **Multipathing** | MPIO (Multiple Connections per Session) | Až 8 cest, active/active nebo active/passive |
|
||||||
|
| **CHAP** | Authentication | Mutual CHAP doporučen |
|
||||||
|
| **Jumbo frames** | Doporučeno MTU 9000 | Snížení CPU overhead, vyšší throughput |
|
||||||
|
| **Use case** | Malé a střední SAN, backup, DR | Levnější než FC, nižší výkon |
|
||||||
|
|
||||||
|
**iSCSI configuration**:
|
||||||
|
|
||||||
|
```
|
||||||
|
# Software initiator (Linux)
|
||||||
|
iscsiadm -m discovery -t sendtargets -p 10.0.0.100:3260
|
||||||
|
iscsiadm -m node --login -T iqn.2024-05.storage:array01
|
||||||
|
|
||||||
|
# Multipath (dm-multipath)
|
||||||
|
mpathconf --enable --with_multipathd y
|
||||||
|
# /etc/multipath.conf: aliases, failback, rr_min_io
|
||||||
|
```
|
||||||
|
|
||||||
|
### NVMe-oF (NVMe over Fabrics)
|
||||||
|
|
||||||
|
| Transport | Protokol | Latence | CPU overhead | Use case |
|
||||||
|
|-----------|----------|---------|-------------|----------|
|
||||||
|
| **NVMe over FC** | FC-NVMe (FC Gen 6/7) | <10 µs | Nízký | Enterprise SAN, VMware |
|
||||||
|
| **NVMe over RDMA (RoCE v2)** | RDMA (RoCE) | <5 µs | Velmi nízký | AI/ML, HPC, K8s (CSI) |
|
||||||
|
| **NVMe over TCP** | TCP | ~50 µs | Střední (10-20 % CPU) | Standardní Ethernet, bez RDMA |
|
||||||
|
| **NVMe over InfiniBand** | IB RC/UC | <3 µs | Nejnižší | HPC, AI training |
|
||||||
|
|
||||||
|
**NVMe-oF comparison**:
|
||||||
|
|
||||||
|
| Vlastnost | FC-NVMe | NVMe/RoCE | NVMe/TCP | NVMe/IB |
|
||||||
|
|-----------|---------|-----------|----------|---------|
|
||||||
|
| **Latence (target)** | ~8 µs | ~4 µs | ~50 µs | ~3 µs |
|
||||||
|
| **Bandwidth** | 64 Gbps | 100/200 GbE | 25/100 GbE | NDR 400 Gbps |
|
||||||
|
| **Requires special HW** | FC HBA + switch | RoCE NIC + DCB switch | Standard NIC | IB HCA + switch |
|
||||||
|
| **Ecosystem** | Broadcom, Marvell | NVIDIA, Broadcom | OS built-in | NVIDIA Mellanox |
|
||||||
|
| **Use case** | VMware, enterprise SAN | AI/ML, K8s, HPC | SMB, K8s, cost-effective | HPC, large AI |
|
||||||
|
|
||||||
|
### SAS (Serial Attached SCSI)
|
||||||
|
|
||||||
|
| Generace | Rychlost | Kabeláž | Dosah | Use case |
|
||||||
|
|----------|----------|---------|-------|----------|
|
||||||
|
| **SAS 3** | 12 Gbps | SAS cable (SFF-8644) | 6-10 m | Legacy storage, DAS |
|
||||||
|
| **SAS 4** | 22.5 Gbps | SAS cable (SFF-8644) | 6-10 m | Současný standard |
|
||||||
|
| **SAS 5** | 45 Gbps | SAS cable (SFF-8644) | 6-10 m | Emerging |
|
||||||
|
|
||||||
|
**SAS topology**: Server → SAS HBA → SAS expander → SAS disk (point-to-point, ne shared jako FC)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Server connectivity — decision matrix
|
||||||
|
|
||||||
|
| Workload | Primární | Sekundární | Management |
|
||||||
|
|----------|----------|-----------|------------|
|
||||||
|
| **Web / API** | 2× 25 GbE (LACP) | — | 1× 1 GbE BMC |
|
||||||
|
| **Databáze** | 2× 25/100 GbE (RSS) | 2× 32 Gb FC (SAN) | 1× 1 GbE BMC |
|
||||||
|
| **Virtualizace** | 4× 25 GbE (SR-IOV) | 2× 32 Gb FC (VMFS) | 1× 1 GbE BMC |
|
||||||
|
| **Kubernetes** | 2× 25/100 GbE | — | 1× 1 GbE BMC |
|
||||||
|
| **Storage node** | 2× 100 GbE (RoCE) | 2× 25 GbE (management) | 1× 1 GbE BMC |
|
||||||
|
| **AI training** | 8× 400 GbE + IB NDR | 4× 100 GbE (storage) | 1× 1 GbE BMC |
|
||||||
|
| **AI inference** | 4× 100 GbE (RoCE) | 2× 25 GbE (management) | 1× 1 GbE BMC |
|
||||||
|
| **HPC** | InfiniBand NDR | 2× 100 GbE (storage) | 1× 1 GbE BMC |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Server NIC placement (PCIe slot optimization)
|
||||||
|
|
||||||
|
```
|
||||||
|
2U Server (GPU/AI):
|
||||||
|
┌─────────────────────────────────────────────────┐
|
||||||
|
│ PCIe 0: GPU (x16) — NVLink / InfiniBand (x16) │
|
||||||
|
│ PCIe 1: GPU (x16) — NIC 100 GbE (x16) │
|
||||||
|
│ PCIe 2: GPU (x16) │
|
||||||
|
│ PCIe 3: GPU (x16) │
|
||||||
|
│ PCIe 4: GPU (x16) │
|
||||||
|
│ PCIe 5: GPU (x16) — NIC 100 GbE (x16) │
|
||||||
|
│ PCIe 6: Storage HBA / NIC (x8) │
|
||||||
|
│ PCIe 7: Management / OCP (x8) │
|
||||||
|
└─────────────────────────────────────────────────┘
|
||||||
|
|
||||||
|
1U Standard:
|
||||||
|
┌─────────────────────────────────┐
|
||||||
|
│ OCP: 2× 25 GbE (management) │
|
||||||
|
│ PCIe 0: NIC 25 GbE (x8) │
|
||||||
|
│ PCIe 1: Storage HBA / FC (x8) │
|
||||||
|
│ PCIe 2: GPU (x16, optional) │
|
||||||
|
│ PCIe 3: NVMe (x4, M.2) │
|
||||||
|
└─────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### NVIDIA Mellanox ConnectX NICs
|
||||||
|
|
||||||
|
NVIDIA Mellanox je přední výrobce NIC adaptérů pro AI/HPC a cloud datová centra.
|
||||||
|
|
||||||
|
| Model | PCIe | Max rychlost | Form factor | Klíčové features |
|
||||||
|
|-------|------|-------------|-------------|------------------|
|
||||||
|
| **ConnectX-5** | PCIe 3.0 x16 | 100 GbE (dual) | HHHL | RoCE, NVMe-oF target offload, MPI offload |
|
||||||
|
| **ConnectX-6 Dx** | PCIe 4.0 x16 | 200 GbE (1-port) / 100 GbE (2-port) | HHHL, OCP 3.0 | ASAP² vSwitch offload, IPsec/TLS inline crypto, AES-XTS, 215 Mpps DPDK |
|
||||||
|
| **ConnectX-6 Lx** | PCIe 4.0 x8 | 25 GbE (dual) | HHHL, OCP 3.0 | RoCE, Secure Boot, low-power |
|
||||||
|
| **ConnectX-7** | PCIe 5.0 x16 | 400 GbE (1-port) / 200 GbE (2-port) | HHHL | NDR InfiniBand + 400GbE, GPUDirect, SHARP |
|
||||||
|
| **ConnectX-8** | PCIe 6.0 x16 | 800 GbE (1-port) / 400 GbE (2-port) | HHHL | XDR InfiniBand, sub-500ns latence, in-network computing, multi-host |
|
||||||
|
|
||||||
|
**Platformy**: Spectrum-X Ethernet (end-to-end AI networking), Quantum InfiniBand, BlueField DPU.
|
||||||
|
|
||||||
|
### Broadcom Emulex FC HBA
|
||||||
|
|
||||||
|
| Model | Rychlost | PCIe | Porty | Features |
|
||||||
|
|-------|----------|------|-------|----------|
|
||||||
|
| **LPe35000** (Gen 7) | 32 GFC | PCIe 3.0 x8 | 1-2 | NVMe-FC, T10-PI (DIF), SR-IOV, Silicon Root of Trust |
|
||||||
|
| **LPe35002** (Gen 7) | 32 GFC | PCIe 3.0 x8 | 2 | NVMe-FC, Secure Boot, digitálně podepsaný firmware |
|
||||||
|
| **LPe36000** (Gen 7) | 64 GFC | PCIe 4.0 x16 | 1-2 | První 64GFC HBA na trhu, 10M IOPS, 3× lepší latence než Gen 6 |
|
||||||
|
|
||||||
|
**Klíčové vlastnosti**: podpora NVMe over FC, T10 DIF (Data Integrity Field), 10M MTBF, NIST SP 800-193 compliant. Gen 7 přináší až 10M IOPS a 3× nižší latenci oproti Gen 6.
|
||||||
|
|
||||||
|
### NVMe-oF specifikace
|
||||||
|
|
||||||
|
NVMe over Fabrics (NVMe-oF) rozšiřuje NVMe protokol z lokálního PCIe na síťové transporty. První specifikace 1.0 vydána v červnu 2016, aktuálně součástí NVMe 2.3 (srpen 2025). Podporované transporty:
|
||||||
|
|
||||||
|
| Transport | Specifikace | Use case |
|
||||||
|
|-----------|------------|----------|
|
||||||
|
| **NVMe over PCIe** | NVMe Base | Lokální NVMe SSD |
|
||||||
|
| **NVMe over RDMA** (RoCE, InfiniBand, iWARP) | NVMe Transport | AI/ML, HPC, nejnižší latence <5 µs |
|
||||||
|
| **NVMe over TCP** | NVMe Transport | Standardní Ethernet, bez RDMA, latence ~50 µs |
|
||||||
|
| **NVMe over FC** (FC-NVMe) | INCITS T11 | Enterprise SAN, FC fabric |
|
||||||
|
|
||||||
|
NVMe 2.3 přidává Computational Programs Command Set, Storage Level Management (SLM), a Zoned Namespaces (ZNS). NVMe-MI definuje management rozhraní.
|
||||||
|
|
||||||
|
### Dell PowerEdge R760 — NIC placement
|
||||||
|
|
||||||
|
Server Dell R760 podporuje:
|
||||||
|
- **OCP 3.0** adaptéry (až 2×) — 1/10/25/100 GbE
|
||||||
|
- **PCIe Gen5** sloty — 8× slotů (6× FHHL + 2× LP)
|
||||||
|
- **LOM** — 2× 1 GbE Broadcom 5720 na základní desce
|
||||||
|
- Maximální rychlost NIC: 100 GbE (QSFP56)
|
||||||
|
- Supported typy: RJ45, SFP+, SFP28, QSFP28, QSFP56
|
||||||
|
|
||||||
|
Doporučené konfigurace:
|
||||||
|
- Standard: OCP 3.0 2× 25 GbE + PCIe storage HBA
|
||||||
|
- AI/ML: PCIe 100 GbE (riser config 1, slot 1-2) + GPU v ostatních slotech
|
||||||
|
|
||||||
|
### HPE Gen11 NIC options
|
||||||
|
|
||||||
|
HPE ProLiant Gen11 (DL360/DL380) podporuje:
|
||||||
|
- **OCP 3.0** sloty (až 2) — 10/25/100/200 GbE (Broadcom, Intel, NVIDIA Mellanox)
|
||||||
|
- **PCIe Gen5** adaptéry — 8× slotů (DL380) / 3× sloty (DL360)
|
||||||
|
- **iLO 6** dedikovaný management port (1 GbE)
|
||||||
|
- Podporované NIC: Broadcom BCM57412 (10GbE), BCM57504 (25GbE), NVIDIA ConnectX-6 Dx (100GbE)
|
||||||
|
|
||||||
|
## Zdroje
|
||||||
|
|
||||||
|
Odkazy, knihy a standardy: [sources/infrastructure/sources.md](sources/infrastructure/sources.md)
|
||||||
|
|
||||||
|
### Doporučená literatura
|
||||||
|
|
||||||
|
| Kniha | Autoři | ISBN | Popis |
|
||||||
|
|-------|--------|------|-------|
|
||||||
|
| AI Data Center Network Design and Technologies (1st ed., 2026) | Subramaniam, Styszynski, Tambakuwala | 978-0-13-543628-8 | První vendor-agnostický průvodce návrhem sítí pro AI trénování a inferenci. Pokrývá high-radix fabric, lossless Ethernet/IP, UEC technologie, chlazení a power pro AI klastry. Autoři z HPE Juniper Networking. |
|
||||||
|
|
||||||
|
*Poslední revize: 2026-06-03*
|
||||||
142
MYSQL.md
Normal file
142
MYSQL.md
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
# 🐬 MySQL & MariaDB
|
||||||
|
|
||||||
|
## Přehled
|
||||||
|
|
||||||
|
MySQL je nejrozšířenější open-source relační databáze, zejména ve webovém prostředí (LAMP stack). MariaDB je fork po akvizici Oracle, plně kompatibilní s rozšířeními. Výchozí volba pro WordPress, Drupal, Magento a většinu PHP aplikací.
|
||||||
|
|
||||||
|
## Architektura (server + storage engine)
|
||||||
|
|
||||||
|
Na základě *High Performance MySQL* (Schwartz, Zaitsev, Tkachenko):
|
||||||
|
|
||||||
|
```text
|
||||||
|
MySQL Server Layer
|
||||||
|
├── Connection handling (thread-per-connection)
|
||||||
|
├── Query parser & optimizer
|
||||||
|
├── Built-in functions
|
||||||
|
└── Storage Engine API
|
||||||
|
├── InnoDB (výchozí, MVCC, ACID)
|
||||||
|
├── MyISAM (legacy, table-level locks)
|
||||||
|
├── MEMORY (in-memory, HEAP)
|
||||||
|
└── ... (ostatní)
|
||||||
|
```
|
||||||
|
|
||||||
|
### InnoDB (výchozí engine od MySQL 5.5+)
|
||||||
|
|
||||||
|
- **MVCC** — Multi-Version Concurrency Control (snapshot isolation)
|
||||||
|
- **REPEATABLE READ** (výchozí) — next-key locking zabraňuje phantom reads
|
||||||
|
- **Clustered index** — primární klíč = fyzické uspořádání dat
|
||||||
|
- **Buffer pool** — cache dat a indexů v RAM (hlavní parametr výkonu)
|
||||||
|
- **Doublewrite buffer** — prevence částečného zápisu stránky
|
||||||
|
|
||||||
|
### Schema design tipy
|
||||||
|
|
||||||
|
- Preferovat menší datové typy (MEDIUMINT místo INT, TIMESTAMP místo DATETIME)
|
||||||
|
- NULL používat opatrně (každý NULL sloupec zvyšuje složitost indexu)
|
||||||
|
- ENUM používat jen pro opravdu malé, stabilní seznamy hodnot
|
||||||
|
- JSON sloupce v MySQL 8+ — užitečné pro flexibilní schema, ale ne pro joinování
|
||||||
|
|
||||||
|
### Deferred join pattern
|
||||||
|
|
||||||
|
```sql
|
||||||
|
-- 1. covering index najde PK
|
||||||
|
-- 2. teprve pak join na plný řádek
|
||||||
|
SELECT * FROM users
|
||||||
|
INNER JOIN (
|
||||||
|
SELECT id FROM users
|
||||||
|
WHERE status = 'active'
|
||||||
|
ORDER BY created_at DESC
|
||||||
|
LIMIT 100 OFFSET 1000
|
||||||
|
) AS tmp USING (id);
|
||||||
|
```
|
||||||
|
|
||||||
|
**Join decomposition**: Někdy výhodnější rozdělit JOIN na několik jednoduchých dotazů (lepší využití cache, méně locků, škálování napříč servery).
|
||||||
|
|
||||||
|
**IN() optimalizace**: MySQL řadí hodnoty v IN() seznamu a používá binární vyhledávání (O(log n)), na rozdíl od OR klauzulí (O(n)).
|
||||||
|
|
||||||
|
## MariaDB rozdíly oproti MySQL
|
||||||
|
|
||||||
|
| Vlastnost | MySQL 8.x | MariaDB 11.x |
|
||||||
|
|-----------|-----------|--------------|
|
||||||
|
| **Storage engine** | InnoDB (pouze) | InnoDB + XtraDB (fork) + Aria + MyRocks |
|
||||||
|
| **JSON** | Native JSON typ | JSON alias na LONGTEXT + JSON funkce |
|
||||||
|
| **CTE** | WITH (non-recursive + recursive) | WITH (non-recursive + recursive) |
|
||||||
|
| **Window functions** | Ano (8.0+) | Ano (10.2+) |
|
||||||
|
| **Sequence** | Ne (auto_increment only) | Ano (CREATE SEQUENCE) |
|
||||||
|
| **Thread pooling** | Enterprise only | Vestavěný |
|
||||||
|
| **Galera cluster** | Ne (nativně) | Ano (nativní synchronní clustering) |
|
||||||
|
|
||||||
|
## ProxySQL
|
||||||
|
|
||||||
|
ProxySQL je advanced proxy pro MySQL s pokročilým routingem:
|
||||||
|
|
||||||
|
| Vlastnost | Popis |
|
||||||
|
|-----------|-------|
|
||||||
|
| **Query routing** | Pravidla pro směrování dotazů (read/write split, sharding) |
|
||||||
|
| **Connection pooling** | Multiplexování tisíců spojení do malého poolu |
|
||||||
|
| **Query cache** | Cache výsledků v paměti (TTL, size limit) |
|
||||||
|
| **Query rewriting** | Rewrite SQL dotazů na cestě |
|
||||||
|
| **Aktivní monitoring** | Detekce výpadků backendů, automatic failover |
|
||||||
|
|
||||||
|
## Doporučení — v čem je MySQL lepší
|
||||||
|
|
||||||
|
| Oblast | MySQL | Konkurence | Proč MySQL |
|
||||||
|
|--------|-------|------------|------------|
|
||||||
|
| **Webové aplikace** | De facto standard pro WP, Drupal, Magento | PostgreSQL (méně CMS pluginů) | Nejširší podpora ve web hosting providers |
|
||||||
|
| **Čtení (SELECT heavy)** | InnoDB buffer pool, covering index, adaptive hash | PostgreSQL (MVCC overhead u čtení) | Cache-efficient, rychlé point lookupy |
|
||||||
|
| **Replikace** | Async replication, Group Replication, InnoDB Cluster | PostgreSQL (streaming replication) | Jednodušší setup, široká dokumentace |
|
||||||
|
| **Ekosystém** | ProxySQL, Orchestrator, Vitess, PlanetScale | PostgreSQL (méně nástrojů) | Nejvíce toolingu pro správu clusteru |
|
||||||
|
| **JSON v MySQL 8+** | JSON datový typ, Multi-Value Indexes | PostgreSQL (jsonb, GIN) | Srovnatelné, Multi-Value Index unikátní |
|
||||||
|
|
||||||
|
### Kdy použít MySQL / MariaDB
|
||||||
|
|
||||||
|
- **CMS / e-commerce** — WordPress, Drupal, Magento, Joomla (všechny vyžadují MySQL)
|
||||||
|
- **Read-heavy aplikace** — InnoDB buffer pool efektivně cachuje často čtená data
|
||||||
|
- **Jednoduchá replicace** — Group Replication / InnoDB Cluster pro HA
|
||||||
|
- **MariaDB pro Galera cluster** — synchronní multi-master clustering
|
||||||
|
- **PHP aplikace** — nativní PHP MySQL extensions (mysqli, PDO_MySQL)
|
||||||
|
|
||||||
|
## MySQL / MariaDB licensing
|
||||||
|
|
||||||
|
### MySQL licensing
|
||||||
|
|
||||||
|
| Varianta | Licence | Cena | Omezení |
|
||||||
|
|----------|---------|------|---------|
|
||||||
|
| **MySQL Community (GPL)** | GPL v2 | $0 | Pokud distribuujete aplikaci, která obsahuje MySQL (např. embedded), musíte uvolnit celou aplikaci pod GPL. Webová aplikace (přes network) ≠ distribuce — GPL se netýká |
|
||||||
|
| **MySQL Standard (Commercial)** | Commercial (Oracle) | ~$2 000/server/rok | Bez GPL omezení, production support, MySQL Enterprise Monitor |
|
||||||
|
| **MySQL Enterprise** | Commercial (Oracle) | ~$5 000/server/rok | Vše výše + MySQL Enterprise Backup, Audit, Firewall, Thread Pool, Encryption |
|
||||||
|
| **MySQL Cluster CGE** | Commercial (Oracle) | ~$10 000/server/rok | Distributed multi-master cluster (NDB), telco-grade |
|
||||||
|
|
||||||
|
**Kdy GPL vadí**: Pokud embeddedujete MySQL do komerčního produktu (např. desktopová aplikace s MySQL knihovnou). Webová aplikace komunikující přes TCP/IP **není** distribuce — GPL se neuplatní.
|
||||||
|
|
||||||
|
### MariaDB licensing
|
||||||
|
|
||||||
|
| Varianta | Licence | Cena | Omezení |
|
||||||
|
|----------|---------|------|---------|
|
||||||
|
| **MariaDB Community** | GPL v2 | $0 | Stejné jako MySQL Community — GPL, ale bez Oracle licenčních rizik |
|
||||||
|
| **MariaDB Enterprise** | Business Source License (BSL) | Subscription (~$2-5k/server/rok) | Po 3 letech se automaticky mění na GPL v2. Zahrnuje enterprise funkce (ColumnStore, Spider, Xpand) |
|
||||||
|
| **MariaDB SkySQL** | Managed (BSL) | Pay-per-use (~$0.10-1.00/hod) | Fully managed DBaaS |
|
||||||
|
|
||||||
|
**Klíčový rozdíl oproti Oracle MySQL**:
|
||||||
|
- MariaDB je nezávislý fork, není pod kontrolou Oracle
|
||||||
|
- BSL model je liberálnější — po 3 letech se stává open source
|
||||||
|
- MariaDB nevyžaduje commercial licenci pro enterprise funkce (v MySQL jsou enterprise-only)
|
||||||
|
|
||||||
|
### Kdy použít něco jiného
|
||||||
|
|
||||||
|
- **Komplexní dotazy / CTE / window functions** → PostgreSQL (pokročilejší optimalizátor)
|
||||||
|
- **GIS / geoprostorová data** → PostgreSQL + PostGIS
|
||||||
|
- **Konzistence > rychlost** → PostgreSQL (SSI serializable)
|
||||||
|
- **High-throughput zápisů** → Cassandra (MySQL master bottleneck)
|
||||||
|
- **Distribuovaný SQL cluster** → CockroachDB, Vitess (MySQL kompatibilní sharding)
|
||||||
|
|
||||||
|
## Zdroje
|
||||||
|
|
||||||
|
Odkazy, knihy a standardy: [sources/databases/sources.md](sources/databases/sources.md)
|
||||||
|
|
||||||
|
### Doporučená literatura
|
||||||
|
|
||||||
|
| Kniha | Autoři | ISBN | Popis |
|
||||||
|
|-------|--------|------|-------|
|
||||||
|
| High Performance MySQL (4th ed.) | Schwartz, Zaitsev, Tkachenko | 978-1492075292 | Komplexní průvodce architekturou, optimalizací a monitoringem MySQL |
|
||||||
|
|
||||||
|
*Poslední revize: 2026-06-03*
|
||||||
119
REDIS.md
Normal file
119
REDIS.md
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
# 🔴 Redis
|
||||||
|
|
||||||
|
## Přehled
|
||||||
|
|
||||||
|
Redis je in-memory key-value store s pokročilými datovými strukturami, používaný primárně jako cache, session store, message broker a real-time databáze. Běží v RAM s možností persistence na disk (RDB/AOF).
|
||||||
|
|
||||||
|
## Data structures
|
||||||
|
|
||||||
|
| Struktura | Popis | Use case |
|
||||||
|
|-----------|-------|----------|
|
||||||
|
| **String** | Binární string (max 512 MB) | Cache hodnoty, session tokeny, counters |
|
||||||
|
| **Hash** | Map field-value | Uživatelský profil, objekt v cache |
|
||||||
|
| **List** | Linked list (push/pop na oba konce) | Queue (RPUSH/LPOP), log stream |
|
||||||
|
| **Set** | Unikátní hodnoty (unordered) | Tags, deduplikace, memberships |
|
||||||
|
| **Sorted Set** | Unikátní + score (řazení) | Leaderboardy, rate limiting, timeouts |
|
||||||
|
| **Bitmap** | Bitové pole | Feature flagy, daily active users |
|
||||||
|
| **HyperLogLog** | Approximate cardinality (12 KB = 2^64) | Unikátní návštěvníci (error < 1 %) |
|
||||||
|
| **Stream** | Append-only log (Kafka-like) | Event store, messaging |
|
||||||
|
| **Geospatial** | Geo-indexing (GEOADD, GEOSEARCH) | Lokalitní dotazy, proximity search |
|
||||||
|
| **JSON** | JSON dokument (RedisJSON modul) | Dokumentové struktury |
|
||||||
|
|
||||||
|
## Eviction policies
|
||||||
|
|
||||||
|
| Policy | Popis | Use case |
|
||||||
|
|--------|-------|----------|
|
||||||
|
| **noeviction** | Chyba při zápisu když je plno | Transakční data, neztrácet |
|
||||||
|
| **allkeys-lru** | LRU na všechny klíče | Obecná cache, standard |
|
||||||
|
| **allkeys-lfu** | LFU na všechny klíče | Často přistupovaná data |
|
||||||
|
| **volatile-lru** | LRU na klíče s TTL | Cache s expirací |
|
||||||
|
| **volatile-ttl** | Nejblíž k expiraci | Krátkodobá data |
|
||||||
|
| **allkeys-random** | Náhodný | Testování |
|
||||||
|
|
||||||
|
## Redis Cluster vs Sentinel
|
||||||
|
|
||||||
|
| Vlastnost | Redis Sentinel | Redis Cluster |
|
||||||
|
|-----------|---------------|---------------|
|
||||||
|
| **Škálování** | Read replicas (master + replica) | Data sharding (16384 hash slotů) |
|
||||||
|
| **Auto-failover** | Ano (Sentinel) | Ano (gossip-based) |
|
||||||
|
| **Multi-key ops** | Ano (transactiony na masteru) | Omezené (stejný hash slot) |
|
||||||
|
| **Client komunikace** | Přes Sentinel (deprecated) | Cluster nodes redirect (MOVED/ASK) |
|
||||||
|
| **Minimální uzly** | Master + Replica + 3 Sentinel | 3 masters (každý s replikou) |
|
||||||
|
| **Use case** | Vysoká dostupnost, single shard | Multi-shard, horizontální škálování |
|
||||||
|
|
||||||
|
## Persistence
|
||||||
|
|
||||||
|
| Metoda | Popis | RTO | RPO | Use case |
|
||||||
|
|--------|-------|-----|-----|----------|
|
||||||
|
| **RDB** (Redis Database) | Periodický snapshot do dump.rdb | Minuty | Poslední snapshot | Cache, ztráta tolerována |
|
||||||
|
| **AOF** (Append-Only File) | Append-only log všech write operací | Sekundy | 1 s (fsync every sec) | Data nesmí být ztracena |
|
||||||
|
| **RDB + AOF** | Kombinace | Sekundy | 1 s | Doporučeno pro produkci |
|
||||||
|
|
||||||
|
## Moduly (RediSearch, RedisJSON, RedisGraph)
|
||||||
|
|
||||||
|
Redis rozšiřitelný modulem:
|
||||||
|
- **RediSearch** — full-text search, facety, prefix/suffix vyhledávání
|
||||||
|
- **RedisJSON** — JSON path dotazy, manipulace dokumentů
|
||||||
|
- **RedisGraph** — grafová DB (na bázi Cypher, deprecated od 2025)
|
||||||
|
- **RedisTimeSeries** — time-series s downsamplingem, retention politikami
|
||||||
|
- **RedisBloom** — Bloom filtry, Cuckoo filtry, Top-K, Count-Min Sketch
|
||||||
|
|
||||||
|
## Memcached vs Redis
|
||||||
|
|
||||||
|
| Vlastnost | Redis | Memcached |
|
||||||
|
|-----------|-------|-----------|
|
||||||
|
| **Data structures** | String, Hash, List, Set, Sorted Set, Stream, JSON | Pouze String |
|
||||||
|
| **Persistence** | RDB + AOF | Žádná (čistě in-memory) |
|
||||||
|
| **Replication** | Master-replica, Cluster | Žádná (multi-threaded) |
|
||||||
|
| **Eviction** | 6 politik | LRU pouze |
|
||||||
|
| **Lua scripting** | Ano (EVAL) | Ne |
|
||||||
|
| **Transakce** | Ano (MULTI/EXEC) | Ne |
|
||||||
|
| **Pub/Sub** | Ano | Ne |
|
||||||
|
| **Streaming** | Ano (Stream) | Ne |
|
||||||
|
|
||||||
|
## Doporučení — v čem je Redis lepší
|
||||||
|
|
||||||
|
| Oblast | Redis | Konkurence | Proč Redis |
|
||||||
|
|--------|-------|------------|------------|
|
||||||
|
| **Cache (in-memory)** | < 1 ms latence, 6 eviction politik | Memcached (pouze LRU string) | Bohatší datové typy, persistence, cluster |
|
||||||
|
| **Session store** | Hash + TTL, Cluster pro HA | DynamoDB (vyšší latence) | Jednodušší, rychlejší, nativní expirace |
|
||||||
|
| **Rate limiting** | Sorted Set (sliding window counter) | Aplikace v DB (složité) | Atomic operace, vestavěná logika |
|
||||||
|
| **Leaderboard / scoring** | Sorted Set (ZADD, ZRANK, ZREVRANGE) | SQL (ORDER BY + COUNT = expensive) | O(1) rank, O(log N) insert |
|
||||||
|
| **Message queue** | List/Stream (RPUSH+BLPOP) | Kafka (těžká, JVM) | Lehká, embedded, žádný broker |
|
||||||
|
| **Real-time analytics** | HyperLogLog + Bitmap + Stream | ClickHouse (těžká analytika) | Agregace v reálném čase, malá RAM |
|
||||||
|
| **Geolokace** | GEOADD, GEOSEARCH, GEODIST | PostGIS (těžší, disk-based) | In-memory, ideální pro real-time |
|
||||||
|
|
||||||
|
### Kdy použít Redis
|
||||||
|
|
||||||
|
- **Cache pro API** — response cache, DB query cache, session cache
|
||||||
|
- **Session management** — distribuované session napříč servery
|
||||||
|
- **Rate limiting** — API gateway, per-user/per-IP limity
|
||||||
|
- **Leaderboardy / žebříčky** — real-time skórování
|
||||||
|
- **Message broker** — fronta úloh (RQ, Celery s Redis), pub/sub notifikace
|
||||||
|
- **Real-time analytics** — počítání unikátů, metrik, dashboardů
|
||||||
|
- **Geoproxmity** — "najdi nejbližší pobočku" v < 1 ms
|
||||||
|
|
||||||
|
### Kdy použít něco jiného
|
||||||
|
|
||||||
|
- **Trvalá data s SQL dotazy** → PostgreSQL nebo MySQL
|
||||||
|
- **Velké objemy > RAM** → Memcached (multi-threaded), Dragonfly (více RAM utilization)
|
||||||
|
- **Dlouhodobá fronta zpráv** → Kafka, RabbitMQ (disk-based persistence)
|
||||||
|
- **Dokumentová DB** → MongoDB (persistentní, komplexní dotazy)
|
||||||
|
|
||||||
|
## Redis licensing
|
||||||
|
|
||||||
|
Redis prošel zásadní změnou licence v roce 2024:
|
||||||
|
|
||||||
|
| Období | Licence | Podmínky |
|
||||||
|
|--------|---------|----------|
|
||||||
|
| **Do března 2024** | BSD 3-clause (open source) | Zcela volné použití, včetně managed služeb |
|
||||||
|
| **Od března 2024** | RSALv2 + SSPL (dual license) | SSPL: pokud nabízíte Redis jako managed službu, musíte uvolnit celý stack jako open source. RSALv2: omezení na cloud provozovatele |
|
||||||
|
| **Valkey (fork, Linux Foundation)** | BSD 3-clause | Plně open source fork Redis 7.2, podpora od Linux Foundation, AWS, Google, Oracle |
|
||||||
|
|
||||||
|
**Dopad**: Managed Redis služby (AWS ElastiCache, Google Memorystore, Azure Cache for Redis) nemohou používat Redis 7.4+ bez komerční licence → přechází na **Valkey**. Pro self-hosted Redis beze změny — RSALv2/SSPL neomezuje interní použití.
|
||||||
|
|
||||||
|
## Zdroje
|
||||||
|
|
||||||
|
Odkazy, knihy a standardy: [sources/databases/sources.md](sources/databases/sources.md)
|
||||||
|
|
||||||
|
*Poslední revize: 2026-06-03*
|
||||||
Reference in New Issue
Block a user