- Eine eingebettete Storage-Engine, aufgebaut als Log-Structured Merge-tree (LSM-tree)
- Im Unterschied zu bestehenden LSM-tree-Storage-Engines schreibt SlateDB Daten in Object Storage (S3, GCS, ABS, MinIO, Tigris usw.)
- Durch die Nutzung von Object Storage bietet es unbegrenzte Storage-Kapazität, hohe Dauerhaftigkeit und einfache Replikation
- Nachteilig sind jedoch die im Vergleich zu lokalen Festplatten höhere Latenz und die API-Kosten von Object Storage
Strategien von SlateDB zur Umgehung der Nachteile
- Schreibvorgänge werden in Batches verarbeitet, um hohe Schreib-API-Kosten (PUT) zu reduzieren
- Anstatt jeden
put()-Aufruf in Object Storage zu schreiben, wird die MemTable periodisch als String Sorted Table (SST) in den Object Storage geflusht
- Das Flush-Intervall ist konfigurierbar
- Bietet eine asynchrone
put-Methode, um auch die Schreiblatenz zu reduzieren
- Clients, die starke Dauerhaftigkeit bevorzugen, können in
put mit await warten, bis die MemTable in den Object Storage geflusht wurde (Abwägung zwischen Latenz und Dauerhaftigkeit)
- Clients, die niedrige Latenz bevorzugen, können das von
put zurückgegebene Future ignorieren
- Verwendet Standard-Caching-Techniken für LSM-trees, um Leselatenz und Lese-API-Kosten (GET) zu reduzieren
- In-Memory-Block-Cache, Komprimierung, Bloom-Filter, lokaler SST-Festplatten-Cache
Noch keine Kommentare.