2012-10-28 10 views
28

Jestem super nowym użytkownikiem mongodb. Używam mangusty, aby uzyskać dostęp do mongodb z node.js i wiem, jak sprawić, aby wszystko działało, ale nie sądzę, że rozumiem, dlaczego działa tak, jak to robi.Dlaczego mangusta używa schematu, gdy korzyścią mongody jest to, że nie ma schematu?

Co najważniejsze, nie rozumiem, dlaczego mangusta ma "schemat", gdy jedną z wyróżniających cech mongodb jest to, że nie ma schematu. Czy ktoś mógłby mnie oświecić? Dziękuję Ci.

+1

Myślę, że jest to przypadek domyślnego schematu, ale można dynamicznie dodawać pola w kodzie aplikacji bez konieczności zmiany tabeli jako całości. Przykładem jest ogromna tabela produktów, dodająca pole do SQL, które jest nieprzyjemne i wolne, w MongoDB wystarczy dodać go do modelu klienta ... – Sammaye

+0

MongoDB nie jest bez schematu. Ma elastyczny schemat - jest duża różnica. –

+0

to kwestia gustu, Mongoose pozwala ci na wpisanie schematu z walidacjami, jeśli użyjesz sterownika, którego nie dostaniesz i będziesz musiał przetasować własny. Z drugiej strony warstwa Mongoose będzie miała wpływ na surową wydajność, ponieważ wykonuje trochę prac porządkowych, które zabierają dodatkowy czas nad surowym sterownikiem. – christkv

Odpowiedz

22

Dane bez schematu są bezużyteczne. Dostajesz dokument od MongoDB, co z nim robisz? Czy przeczytać niektóre pola? Musisz znać nazwy, rodzaje i znaczenia tych pól. To jest schemat.

Kiedy ludzie mówią, że MongoDB "nie ma schematu", naprawdę oznacza to, że nie wymusza on schematu tak, jak robią to bazy danych SQL. MongoDB przesuwa obawy dotyczące schematu aż do poziomu aplikacji, dzięki czemu można obsługiwać je bardziej elastycznie. Na przykład, aby dodać nowe pole do dokumentów, nie trzeba wykonywać w kolekcji wszystkiego lub nawet niczego ALTER - potencjalnie miliony wpisów. Po prostu dodajesz to pole do swojego schematu ODM (Mongoose) i gotowe.

+4

nie do końca prawdziwe. Istnieją aplikacje działające w czasie rzeczywistym, które mogą polegać na polach tworzonych w locie. Dodanie pola do modelu Mongoose oznacza nowy proces wdrażania. Istnieją ODM, które nie wymagają stałej definicji schematu, na przykład Mongorito. –

+0

Czy słyszałeś o niestandardowych polach? Powiedzmy, że chcesz, aby Twoi klienci mogli definiować swój własny schemat, coś, co chcesz przechowywać w swojej kolekcji bez konieczności wprowadzania kodu zmiany dewelopera dla każdego klienta. Jest to idealny przypadek do zastosowania w projektowaniu bezszumowym. –

+0

@TimHardy Mówisz "zdefiniuj swój własny schemat", ale nazwij to "bezsensownym" - zobacz tam sprzeczność? Nie powiedziałem "dane bez statycznego schematu są bezużyteczne". –