Porównanie: Aerospike vs Cassandra [zamknięte]

Zarówno Aerospike, jak i Cassandra twierdzą, że są lepsi od innych w swoich własnych benchmarkach.

Odniesienie: http://java.dzone.com/articles/benchmarking-cassandra-right i kilka innych.

Czy ktoś używał obu z nich ?
Czy Aerospike jest tak dobry jak twierdzi?
Czy w końcu wskazane jest zastąpienie Cassandry Aerospike ?

Author: Community, 2014-08-22

4 answers

Wybór pomiędzy Cassandrą a Aerospike naprawdę zależy od Twojego przypadku użycia bardziej niż cokolwiek innego. Osobiście używałem zarówno jako systemu produkcyjnego dla tego samego projektu i dla mnie Aerospike był wyraźnym zwycięzcą, ale to dlatego, że nasz przypadek użycia jest bardzo równoległe, niskie opóźnienia, transakcyjne, małe aktualizacje miliardów wpisów z ~10x więcej odczytu niż zapisu wolumenu. W tym właśnie wyróżnia się Aerospike, ma minimalne opóźnienie, jakie kiedykolwiek widziałem w takiej bazie danych, nawet gdy korzystanie z przestrzeni nazw SSD. Z tych powodów Aerospike był dla nas oczywistym wyborem.

Z drugiej strony Cassandra jest lepsza dla dużej głośności zapisu i może obsługiwać większe rekordy. Wszystko jest oparte na stronie, więc działa dobrze na dyskach innych niż SSD, ale nigdy nie może zapewnić ekstremalnie niskiego opóźnienia, które Aerospike może, chyba że Twoje rekordy pasują do pamięci podręcznej. Warto również zauważyć, że Cassandra jest znacznie trudniejsza do utrzymania z perspektywy operacyjnej niż Aerospike. Dla nas osobiście był to operations nightmare i ja wiemy, że Netflix musi zatrudnić spory zespół inżynierów operacyjnych wyłącznie do zarządzania klastrami Cassandra. Również podczas gdy system mógł już bardziej dojrzał, kiedy go używaliśmy (około wersji 1.0), uderzaliśmy w dziwne okazjonalne błędy twierdzenia i wyjątki, które powstrzymywały wewnętrzne akcje db przed wykonywaniem i zazwyczaj musieliśmy usuwać dane z tych węzłów, aby je naprawiać za każdym razem.

Kolejnym czynnikiem jest tutaj koszt, który może, ale nie musi grać do twojej decyzji w zależności od Twojego wniosku. Im większa przestrzeń kluczy, tym droższy będzie klaster Aerospike z punktu widzenia sprzętu. Wszystkie klucze muszą być przechowywane w pamięci, niezależnie od tego, czy jest to przestrzeń nazw w pamięci, czy ssd. Po osiągnięciu zakresu miliardów kluczy będziesz potrzebował terabajtów pamięci ram w klastrze, aby obsługiwać to z współczynnikiem replikacji wynoszącym 2. Cassandra oczywiście nie ma tego problemu, ponieważ klucze i wartości są zarówno przechowywane na dysku.

To odpowiedz na drugie pytania 2, tak, jest tak dobry, jak twierdzi, przechowujemy około kluczy 5B i robimy ~1M TPS przy szczytowym obciążeniu i robi to bez zerwania potu(chociaż zajmuje to prawie 20 węzłów na klaster, aby to zrobić z 120 GB PAMIĘCI RAM każdy). A co do tego, czy wskazane jest zastąpienie Cassandry Aerospike, dla nas było to zdecydowane zwycięstwo i słuszna decyzja. Jeśli Twoja aplikacja pasuje do projektu Aerospike i okaże się opłacalna, zdecydowanie wskazane jest dokonanie przełącznika. Kiedy to sprowadza się do tego, chociaż chodzi o Twój przypadek użycia. Jeśli nie jest jasne, który z nich jest lepszy dla ciebie, spróbuj ich obu i zobacz, jak się rozgrywają. Powodzenia.

Edit:

Jednym z powodów, dla których warto wybrać Cassandrę zamiast Aerospike, jest to, że aplikacje wymagają pewnych gwarancji spójności. W przypadku aplikacji takich jak np. liczniki, Aerospike może stać się w stanie niespójnym ze względu na partycję sieciową, podczas gdy Cassandra jest do tego zdolna poprzez użycie konfliktu darmowe replikowane typy danych (CRDT). W dobrej sieci, a także w wielu przypadkach użytkowania w ogóle nie jest to problem, ale jak wspomniano wcześniej wydajność Aerospike nie może być pobity i to zazwyczaj dlatego jest wybrany.

Edit 2:

Aerospike v4 wprowadziło teraz swoją wersję trybu spójnego (zweryfikowanego przez Jepsena: https://jepsen.io/analyses/aerospike-3-99-0-3 ). dodatkowo Aerospike zaimplementował ją dzięki silnej konsystencji, podczas gdy Cassandra ma tylko ewentualna spójność dzięki zastosowaniu CRDTs, dzięki czemu nadal można odczytywać stare dane. Również z osobistych testów mogę powiedzieć, że wydajność podczas normalnej pracy nie ucierpiała dla naszego przypadku użytkowania przy użyciu ich mocno spójnego trybu.

 58
Author: user1084563,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-01 18:31:07

Jeśli potrzebujesz stabilnej, przewidywalnej wydajności z niskim opóźnieniem i bez kłopotów z konserwacją, wybierz Aerospike. Chcesz się bawić, idź Cassandra. Bez żalu przywiozłem Cassandrę ponad 4 lata temu do mojej firmy, ale dzisiaj z powyższych powodów wybieram Aerospike, który jest open source i bardziej dostępny niż rok temu i biult jak Rosyjski czołg-bez powodu.

Musisz tylko znać granice obu platform. Graj z obu, wybierz mądrze.

 14
Author: Viktor Jevdokimov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-22 18:03:36

Oba produkty zależą od używanego przypadku użycia, ale zdecydowanie nie zawahałbym się powiedzieć, że Aerospike może skalować się lepiej niż Cassandra i w opłacalny sposób z dyskami SSD i mając mniejszą liczbę węzłów do utrzymania.

Ponadto, jeśli chodzi o użycie pamięci z dużą liczbą kluczy w Aerospike, możesz zapasować rekordy w różnych zestawach / pojemnikach w przestrzeni nazw, na przykład, jeśli masz 10 miliardów rekordów, możesz zapasować je w 5 zestawach i 5 pojemnikach w przestrzeni nazw o pojemności wartość hash do kluczy, która służyłaby jako wartość lookup. Możesz więc mieć tylko 2 miliardy rekordów w przestrzeni nazw, co zmniejszy liczbę kluczy w pamięci.

 9
Author: Anand Prakash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-05 19:26:25

Podczas gdy Wiele osób wdraża Aerospike jako czystą bazę danych w pamięci, obsługuje również konfigurację pamięci hybrydowej, rozszerzając bazę danych na Ram, SSD/Flash i dysk wirujący. Oto kilka krótkich i bardziej długich linków odpowiedzi, aby rozwiązać problem. Z pewnością ludzie chcą tego, co najlepsze z obu światów: trwalszych danych przechowywanych na tańszym dysku, a szybszych, bardziej efemerycznych danych przechowywanych w droższej-NA-GB PAMIĘCI RAM lub SSD.

Http://www.aerospike.com/hybrid-memory/

Http://www.aerospike.com/docs/architecture/storage.html

Chętnie wysłucham opinii na temat doświadczeń folka w zakresie takich wdrożeń.

 9
Author: Peter Corless,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-18 00:25:12