Dane w naszym relacyjnym DBMS stają się duże, czy to czas, aby przejść do NoSQL?


17

Stworzyliśmy aplikację sieci społecznościowej do celów eLearningu. To eksperymentalny projekt, nad którym pracujemy w naszym laboratorium. Przez pewien czas był używany w niektórych studiach przypadków, a dane w naszym relacyjnym DBMS (SQL Server 2008) stają się duże. To już kilka gigabajtów, a tabele są ze sobą ściśle powiązane. Wydajność jest nadal dobra, ale kiedy powinniśmy rozważyć inne opcje? Czy to kwestia wydajności?


3
W przypadku jakichkolwiek sieci społecznościowych gorąco polecam bazę danych grafów takich jak Neo4j lub OrientDB
Apollo

Odpowiedzi:


14

Kilka gigabajtów nie jest zbyt „ dużych ”. To bardziej przypomina normalny rozmiar korporacyjnej bazy danych. Tak długo, jak przekroczysz PK podczas dołączania do tabel, powinno to działać naprawdę dobrze, nawet w przyszłości (o ile nie dostaniesz TB danych dziennie).

Większość profesjonalistów pracujących w środowisku dużych zbiorów danych uważa > ~ 5 TB za początek terminu „duże zbiory danych”. Ale nawet wtedy nie zawsze jest to najlepszy sposób, aby po prostu zainstalować następną najlepszą bazę danych nosql. Zawsze powinieneś pomyśleć o zadaniu, które chcesz zarchiwizować z danymi (agregowanie, czytanie, wyszukiwanie, wyszukiwanie, ...), aby znaleźć najlepsze narzędzia dla twojego problemu.

tzn. jeśli wykonujesz wiele wyszukiwań w swojej bazie danych, prawdopodobnie lepiej byłoby uruchomić instancję / klaster solr i od czasu do czasu zdenormalizować dane z DBMS, takiego jak Postgres lub SQL Server, i umieścić je w solr zamiast po prostu przenosić dane od sql do nosql pod względem trwałości i wydajności.


10

Aby odpowiedzieć na to pytanie, musisz odpowiedzieć na jaki kompromis możesz sobie pozwolić. RDBM implementuje ACID . Jest to kosztowne pod względem zasobów. Nie ma rozwiązań NoSQL, które są ACID. Zobacz twierdzenie CAP, aby zagłębić się w te idee.

Musisz więc zrozumieć każdy kompromis podany przez każde rozwiązanie i wybrać ten, który jest najbardziej odpowiedni dla twojego problemu.


8

Big Data tak naprawdę nie polega na tym, „jak duże to jest”.

Po pierwsze, kilka gigabajtów wcale nie jest duże, prawie nic. Więc nie przejmuj się, twój system będzie działał wydajnie przez pewien czas.

Następnie musisz pomyśleć o tym, jak wykorzystujesz swoje dane.

  • Podejście SQL: wszystkie dane są cenne, dobrze zebrane i wybrane, a nacisk kładziony jest na przechowywanie bardzo cennych i dobrze ustrukturyzowanych danych. Może to być kosztowne, wszystko jest wzajemnie powiązane i jest dobre dla dobrze uporządkowanych danych systemowych i funkcjonalnych.
  • Podejście Big Data: w Big Data zasadniczo przechowujesz prawie wszystko, niezależnie od jego wartości, a następnie wykonujesz aktywny proces analityczny. Rzeczy nie są powiązane, są kopiowane. Powiedzmy na przykład, że mam wpis na blogu. W Big Data nie będzie linku do jego autora, ale autor zostanie osadzony wewnątrz wpisu na blogu. Znacznie bardziej skalowalny, ale wymaga innego i bardziej złożonego podejścia.

Jeśli Twoje aplikacje przechowują „funkcjonalne” dane, zasugeruję ci pozostanie przy SQL. Jeśli przechowujesz dane w celu ich późniejszego przeszukania lub wykonania raportów, a jeśli ta ilość danych może szybko wzrosnąć, zasugeruję duże zbiory danych. Moim zdaniem duże zbiory danych są przydatne, gdy mamy do czynienia z prawdziwymi danymi, które należy stale gromadzić i analizować.


8

Opublikowałem dość szczegółową odpowiedź na temat przepełnienia stosu dotyczącą tego, kiedy należy użyć bazy danych relacyjnej vs dokumentowej (lub NoSQL), tutaj:

Motywacje do korzystania z relacyjnej bazy danych / ORM lub bazy danych dokumentów / ODM

Streszczenie:

  • w przypadku drobiazgów korzystaj z narzędzi, które znasz

  • kilka gigabajtów to zdecydowanie małe rzeczy: nie robi się duże, dopóki nie jest zbyt duże, aby zmieścić się w jednym klastrze MySQL z rozsądną liczbą węzłów (16-32), co oznacza, że ​​może 8-16 TB danych i kilka milionów transakcji na sekundę (lub bardziej konwencjonalna baza danych oparta na dyskach twardych z maksymalnie 100 TB danych i kilkoma tysiącami transakcji na sekundę).

  • jeśli utkniesz w innej bazie danych (nie w klastrze MySQL), skorzystaj z niej, dodając sprzęt FusionIO.

  • gdy masz dane większe niż kilka TB i szybsze niż tysiące transakcji na sekundę, to dobry moment, aby przyjrzeć się przejściu do logicznego dzielenia kodu aplikacji, a następnie na NoSQL.

  • Cassandra :)


6

Czy czas przejścia na NoSQL zależy od 2 rzeczy:

  1. Charakter / struktura twoich danych
  2. Twoja obecna wydajność

Bazy danych SQL wyróżniają się, gdy dane mają dobrą strukturę (np. Gdy można je modelować jako tabelę, arkusz kalkulacyjny Excel lub zestaw wierszy ze stałą liczbą kolumn). Również dobrze, gdy musisz wykonać wiele połączeń stolikowych (co brzmi jak ty).

Bazy danych NoSQL wyróżniają się, gdy dane są ustrukturyzowane poza parami klucz-wartość.

Pod względem wydajności musisz zadać sobie jedno pytanie: czy twoje obecne rozwiązanie SQL jest wolne ?

Jeśli nie, zastosuj zasadę „ IIABDFI ”.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.