Apache Cassandra¶
Czym jest?¶
Apache Cassandra to rozproszona baza danych typu NoSQL, zaprojektowana do przechowywania ogromnych ilości danych na wielu serwerach. Powstała z myślą o sytuacjach, w których jedna maszyna już nie wystarcza, a kluczowa jest ciągła dostępność i odporność na awarie.
Architektura¶
Cassandra nie ma węzła nadrzędnego (master) - wszystkie węzły w klastrze są równorzędne (architektura peer-to-peer). Dane są automatycznie rozkładane i replikowane między węzłami, więc ta sama informacja istnieje w kilku kopiach na różnych maszynach.
Skalowanie i dostępność¶
Klaster skaluje się poziomo - gdy potrzebujesz większej pojemności lub wydajności, po prostu dokładasz kolejne węzły, a Cassandra sama rozłoży na nie obciążenie. Stawia przy tym na wysoką dostępność i tolerancję podziału sieci, zgodnie z założeniami modelu, w którym chwilowa niespójność danych jest akceptowalną ceną za to, że system nigdy nie przestaje odpowiadać.
Model danych i zapytania¶
Dane organizuje się w przestrzenie kluczy (keyspace) i tabele, ale w przeciwieństwie do baz relacyjnych projektuje się je pod konkretne zapytania, a nie pod znormalizowaną strukturę. Do komunikacji służy język CQL (Cassandra Query Language).
Zastosowania¶
Cassandra sprawdza się tam, gdzie jest dużo zapisów i danych rozproszonych geograficznie - przykładowo logi, dane z urządzeń IoT, historie transakcji czy systemy rekomendacji. Używają jej duże platformy obsługujące miliony użytkowników, którym zależy na tym, by baza działała nieprzerwanie i niezależnie od skali.