2012-06-05 15 views

Odpowiedz

25

Istnieje wiele potencjalnych korzyści i potencjalnych wad używania Redis zamiast klasycznego RDBMS. W rzeczywistości są to bardzo różne zwierzęta.

Skupiając się tylko na potencjalnych wad:

  • Redis jest przechowywać w pamięci: wszystkie dane muszą zmieścić się w pamięci. RDBMS zwykle przechowuje dane na dyskach i buforuje część danych w pamięci. Za pomocą RDBMS możesz zarządzać większą ilością danych niż masz w pamięci. Z Redis nie możesz.

  • Redis to serwer struktury danych. Nie ma języka zapytań (tylko komendy) i nie ma wsparcia dla algebry relacyjnej. Nie możesz przesyłać zapytań ad-hoc (jak możesz używać SQL na RDBMS). Wszelkie dostępy do danych powinny być przewidywane przez programistę, a odpowiednie ścieżki dostępu do danych muszą być zaprojektowane. Brakuje dużej elastyczności.

  • Redis oferuje 2 opcje dla trwałości: zwykłe migawki i pliki tylko do dodania. Żadne z nich nie jest tak bezpieczne, jak prawdziwy serwer transakcyjny zapewniający przywracanie/cofanie rejestrowania, blokowanie sumy kontrolnej, odzyskiwanie punktu w czasie, funkcje flashback, itp ...

  • Redis oferuje tylko podstawowe zabezpieczenia (w zakresie praw dostępu) na poziomie instancji. Wszystkie RDBMS zapewniają drobnoziarniste listy kontroli dostępu dla poszczególnych obiektów (lub zarządzania rolami).

  • Unikalna instancja klasy Redis nie jest skalowalna. Działa tylko na jednym rdzeniu procesora w trybie jednowątkowym. Aby uzyskać skalowalność, należy wdrożyć i uruchomić kilka instancji Redis. Dystrybucja i sharding są wykonywane po stronie klienta (tzn. Programista musi się nimi zająć). Jeśli porównasz je z unikalną instancją Redis, większość RDBMS zapewnia większą skalowalność (zazwyczaj zapewnia równoległość na poziomie połączenia). Są one wielokrotnie przetwarzane (Oracle, PostgreSQL, ...) lub wielowątkowe (MySQL, Microsoft SQL Server, ...), czerpiąc korzyści z maszyn wielordzeniowych.

Tutaj mam tylko opisane główne wady, ale należy pamiętać, istnieje również wiele korzyści w użyciu Redis (bardzo szybki, dobre wsparcie współbieżności, niską latencję, protokół rurociąg, dobrze jest łatwo wdrożyć optymistyczne współbieżne wzorce, dobra użyteczność/stopień złożoności, doskonałe wsparcie od Salvatore'a i Pietera, pragmatyczne, nie-nonsensowne podejście, ...)

Dla twojego konkretnego problemu (wykresu), proponuję rzucić okiem na neo4J lub OrientDB, które są zaprojektowany specjalnie do przechowywania danych graficznych.

Powiązane problemy