2011-01-18 19 views
38

Jakie są mocne i słabe strony różnych dostępnych baz danych NoSQL?Redis, CouchDB lub Cassandra?

W szczególności wydaje się, że Redis jest słaby, jeśli chodzi o dystrybucję obciążenia zapisu na wielu serwerach. Czy tak jest? Czy to duży problem? Jak duża musi być usługa, zanim może to być poważny problem?

Odpowiedz

77

Mocne i słabe strony baz danych NoSQL (a także baz danych SQL) to wysoce zależnie od przypadku użycia. W przypadku bardzo dużych projektów wydajność jest królem; ale dla zupełnie nowych projektów lub projektów, w których czas i pieniądze są ograniczone, najpewniejsza jest prostota i czas wprowadzenia na rynek. Do samodzielnego nauczania (poszerzania perspektywy, stania się lepszym, bardziej wartościowym programistą), być może najważniejszą rzeczą są proste, solidne podstawowe pojęcia.

Jakiego rodzaju projekt masz na myśli?

Niektóre mocne i słabe strony, u góry głowę:

  • Redis
    • Bardzo prosty klucz-wartość "globalny serwer zmienna"
    • Bardzo prosty (niektórzy powiedzieliby „nie -istniejący) system zapytań
    • Najszybciej z tej listy
    • Transakcje
    • zestaw
    • Dane muszą zmieścić się w pamięci
    • Niedojrzałe klastrów, z niejasnej przyszłości (jestem pewien, że będzie super, ale to nie jest jeszcze przesądzony.)
  • Cassandrę
    • Prawdopodobnie najbardziej społeczność pęd BigTable podobny baz
    • Prawdopodobnie najłatwiejszy z tej listy do zarządzania wielkimi/narastająco klastrów
    • Wsparcie dla map/reduce, dobre dla analityka, hurtowni danych
    • Wielu datacenter replikacji
    • Tunable konsystencja/dyspozycyjność
    • Żaden pojedynczy punkt awarii
    • Musisz wiedzieć, jakie kwerendy można uruchomić na początku projektu, aby przygotować się do kształtu i indeksy danych
  • CouchDB
    • Bezdotykowa obsługa najlepszej synchronizacji (replikacji), obsługa master/slave, master/master i bardziej egzotycznych architektur
    • Protokół HTTP, przeglądarki/aplikacje mogą współpracować bezpośrednio z DB częściowo lub całkowicie. (Sync również odbywa się za pośrednictwem protokołu HTTP)
    • Po krótkim krzywej uczenia się, całkiem skomplikowany system zapytań z wykorzystaniem JavaScript i mapę/zmniejszenia
    • grupowany operacji (nie SPOF, przestrajanie konsystencja/dostępność) jest obecnie znaczącym widelec (BigCouch). Prawdopodobnie wtopią się w kanapę, ale nie ma mapy drogowej.
    • Teoretycznie możliwe jest tworzenie klastrów i wiele centrów danych ("egzotyczna" rzecz, o której wspomniałem), ale w tym momencie musisz napisać to narzędzie.
    • Dołącz tylko format pliku (zarówno bazy danych, jak i indeksy) zużywa dysk zaskakująco szybko i musisz ręcznie uruchomić kompaktowanie (odkurzanie), które tworzy pełną kopię wszystkich rekordów w bazie danych. To samo jest wymagane dla każdego pliku indeksu. Ponownie, musisz być swoim własnym narzędziem.
+8

+1 "Prostota i czas wprowadzenia na rynek są prawdopodobnie najważniejsze". Zoptymalizuj swój biznes, a później technologię. Minusem dla Redis jest to, że jest to naprawdę dobre tylko dla zbiorów danych, które pasują do pamięci; jego możliwości tworzenia klastrów i rozwiązania oparte na dyskach są ograniczone. Inne plusy Cassandry to replikacja wielu centrów danych, dostrajana spójność/dostępność na operację i brak pojedynczego punktu awarii (każdy węzeł w klastrze odgrywa tę samą rolę, nie ma wzorców). Minusem dla Cassandry jest to, że musisz pomyśleć o swoich zapytaniach, zanim uporządkujesz swoje dane, a to może trochę potrwać. –

+5

Nawiasem mówiąc, z mojego doświadczenia wynika, że ​​"projekty, w których czas i pieniądze są ograniczone" obejmują ** ogromną większość ** projektów podczas ** ogromnej większości ** ich życia. – JasonSmith

+2

BigCouch to doskonałe oprogramowanie. Został zainicjowany przez głównych członków zespołu programistów CouchDB. Zostanie on utrzymany i dalej rozwijany. Chociaż nie znam mapy drogowej, spodziewam się, że BigCouch zostanie w jakiś sposób połączony z CouchDB. A jeśli uważasz, że jestem beznadziejnym fanboyem, pomyśl, że BigCouch jest dziełem konkurenta mojej firmy! – JasonSmith