Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Jaki jest najbardziej wydajny silnik bazy danych zorientowany na dokumenty do przechowywania tysięcy dokumentów średniej wielkości?

Zależy to bardzo od konkretnego przypadku użycia. Jeśli chcesz mieć możliwość wysyłania zapytań do swoich dokumentów na podstawie czegoś innego niż ich identyfikator, nie powinieneś wybierać Redis. Z Redis musiałbyś zaimplementować własny schemat indeksowania, a to po prostu niepotrzebne.

W rzeczywistości jest bardzo niewiele przypadków, w których Redis byłby lepszą opcją dla tego, co moim zdaniem jest w twoim przypadku użycia (nie, że jest coś nie tak z Redis, często używam zarówno Redis, jak i Mongo, ale do różnych rzeczy). Wydaje mi się, że masz obiekty, które można przedstawić jako skróty. Zarówno Mongo, jak i Redis mogą przechowywać skróty, ale Mongo może zrobić znacznie więcej. Z Mongo możesz wyszukiwać dokument na dowolnym z jego pól, możesz dodać indeks, aby przyspieszyć, a pole nie musi nawet być ciągiem, może to być liczba, data, lista, a nawet dokument (lub listę dokumentów), a wszystkie dokumenty nie muszą mieścić się w pamięci RAM (chociaż zmieni się to po zakończeniu funkcji magazynu dysków Redis). Redis tego nie ma. Musiałbyś sam zaimplementować indeksy, aby móc wyszukiwać, nie możesz przechowywać niczego poza ciągami (co czasami jest naprawdę niewygodne) i nie możesz przechowywać niczego poza płaskimi skrótami (bez uciekania się do implementacji lub użycia jakiegoś rodzaju mapowania warstwa jak Ohm).

Wspominasz również o szybkości. Redis jest niesamowicie szybki, a Mongo też nie jest zły, jednak w przypadku użycia Mongo może być szybsze. Zauważ, że mówię używam Mongo, nie żeby samo Mongo było szybsze. Chodzi o to, że jeśli korzystasz z Redis i nadal chcesz mieć możliwość wyszukiwania dokumentu za pomocą pola, które nie jest kluczem podstawowym, musisz, jak wspomniałem powyżej, zaimplementować to samodzielnie. Wyszukiwanie musiałoby wówczas wysłać co najmniej dwa żądania do Redis, jedno o przeszukanie indeksu, a drugie o pobranie dokumentu. Jeśli wyszukiwanie prowadzi do więcej niż jednego dokumentu, musisz złożyć wniosek o każdy dokument z osobna. Narzut związany z wykonywaniem wszystkich tych żądań prawdopodobnie spowodowałby, że korzystanie z Redis byłoby gorsze niż korzystanie z Mongo. Z mojego doświadczenia wynika, że ​​wszystko inne niż najprostsza pamięć podręczna, kolejka itp. musi wysłać więcej niż jedno żądanie do Redis, aby uzyskać wszystko, czego potrzebuje.

Tak więc, mając do dyspozycji ograniczone informacje, polecam MongoDB.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak czytać wiele zestawów przechowywanych na Redis za pomocą jakiegoś polecenia lub skryptu LUA?

  2. Jakie są podstawowe różnice między select, epoll, kqueue i evport?

  3. Zrozumienie opóźnień przy użyciu Redis-Cli

  4. Redis uruchamia się ręcznie z init.d, ale nie przy starcie

  5. Skanowanie Laravel i redis