MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Czy ktoś pracował z Aerospike? Jak wypada w porównaniu z MongoDB?

Używałem Aerospike, MongoDB i Redis i testowałem wiele innych baz danych NoSQL. Powiedziałbym, że Aerospike jest bardzo dobry w tym, co robi, ale różni się od MongoDB. Wszystko zależy od tego, do czego planujesz używać bazy danych. Mogę podać przykład tego, do czego używam moich różnych baz danych. Mogę również omówić różnice między nimi i omówić zalety Aerospike.

MongoDB

Używam MongoDB jako alternatywy SQL. W mojej bazie MongoDB mam wiele różnych pól. Często pola się zmieniają i losowo będę musiał zapytać o różne pola. Jest to bardzo nieustrukturyzowana baza danych i MongoDB jest w tym niesamowity. Używałem również MongoDB jako standardowego magazynu klucz-wartość. Działa dobrze, ale MongoDB działał nieoptymalnie zarówno w skali transakcji, jak i skali rozmiaru bazy danych. Wprawdzie baza danych mogła zostać trochę lepiej zoptymalizowana, ale bardzo trudno jest mi znaleźć dokumentację dotyczącą poprawnej konfiguracji MongoDB w różnych sytuacjach.

Ponownie

Redis to czysty sklep typu klucz-wartość. Największym problemem Redisa jest to, że jest wyłącznie w pamięci (będzie używał dysku jako kopii zapasowej, ale nie możesz przechowywać więcej informacji niż masz dostępnej pamięci). Jest niezwykle szybki do tego, do czego jest używany. Osobiście używam go do małej transakcyjnej bazy danych:wykonuję bardzo proste funkcje na klawiszach, takie jak liczenie, ile razy zdarzenie miało miejsce dla danego użytkownika. Wykonuję również szybkie wyszukiwania w pamięci, które muszę zmapować na różne wartości. Redis to świetne narzędzie dla małego zestawu danych i jest niezwykle szybkie. Konfiguracja również jest bardzo łatwa.

Aerospike

Osobiście używam Aerospike do zastąpienia Redisa, gdy nadejdzie czas na skalowanie. Z mojego punktu widzenia można go używać na więcej. Podobnie jak Redis, Aerospike jest sklepem typu klucz-wartość. Uważam, że edycja open source obsługuje również indeksy dodatkowe, których nie obsługuje Redis (nie używałem indeksów dodatkowych w produkcji, ale przeprowadziłem na nich niewiele testów).

Najlepszą cechą Aerospike jest możliwość skalowania. Największym problemem, który musiałem rozwiązać, patrząc na Aerospike, było skalowanie mojego systemu do obsługi dużych zestawów danych przy zachowaniu niezwykle szybkiego działania. Projekt, do którego używam Aerospike, ma bardzo rygorystyczne wymagania dotyczące szybkości. Zwykle wykonuję 3-4 wyszukiwania w bazie danych plus inne przetwarzanie i muszę mieć czasy transakcji poniżej 50 ms. Kilka wyszukiwań dotyczy zestawów danych, które mają ponad 300 GB. Nie mogłem znaleźć sposobu na przechowywanie tych danych i udostępnianie ich w rozsądnym czasie. Redis oczywiście nie zadziała, chyba że mam maszynę, która miała ponad 300 GB pamięci RAM. MongoDB zaczął działać wyjątkowo słabo przy rozmiarze znacznie mniejszym niż 300 GB. Więc dałem Aerospike'owi strzał i był w stanie poradzić sobie ze wszystkim bardzo dobrze. Najlepsza rzecz w Aerospike:w miarę jak mój zestaw danych urósł, nie musiałem robić nic więcej poza ustawieniem nowego pudełka w razie potrzeby. Prędkość pozostała stała.

Uważam również, że dokumentacja Aerospikes jest bardzo dobra. Konfiguracja nie jest zbyt trudna i dość łatwo jest znaleźć odpowiedzi na każdy pojawiający się problem.

Wniosek

Czy Aerospike jest tak dobry, jak twierdzą? Osobiście nie widziałem niczego poza tym, co zostało powiedziane. Nie musiałem skalować do 1 miliona TPS, ale wierzę, że przy wystarczającej ilości sprzętu byłoby to możliwe. Wierzę również w liczby pokazujące różnicę prędkości między Aerospike a MongoDB. Aerospike jest znacznie bardziej „skonfigurowaną” i „zaplanowaną” bazą danych niż MongoDB. Z tego powodu Aerospike będzie znacznie szybszy w skali niż MongoDB. Musi martwić się tylko o jeden (lub w przypadku indeksów wtórnych kilkaset) indeksy, w przeciwieństwie do MongoDB, które mogą się dynamicznie zmieniać. Pytanie, które naprawdę musisz zadać, dotyczy tego, co próbujesz osiągnąć za pomocą swojej bazy danych. Następnie sprawdź, która baza danych najlepiej odpowiada Twoim potrzebom. Jeśli potrzebujesz skalowalnej, szybkiej bazy danych magazynu klucz-wartość, powiedziałbym, że Aerospike jest prawdopodobnie najlepszy.

Daj mi znać, jeśli masz jakieś konkretne pytania lub potrzebujesz wyjaśnienia. Prawdopodobnie byłbym w stanie ci pomóc.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Co robi opcja konfiguracyjna --bindip w mongodb?

  2. Czytasz tablicę w mongodb?

  3. Wyszukiwanie rozmyte w Mongodb?

  4. Jednostki używane dla maxdistance i MongoDB?

  5. mongoDB/mongoose:unikalne, jeśli nie null