2012-01-13 8 views
7

widzę wiele stwierdzeń typu: „Cassandra bardzo szybko na zapisy”, „Cassandra ma czyta naprawdę wolniej niż zapisu, ale znacznie szybciej niż mysql”Cassandra jest znacznie wolniejsza od MySQL do prostych operacji?

w moim systemie Windows7: Zainstalowałem Mysql domyślnej konfiguracji. Zainstalowałem PHP5 domyślnej konfiguracji. Zainstalowałem Casssandrę domyślnej konfiguracji.

Making prosty test zapisu na MySQL: "INSERT INTO wp_test (id, title) VALUES ('id01', 'test')" daje mi wyniki: 0,0002 (s) Na 1000 wkładek: 0,1106 (s)

Wykonanie prostego, tego samego testu zapisu na Cassandrze: $ column_faily-> insert ('id01', array ('title' => 'test'))) daje mi wynik: 0.005 (s) Dla 1000 wkładek: 1.047 (s)

Dla testów czytających dostałem również informację, że Cassandra jest znacznie wolniejsza niż mysql.

Pytanie brzmi więc poprawnie, że mam 5 ms na jedną operację zapisu na Cassadrze? Lub coś jest nie tak i powinno wynosić co najmniej 0,5 ms.

+1

http://stackoverflow.com/questions/4068946/a-bit-of-advice-on-cassandra-vs-mysql i http://stackoverflow.com/questions/2332113/switching-from-mysql-to -cassandra-pros-cons może mieć przydatne porady. –

+0

Nie zdziwiłbym się, gdyby Cassandra była szczęśliwsza w systemie Linux. – ceejayoz

+1

Nie można wykonać testu tylko z 1 rekordem. Przetestuj z milionem. MySQL będzie wolniejszy w pisaniu (szczególnie, jeśli używany jest InnoDB), ale może być równie szybki lub szybszy, jeśli chodzi o czytanie w oparciu o klucz podstawowy. –

Odpowiedz

0

Jest prawdopodobne, że dojrzałość sterowników MySQL, szczególnie poprawione sterowniki MySQL w PHP 5.3, ma pewien wpływ na testy. Jest również całkowicie możliwe, że prostota danych w zapytaniu wpływa na wyniki - może na 100 wstawkach wartości, Cassandra staje się szybsza.

Wypróbuj ten sam test z wiersza poleceń i zobacz, jakie są znaczniki czasu, a następnie spróbuj ze zmienną liczbą wartości. Nie możesz zrobić ani jednego testu i oprzeć swojej decyzji na tym.

+0

Myślimy, że próbuję wydać typową sytuację: mam miliony użytkowników i każdy użytkownik chce przesłać 1000 nazw (np. Tytuły książek). A z moich testów (tak samo z linii poleceń) każdy użytkownik będzie oczekiwał wyniku dłuższego niż 1 sekunda. Jeśli mam mniej niż miliony użytkowników, wówczas mysql daje mi 0,1 s. Czy to brzmi poprawnie, czy nie? –

2

Cassandra w dużym stopniu korzysta z równoległości i grupowania. Spróbuj wykonać 1 milion wkładek na każdy ze 100 wątków (każdy z własnym połączeniem & w partiach po 100) i sprawdź, które z nich są szybsze.

Wreszcie, wydajność wstawki Cassandra powinna być względnie stabilna (zachowując wysoką przepustowość przez bardzo długi czas). Z MySQL okaże się, że dość dramatycznie się cofa, gdy btrees użyte w indeksach rosną zbyt dużą pamięć.

+0

pytanie dotyczyło zwykłej szybkości 1 lub 1000 wstawień na jeden proces (pozwala myśleć jak kliknięcie jednego przycisku). Proszę mnie poprawić, jeśli wyślę te wszystkie 1000 wkładek równolegle, wtedy otrzymam prędkość większą niż 1 sekundę? –

11

Kiedy ludzie mówią: "Cassandra jest szybsza niż MySQL", mają na myśli, gdy mamy do czynienia z terabajtami danych i wieloma użytkownikami jednocześnie. Cassandra (i wiele rozproszonych baz danych NoSQL) jest zoptymalizowana dla setek równoczesnych czytników i programów piszących na wielu węzłach, w przeciwieństwie do MySQL (i innych relacyjnych baz danych), które są zoptymalizowane tak, aby były szybkie w pojedynczym węźle, ale zwykle spadają na kawałki podczas próby skalowania ich na wiele węzłów. Istnieje ogólna kompromitacja - absolutnie najszybsze we/wy dysku to zwykłe stare pliki UNIX, a wiele aplikacji finansowych wrażliwych na opóźnienia używa ich z tego powodu.

Jeśli budujesz kolejny Facebook, potrzebujesz czegoś takiego jak Cassandra, ponieważ pojedyncze pudełko MySQL nigdy nie wytrzyma kary tysięcy równoczesnych odczytów i zapisów, podczas gdy z Cassandrą możesz skalować do setek danych węzły i uchwyt, które łatwo się ładują. Zobacz scaling up vs. scaling out.

Innym zastosowaniem jest sytuacja, w której trzeba zastosować dużą moc przetwarzania wsadowego do terabajtów lub petabajtów danych. Cassandra lub HBase są świetne, ponieważ są zintegrowane z MapReduce, umożliwiając uruchomienie przetwarzania na węzłach danych.Dzięki MySQL musisz wyodrębnić dane i spryskać je na siatce węzłów przetwarzania, które pochłoną dużo przepustowości sieci i pociągną za sobą wiele niepotrzebnych komplikacji.

+1

Przeczytałem dużo o zaletach Cassandry. Moje pytanie dotyczyło około 5ms na operację zapisu dla pojedynczego serwera. Czy ta prędkość brzmi poprawnie? Na przykład, jeśli ktoś mówi mi, że jego mysql trwa 5ms dla jednej operacji zapisu (pozwala myśleć o przeciętnym serwerze), odpowiedziałbym mu z "zwykle powinno być szybciej" –

Powiązane problemy