Wykorzystanie bazy danych NoSQL w badaniach danych


16

Jak bazy danych NoSQL, takie jak MongoDB, mogą być wykorzystywane do analizy danych? Jakie są w nich funkcje, dzięki którym analiza danych jest szybsza i wydajniejsza?


2
Głównym zastosowaniem jest przechowywanie danych i wyszukiwanie danych. W rzeczywistości chodzi o jedyne zastosowanie dla bazy danych NOSQL lub dowolnej bazy danych. Chcesz poprawić swoje pytanie?
Spacedman

Tak, baza danych służy głównie do przechowywania i wyszukiwania danych. Jak można je wykorzystać do analizy danych? Jakie narzędzia są wbudowane w bazy danych NOSQL, takie jak mongodb, dzięki czemu analiza danych jest łatwa i wydajna?
jithinjustin

1
Popraw swoje pytanie, edytując je, nie dodając do komentarzy.
Spacedman

Odpowiedzi:


23

Szczerze mówiąc, większość baz danych NoSQL nie jest zbyt dobrze dopasowana do aplikacji w dużych zbiorach danych. W zdecydowanej większości wszystkich aplikacji Big Data wydajność MongoDB w porównaniu z relacyjną bazą danych, taką jak MySQL, jest znacznie słaba, aby uzasadnić całkowite uniknięcie MongoDB.

To powiedziawszy, istnieje kilka naprawdę przydatnych właściwości baz danych NoSQL, które z pewnością działają na twoją korzyść, gdy pracujesz z dużymi zestawami danych, chociaż szansa na korzyści przewyższające ogólnie słabą wydajność NoSQL w porównaniu z SQL dla odczytu intensywne operacje (najbardziej podobne do typowych przypadków użycia dużych zbiorów danych) są niskie.

  • Bez schematu - jeśli pracujesz z dużą ilością nieuporządkowanych danych, może być trudno zdecydować się na schemat i zastosować go sztywno. Ogólnie bazy danych NoSQL bardzo to obsługują i pozwalają na wstawianie dokumentów bez schematu w locie, co z pewnością nie jest czymś, co obsługuje baza danych SQL.
  • JSON - jeśli akurat pracujesz z dokumentami w stylu JSON zamiast zplikami CSV , zauważysz dużą korzyść z używania czegoś takiego jak MongoDB dla warstwy bazy danych. Zasadniczo oszczędności w przepływie pracy nie przewyższają jednak wydłużonego czasu zapytania.
  • Łatwość użycia - nie mówię, że bazy danych SQL są zawsze trudne w użyciu, ani że Cassandra jest najłatwiejszą do skonfigurowania na świecie, ale ogólnie bazy danych NoSQL są łatwiejsze w konfiguracji i obsłudze niż bazy danych SQL. MongoDB jest szczególnie dobrym tego przykładem, znanym z tego, że jest jedną z najłatwiejszych w użyciu warstw bazy danych (poza SQLite ). SQL zajmuje się również dużą normalizacją i istnieje spora część najlepszych praktyk SQL, które po prostu zagłuszają proces programowania.

Osobiście mogę zasugerować, abyś sprawdził również bazy danych wykresów, takie jak Neo4j, które pokazują naprawdę dobrą wydajność dla niektórych typów zapytań, jeśli chcesz wybrać backend dla swoich aplikacji do nauki danych.


Masz rację. Bazy danych NOSQL są używane głównie do przechowywania nieustrukturyzowanych lub częściowo ustrukturyzowanych danych, takich jak json. Czy możesz wyjaśnić niektóre rodzaje analizy danych, które możemy z nimi zrobić. Jakie narzędzia są wbudowane w mongodb, których można używać do analizy danych?
jithinjustin

1
@ jithinjustin nie ma wbudowanych narzędzi do analizy danych w Mongo ani w żadnej bazie danych. Ponadto jsondane są całkowicie ustrukturyzowane. Możesz technicznie przeprowadzić na nim dowolną analizę danych, korzystanie z bazy danych NOSQL w rzeczywistości nie jest powiązane. Istnieją narzędzia zbudowane na mongo, jak choćby analityczne.
indico

1
Nie wiem o tym wszystkim. MongoDB może działać lepiej niż MySQL. Miałbyś lepszy argument, gdybyś powiedział PostgreSQL (który, nawiasem mówiąc, może zaakceptować JSON). Tak czy inaczej, nie uważałbym, że jakakolwiek arbitralna „wydajność” (nie wiemy, jaki jest przypadek użycia), jest powodem, aby nie używać NoSQL. Nie dyskontuj także przy użyciu wielu baz danych. Pamiętaj, MongoDB ma niesamowite funkcje agregacji, których nie ma SQL.
Tom

1
@ Tom o wydajności, przekonasz się, że jedynym zadaniem, które mongo faktycznie przewyższa mysql, jest wstawianie ( moredevs.ro/mysql-vs-mongodb-performance-benchmark ), co stanowi stosunkowo niewielką część analizy danych. Funkcje agregacji SQL są znacznie bardziej dojrzałe niż Mongo. Jeśli chodzi o MYSQL kontra Postgres, liczby są bardzo tymczasowo wypaczone i oba mają tendencję do oferowania podobnej wydajności. MySQL jest bardziej powszechny i ​​dlatego wspomniałem o tym zamiast tego, ale oba są dość podobne.
indico

Zawsze widziałem lepszą wydajność na MongoDB, gdy rzeczy pasowały do ​​pamięci. Biorę testy z zyskiem soli, ponieważ jeśli zrobisz trochę Google, znajdziesz kilka testów pokazujących MongoDB jako szybszy. To naprawdę zależy od twoich potrzeb. To powiedziawszy, aby pomóc odpowiedzieć na pierwotne pytanie - myślę, że NoSQL ma wiele zastosowań w nauce i analizie dużych zbiorów danych.
Tom


4

Zastanów się, spróbuj, a może nawet korzystaj z wielu baz danych. Tutaj nie chodzi tylko o „wydajność”. To naprawdę sprowadza się do twoich wymagań. O ile danych mówisz? jakie dane? jak szybko tego potrzebujesz? Czy bardziej czytasz ciężko czy piszesz ciężko?

Oto jedna rzecz, której nie można zrobić w bazie danych SQL: Oblicz nastroje. http://www.slideshare.net/shift8/mongodb-machine-learning

Oczywiście prędkość w takim przypadku może nie być wystarczająca dla twoich potrzeb, ale jest to możliwe. Przy pewnym buforowaniu określonych wartości agregatów było nawet całkiem do przyjęcia. Dlaczego miałbyś to zrobić? Wygoda.

Wygoda naprawdę jest czymś, co przekona cię. Właśnie dlatego (moim zdaniem) stworzono bazy danych NoSQL. Oczywiście też wydajność, ale staram się pomijać testy porównawcze i skupiać się bardziej na innych problemach.

Bazy danych MongoDB (i niektóre inne NoSQL) mają kilka bardzo zaawansowanych funkcji, takich jak wbudowana mapa / redukcja. Może to przynieść oszczędności zarówno pod względem kosztów, jak i czasu w porównaniu z używaniem czegoś takiego jak Hadoop. Lub może dostarczyć prototyp lub MVP do uruchomienia większej firmy.

Co z bazami danych grafów? Oni też są „NoSQL”. Spójrz na takie bazy danych, jak OrientDB. Jeśli chcesz dyskutować o wydajności ... Nie sądzę, że pokażesz mi bazę danych SQL, która tam jest szybsza =) ... a bazy danych z grafami mają naprawdę niesamowite aplikacje oparte na tym, co musisz zrobić.

Zasada technologii (i Internetu) nie jest zbyt wygodna w jednej rzeczy. Będziesz ograniczony i przygotujesz się na porażkę.


1
Nie widzę nic w tym łączu ani tutaj, co dowodzi, że nie można przeprowadzić analizy sentymentów w bazie danych SQL. przykłady mongoDB korzystają z Javascript w DB, więc możesz użyć dowolnego języka osadzonego w bazie danych SQL. Na przykład Postgres + R.
Spacedman

Chciałbym zobaczyć, gdzie można wykonać kod i mapować / redukować w tych bazach danych. Z całą powagą (szczególnie Postgres). ... a nawet jeśli mógłbyś, to i tak nie czyni odpowiedzi mniej wiarygodną. Można po prostu chcieć używać NoSQL. To działa.
Tom

1
Postgres + C, Python, Perl, R, podaj swoją bazę danych Postgres do najnowszych algorytmów uczenia maszynowego. Łatwo: postgresql.org/docs/9.0/static/xplang.html
Spacedman

Ładny. Będę musiał kiedyś to wypróbować. Co powiesz na MySQL?
Tom
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.