Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> baza MongoDB a bazy relacyjne
wiewiorek
post
Post #1





Grupa: Zarejestrowani
Postów: 247
Pomógł: 11
Dołączył: 5.09.2009

Ostrzeżenie: (0%)
-----


Do tej pory używałem relacyjnych baz danych, niedawno wielce się zdziwiłem gdy spotkałem się z nosqlową bazą danych MongoDB. Ktoś tego używał i ma porównanie jakie to ma wady i zalety w porównaniu do relacyjnych baz danych? Chyba wszystkie duże serwisy są oparte o bazy relacyjne więc to MongoDB jest wykorzystywane tylko w małych serwisach czy jak to wygląda?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
alegorn
post
Post #2





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

Ostrzeżenie: (0%)
-----


hmm. czytając cześć postów, mam wrażenie ze chyba większość tak naprawdę nie wie co to jest i czym to sie je.
mongodb jest baza danych zorientowana na dokument.
jest także bazą danych pisaną dla potrzeb internetu (stron www)

prosty przykład :

mam usera, i mam do niego `n` nr telefonu (do domu, do pracy tel kom itd.)

w mysql jedynym wyjściem jest trzymanie tego w dwu tabelach `user` oraz `telefon`
w mongo ? w mongo masz to wszystko w jednej tabel( a właściwie kolekcji)i, najzwyczajniej w świecie definiujesz pole telefon jako tablice i wpisujesz wszystkie nr.

w mongo nie można projektować baz wg zasad relacyjnych, w sposób jaki nauczyliśmy się dla baz sql'owych. to nie jest dobrym pomysłem.
wymaga to zrozumienia specyfiki bazy, tego w jaki sposób dane są przechowywane i reprezentowane.
jeśli to zrozumiesz - zrozumiesz także, że jest to baza pisana z myślą o stronach internetowych (czego nie można powiedzieć o żadnej bazie sql (IMG:style_emoticons/default/exclamation.gif) !)

trzeba pamiętać że przechowywanie danych jest w formacie BSON, cały interfejs jest zbudowany obiektowo więc jest łatwiej. (i trudniej (IMG:style_emoticons/default/wink.gif) )


ograniczeniem pewnym jest to że mongo lubi dobry hardware & soft.

nie ma co myśleć o poważnej zabawie na innym OS niż 64.
Jeśli masz duże bazy danych - to zje tyle ramu ile mu przydzielisz, i będzie z apetytem patrzył na pozostały.
w pewnych specyficznych przypadkach okazuje się że wymaga dopracowania (ilość wypychanych danych, offset itp).
w zamian daje niesamowite możliwości replikacji
masz także wbudowane możliwości map reduce (odpowiednik group by i funkcji agregujących)

sumując po kilku miesięcznej zabawie z mongo - stwierdzam że świetny soft.
kolejny wniosek - jeśli będę stawiał strony internetowe zorientowane na treść, jest to właściwy wybór.
jeśli muszę pracować na dużych bazach (wielomilionowych rekordach) - jest to najprawdopodobniej dobra decyzja (lub bardzo dobra)

oczywiście jest to rozwijany i dość młody projekt/produkt w porównaniu do mysql'a czy postgre.

dobrym pytaniem jest : dlaczego powstały, i co z sobą wnoszą bazy nosqlowe ... dlaczego stwierdzono że sql jest niewystarczający dla dalszego rozwoju.


j.
Go to the top of the page
+Quote Post
solificati
post
Post #3





Grupa: Zarejestrowani
Postów: 26
Pomógł: 10
Dołączył: 17.03.2012

Ostrzeżenie: (0%)
-----


Cytat(alegorn @ 9.07.2012, 13:19:27 ) *
mam usera, i mam do niego `n` nr telefonu (do domu, do pracy tel kom itd.)

w mysql jedynym wyjściem jest trzymanie tego w dwu tabelach `user` oraz `telefon`
w mongo ? w mongo masz to wszystko w jednej tabel( a właściwie kolekcji)i, najzwyczajniej w świecie definiujesz pole telefon jako tablice i wpisujesz wszystkie nr.

Problem się zaczyna gdy potrzebujemy egzekwować zależności. Relacje pozwalają nam kontrolować dane, mamy dodatkowo contraints i triggery, które dbają o poprawność danych. Sam mechanizm relacyjny zapewnia w pewnym stopniu poprawność danych. Bazy dokumentów nic nie dają w tej kwestii.

Więc trzymanie danych użytkowników wymaganych do działania strony w bazach nosql nie jest dobrym pomysłem a emulowanie wszystkich własności rdbms w takim mongodb to bezsens.

Cytat
jeśli to zrozumiesz - zrozumiesz także, że jest to baza pisana z myślą o stronach internetowych (czego nie można powiedzieć o żadnej bazie sql (IMG:style_emoticons/default/exclamation.gif) !)

Aplikacja internetowa to taka zwykła aplikacja, tylko ma inny interface. Jak najbardziej SQL jest do stron internetowych.
Go to the top of the page
+Quote Post

Posty w temacie
- wiewiorek   baza MongoDB a bazy relacyjne   8.07.2012, 15:33:01
- - Niktoś   Bazy nierelacyjne używa się zazwyczaj do przechowy...   8.07.2012, 15:53:47
- - wiewiorek   hm......... chyba nie o to chodzi - bo ja widziałe...   8.07.2012, 19:03:53
- - skowron-line   Może to nie odpowiedz na pytanie no ale taki teści...   8.07.2012, 19:11:06
- - Niktoś   Mimo ,że nirelacyjne bazy danych są szybsze(cechuj...   8.07.2012, 21:40:07
|- - Theqos   Cytat(Niktoś @ 8.07.2012, 22:40:07 ) ...   9.07.2012, 08:12:16
|- - NuLL   Cytat(Niktoś @ 8.07.2012, 21:40:07 ) ...   9.07.2012, 19:25:10
- - Crozin   A spróbowałeś chociaż wyszukać takie ogólnego poró...   9.07.2012, 09:20:20
- - solificati   Bazy noSQL to szeroki temat, nie ma tam jednego po...   9.07.2012, 11:01:19
- - alegorn   hmm. czytając cześć postów, mam wrażenie ze chyba ...   9.07.2012, 12:19:27
|- - solificati   Cytat(alegorn @ 9.07.2012, 13:19:27 )...   9.07.2012, 12:42:41
- - alegorn   solificati:: wszystko zależy od przypadku. trudno ...   9.07.2012, 13:19:42
|- - solificati   Cytat(alegorn @ 9.07.2012, 14:19:42 )...   9.07.2012, 13:41:57
- - alegorn   crm - tak, ale to idzie bardziej w intranet niz in...   9.07.2012, 15:22:53
|- - solificati   Cytat(alegorn @ 9.07.2012, 16:22:53 )...   9.07.2012, 16:52:14
- - alegorn   hmm. chyba nie ma o czym dyskutować, dlatego ze w ...   9.07.2012, 17:55:55
- - Niktoś   CytatCo do zadan - trzymanie logiki wewnatrz bazy ...   9.07.2012, 22:07:07
- - alegorn   CytatWydaje mi się, że nie należy patrzeć tylko na...   10.07.2012, 09:55:38
|- - solificati   Cytat(NuLL @ 9.07.2012, 20:25:10 ) Co...   10.07.2012, 11:03:28
- - nasty   Widzę, że muszę interweniować bo tu niektórzy Pano...   10.07.2012, 12:14:29
|- - solificati   Cytat(nasty @ 10.07.2012, 13:14:29 ) ...   10.07.2012, 13:24:30
|- - nasty   Cytat(solificati @ 10.07.2012, 14:24...   10.07.2012, 14:33:00
- - solificati   Mój błąd. Przez poprawić go miałem na myśli popraw...   10.07.2012, 14:34:09
|- - nasty   Cytat(solificati @ 10.07.2012, 15:34...   10.07.2012, 14:42:17
- - solificati   Och, jeszcze raz. Twój plan zapytania jest dobry, ...   10.07.2012, 15:27:03
|- - nasty   Cytat(solificati @ 10.07.2012, 15:27...   10.07.2012, 16:03:02
|- - solificati   Cytat(nasty @ 10.07.2012, 17:03:02 ) ...   10.07.2012, 16:29:55
|- - nasty   Cytat(solificati @ 10.07.2012, 16:29...   10.07.2012, 16:54:46
|- - solificati   Cytat(nasty @ 10.07.2012, 17:54:46 ) ...   10.07.2012, 17:15:32
|- - nasty   Cytat(solificati @ 10.07.2012, 17:15...   10.07.2012, 17:20:24
- - Niktoś   Ja używam MSSQL i świetny T-SQL, jednakże ze wzglę...   10.07.2012, 16:53:55
- - Niktoś   CytatI tu dochodzimy do sedna sprawy. NoSql jest u...   10.07.2012, 16:57:00
|- - nasty   Cytat(Niktoś @ 10.07.2012, 16:57:00 )...   10.07.2012, 17:07:41
- - Niktoś   CytatTo nie jest relacyjna baza danych.To jest rel...   10.07.2012, 17:30:58
- - nasty   Cytat(Niktoś @ 10.07.2012, 17:30:58 )...   10.07.2012, 17:35:00


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 05:29