2010-04-01 11 views
111

Jestem w trakcie projektowania wysoce skalowalnej aplikacji, która musi przechowywać wiele danych. Na przykład będzie przechowywać wiele informacji o użytkownikach, a następnie takie rzeczy jak wiele ich wiadomości, komentarze itp. Zawsze używałem MySQL wcześniej, ale teraz mam ochotę wypróbować coś nowego jak couchdb lub podobne, które nie jest SQL.SQL (MySQL) kontra NoSQL (CouchDB)

Czy ktoś ma jakieś przemyślenia lub wskazówki na ten temat?

+3

Gah, CW. Miałem nadzieję, że uda mi się zdobyć prawdziwą reputację i trochę ulicznych praw. :-) –

+1

Czy możesz wyjaśnić nieco więcej o swoim zestawie danych? – mikeal

Odpowiedz

171

Oto cytat z ostatniego blog post from Dare Obasanjo.

bazy SQL są jak automatyczne transmisji i baz danych NoSQL są jak manualną. Po zmianie na NoSQL na stajesz się odpowiedzialny za wiele prac, które system zajmuje automatycznie w relacyjnym systemie baz danych. Podobne do tego, co się dzieje, gdy wybierzesz instrukcję przez automatyczną skrzynię biegów. Po drugie, NoSQL pozwala eke więcej wydajności z systemu przez eliminując wiele testów integralności wykonanych przez relacyjne bazy danych z warstwy bazy danych . Ponownie jest to podobne do , w jaki sposób można uzyskać większą wydajność z samochodu, prowadząc manualną skrzynię biegów w porównaniu z automatyczną skrzynią biegów .

Jednak najbardziej zauważalną podobieństwo jest że podobnie jak większość z nas nie może naprawdę skorzystać z korzyści płynących z ręcznego pojazdu transmisyjnego ponieważ większość naszej jazdy siedzi w korku w drodze do i od pracujemy, istnieje podobna trudna rzeczywistość w tym, że większość stron nie jest w Google lub Skala Facebooka i dlatego nie ma potrzeby na Bigtable lub Cassandrę.

Do której mogę tylko dodać, że przejście z MySQL, gdzie masz co najmniej pewne doświadczenie, aby CouchDB, gdzie nie masz doświadczenia, oznacza, że ​​będziesz mieć do czynienia z zupełnie nowym zestawem problemów i dowiedzieć się różnią koncepcje i najlepsze praktyki. Chociaż sam w sobie jest to cudowne (gram w domu z MongoDB i bardzo mi się podoba), będzie to koszt, który musisz obliczyć podczas szacowania pracy dla tego projektu i przynosi nieznane ryzyko, jednocześnie obiecując nieznane korzyści. Bardzo trudno będzie ocenić, czy możesz wykonać projekt na czas i z jakością, którą chcesz/potrzebujesz odnieść sukces, jeśli opiera się ona na technologii, której nie znasz.

Teraz, jeśli masz w zespole eksperta w dziedzinie NoSQL, to dobrze się z nim zapoznaj. Ale bez doświadczenia w zespole, nie skacz na NoSQL dla nowego komercyjnego projektu.

Aktualizacja: Wystarczy rzucić trochę benzyny w otwartym ogniu, który zacząłeś, oto dwa ciekawe artykuły od ludzi z obozu SQL.:-)

I Can't Wait for NoSQL to Die (oryginalny artykuł nie ma, tu jest copy)
Fighting The NoSQL Mindset, Though This Isn't an anti-NoSQL Piece
Aktualizacja: Więc tutaj jest ciekawy artykuł o NoSQL
Making Sense of NoSQL

+2

Proces skalowania rozwiązań SQL to proces usuwania funkcji i relacji. Więc nie sądzę, że jest to ocena całkowicie uczciwa. Poza tym nie zgrupowałbym takich baz NoSQL, Cassanda na przykład skupia się wyłącznie na skalowaniu * up *, podczas gdy CouchDB zajmuje się skalowaniem api * down * i ułatwianiem korzystania z niego i pozwala na skalowanie api tak daleko, w miarę możliwości. – mikeal

+0

Czy to może być link do cytatu? http://www.25hoursaday.com/weblog/2010/03/29/TheNoSQLDebateAutomaticVsManualTransmission.aspx – edosoft

+0

Ah, tak, rzeczywiście. Tęskniłem za tym, że zrobił to także jako blog publiczny. Zaktualizuję wpis. –

3

Wydaje się jedynym realnym rozwiązań dzisiaj krążą wokół skalowanie lub odrywanie. Wszystkie współczesne bazy danych (NoSQL i NewSQL) obsługują skalowanie poziome zaraz po wyjęciu z pudełka, w warstwie bazy danych, bez potrzeby posiadania przez aplikację kodu zawierającego ukryte fragmenty lub czegoś podobnego.

Niestety, dla zaufanego, staroświeckiego MySQL, odłamki nie są dostarczane "po wyjęciu z pudełka". ScaleBase (zrzeczenie się: pracuję tam) to producent kompletnego rozwiązania skalującego "automatyczna maszyna oddzielająca", jeśli chcesz. ScaleBae analizuje dane i strumień SQL, dzieli dane między węzły DB i agreguje w środowisku wykonawczym - więc nie będziesz musiał! I to jest do pobrania za darmo.

Nie zrozum mnie źle, NoSQL są świetne, są nowe, nowe to większy wybór, a wybór jest zawsze dobry !! Ale wybierając NoSQL ma swoją cenę, upewnij się, że można go zapłacić ...

Można zobaczyć tutaj trochę więcej danych o MySQL, NoSQL ...: http://www.scalebase.com/extreme-scalability-with-mongodb-and-mysql-part-1-auto-sharding

nadzieję, że pomogło.

0

Jedną z najlepszych opcji jest MongoDB (NOSql dB), który obsługuje skalowalność.Odnosi duże ilości danych tylko bigdata w postaci dokumentów w przeciwieństwie do wierszy i tabel w sql.To jest fasters, który następuje po shradding data.Uses repicasets, aby zapewnić gwarancję danych, która utrzymuje wiele serwerów mających podstawowy serwer bazy danych jako bazę. Niezależny od języka. Elastyczne w użyciu

+0

Powinieneś utworzyć kopię zapasową swojej opinii "najlepiej", ponieważ Couchbase, Cassandra, AeroSpike itd. i wszystkie bazy danych obsługujące wymienione funkcje. –