2011-06-21 17 views
8

Już od jakiegoś czasu programowałem z php i mySql i niedawno zdecydowałem, że chcę dać nosql spróbować. Byłbym wdzięczny, gdyby niektórzy z was z doświadczeniem mogli mi powiedzieć:Kiedy używać NoSql i który?

  • Kiedy nadszedł czas na zmianę, skąd mam wiedzieć, czy nosql jest dla mnie?
  • Jakie oprogramowanie nosql poleciłbyś?

Dzięki

+7

Bardzo subiektywne, IMHO. – driis

+4

Bardzo konstruktywny, IMHO. – GorillaApe

Odpowiedz

3

To depenends od potrzeb aplikacji .. Istnieje wiele opcji.

Można użyć dokument zorientowanych jak mongodb, w „rozszerzonym” klucz-wartość jak Redis a może wykres zorientowany jak neo4j

Ten artykuł jest bardzo przydatny http://highscalability.com/blog/2010/12/6/what-the-heck-are-you-actually-using-nosql-for.html

+0

Jeszcze jedna forma tej samej witryny - http://highscalability.com/blog/2011/6/20/35-use-cases-for-choosing-your-next-nosql-database.html –

2

Ten ostatni blog post w Wysokiej Skalowalność prawie odpowiada na twoje pytanie dotyczące tego, kiedy używać NoSQL.

ja zawsze iść MySQL aż nie mnie, a następnie wybrać odpowiednie narzędzie do pracy, niektóre nie-relacyjnych baz danych, z którymi pracowałem to:

  • Riak: klon, który dynamo jest przydatna, gdy musisz szybko uzyskać dostęp do rekordów, ale masz zbyt wiele rekordów, aby pozostać na jednym komputerze. Na przykład system rekomendujący dla użytkowników w aplikacji internetowej, chcesz uzyskać dostęp do danych w ciągu kilku milisekund, ale masz 200 milionów użytkowników.
  • : baza danych oparta na dokumentach, ponieważ kiedy potrzebowałem prędkości, ale miałem aplikację intensywnie korzystającą z zapisu (stosunek odczytu/zapisu zbliżony do 1: 1), dane były bardzo przejściowe, więc nie przejmowałem się kwestiami dotyczącymi trwałości
1

najlepszy czas, aby przełączyć się gdy:

  • rozpocząć pracę nad nowym projektem i zrobić swoje pierwsze decyzje architektoniczne. Przeniesienie istniejącej aplikacji do innej bazy danych może spowodować wiele bólów głowy.
  • Uderz w ceglaną ścianę ... lub lepiej, zanim zobaczysz, że nadchodzi :) Główną przyczyną jest zwykle brak wydajności lub skalowalności.
  • Potrzebujesz brakującej cechy (np. Skomplikowane struktury hierachiczne, wykresy itp.).

Polecam wiele z nich, ale każdy z nich ma swoje słodkie punkty, w których świecą i inne części, w których brakuje im cech. Jedynym sposobem na wybranie odpowiedniego narzędzia jest zapoznanie się z kilkoma z nich.

  • twórców stron WWW zazwyczaj nauczyć sklepów klucz-wartość (memcached, Redis) pierwsza, jak mogą rozwiązać wiele problemów z wydajnością (ale także dodać trochę złożoności aplikacji ...).
  • Istnieją dokumenty (bez schematów), takie jak bazy danych MongoDB lub CouchDB, które mogą znacznie zwiększyć wydajność, jeśli model danych często się zmienia.
  • W przypadku przejazdów wykresów istnieje NeoJ.
  • Dla "dużych danych" jest Hadoop i związane z nim projekty.
  • A lista jest długa i na ...
7

Kiedy jest dobry czas, aby przełączyć?

To naprawdę zależy od konkretnego projektu. Ale ogólnie widzę, że mogę używać nosql dla 95% aplikacji internetowych. Nadal będę używać starego dobrego sql dla systemów, które powinny gwarantować ACID (na przykład systemy działające z "prawdziwymi" pieniędzmi).

Skąd mam wiedzieć, nosql jest dla mnie?

To dla ciebie, dla ciebie, uwierz mi. ;)

Wystarczy wypróbować coś ze świata nosql, przeczytać niektóre istniejące artykuły, a zobaczysz wszystkie zalety i problemy.

Jakie oprogramowanie nosql poleciłbyś?

Osobiście polecam Ci zacząć od mongodb, ponieważ to naprawdę proste. Aby stać się ekspertem w dziedzinie sql, potrzeba lat, aby stać się ekspertem w mongotb potrzebuje około miesiąca.

Proponuję spędzić godzinę na przeczytaniu "The little mongodb book" i spróbuj napisać swoją pierwszą aplikację testową zaczynając od jutra.

Nikt tutaj nie powie, że musisz użyć tej lub tej bazy danych. Baza danych, której należy użyć, zależy od projektu i wymagań.

+0

+1 dla szczegółowej odpowiedzi. 3 zarzuty tho :: Re ACID - niektóre wsparcie NoSQLs również, zobacz RavenDB na przykład (http://ayende.com/blog/23553/yoursquo-ll-pry-transactions-od-my-dead-cold-broken-hands). Ponownie wybierając NoSQL - patrz http://nosql-database.org. Ponownie polecam MongoDB - powinieneś najpierw wybrać TYPE NoSQL do użycia, a następnie wybrać produkt z tego typu. Nie ma prawdziwego powodu, aby zalecać jeden DB nad innym bez prawdziwego zrozumienia BL i infrastruktury. – synhershko

+0

@synhershko: Używam również ravendb, wiem o transakcjach;). I zgadzam się z tobą. –

Powiązane problemy