Oferujemy platformę do klipów wideo i audio, zdjęć i grafiki wektorowej. Zaczęliśmy od MySQL jako zaplecza bazy danych, a ostatnio dołączyliśmy MongoDB do przechowywania wszystkich meta-informacji plików, ponieważ MongoDB lepiej spełnia wymagania. Na przykład: zdjęcia mogą zawierać informacje Exif , filmy mogą zawierać ścieżki audio, w których również chcemy przechowywać meta-informacje. Filmy i grafika wektorowa nie dzielą się żadnymi typowymi meta-informacjami itp., Więc wiem, że MongoDB doskonale nadaje się do przechowywania tych nieuporządkowanych danych i umożliwienia wyszukiwania.
Nadal jednak rozwijamy naszą platformę i dodajemy funkcje. Teraz jednym z kolejnych kroków będzie stworzenie forum dla naszych użytkowników. Powstaje teraz pytanie: użyj bazy danych MySQL, która byłaby dobrym wyborem do przechowywania forów i postów na forum itp., Czy też użyj do tego MongoDB?
Pytanie brzmi: kiedy używać MongoDB, a kiedy RDBMS. Co byś wziął, mongoDB lub MySQL, gdybyś miał wybór i dlaczego miałby to zrobić?
Odpowiedzi:
W NoSQL: Gdyby to było takie łatwe , autor pisze o MongoDB:
Następnie na zakończenie:
Podoba mi się ten artykuł, uważam go za bardzo pouczający, daje dobry przegląd krajobrazu NoSQL i szumu. Ale i to jest najważniejsze, naprawdę pomaga zadać sobie właściwe pytania, jeśli chodzi o wybór między RDBMS i NoSQL. Warto przeczytać IMHO.
Alternatywny link do artykułu
źródło
/dev/null
, będzie to bardzo szybkie” : DPo dwóch latach używania MongoDb jako aplikacji społecznościowej, widziałem, co to naprawdę znaczy żyć bez SQL RDBMS.
Uważam, że 98% wszystkich projektów prawdopodobnie jest znacznie lepszych z typowym SQL RDBMS niż z NoSQL.
źródło
Jak powiedziałeś, MongoDB najlepiej nadaje się do przechowywania nieustrukturyzowanych danych. A to może uporządkować twoje dane w formacie dokumentu. Te alternatywy RDBMS zwane magazynami danych NoSQL ( MongoDB , CouchDB , Voldemort ) są bardzo przydatne w aplikacjach, które skalują się masowo i wymagają szybszego dostępu do danych z tych dużych magazynów danych.
A implementacja tych baz danych jest prostsza niż zwykły RDBMS. Ponieważ są to proste obiekty binarne o wartości klucza lub stylu dokumentu, bezpośrednio zserializowane na dysk. Te magazyny danych nie wymuszają właściwości ACID ani żadnych schematów . Nie zapewnia to żadnych możliwości transakcyjnych . Dzięki temu można skalować na dużą skalę i możemy uzyskać szybszy dostęp (zarówno do odczytu, jak i do zapisu).
Jednak w przeciwieństwie do RDBM wymusza ACID i schematy danych. Jeśli chcesz pracować z danymi strukturalnymi, możesz skorzystać z RDBM.
Wybrałbym MySQL do tworzenia forów tego typu. Ponieważ to nie będzie miało dużej skali. Jest to bardzo prosta (powszechna) aplikacja, która ma uporządkowane relacje między danymi.
źródło
Pamiętaj, że Mongo zasadniczo przechowuje JSON. Jeśli twoja aplikacja ma do czynienia z wieloma obiektami JS (z zagnieżdżaniem) i chcesz je utrwalić, istnieje bardzo silny argument za użyciem Mongo. Sprawia, że warstwy DAL i MVC są bardzo cienkie, ponieważ nie rozpakowują wszystkich właściwości obiektu JS i próbują dopasować je do struktury (schematu), do której naturalnie nie pasują.
Mamy system, który ma kilka złożonych JS Objects w sercu, i uwielbiamy Mongo, ponieważ możemy przetrwać wszystko naprawdę, bardzo łatwo. Nasze obiekty są również raczej amorficzne i nieustrukturyzowane, a Mongo pochłania tę komplikację bez mrugnięcia okiem. Mamy niestandardową warstwę raportowania, która odszyfrowuje amorficzne dane do spożycia przez ludzi, i nie było to trudne do opracowania.
źródło
Powiedziałbym, że używaj RDBMS, jeśli potrzebujesz skomplikowanych transakcji. W przeciwnym razie wybrałbym MongoDB - bardziej elastyczny w pracy i wiesz, że można go skalować, kiedy trzeba. (Jestem jednak stronniczy - pracuję nad projektem MongoDB)
źródło
Kto potrzebuje rozproszonych, podzielonych forów? Może Facebook, ale jeśli nie tworzysz konkurenta na Facebooku, po prostu użyj Mysql, Postgres lub czegokolwiek, co najbardziej ci odpowiada. Jeśli chcesz wypróbować MongoDB, ok, ale nie spodziewaj się, że to zrobi dla ciebie magię. Będzie miał swoje dziwactwa i ogólną paskudność, tak jak wszystko inne, co jestem pewien, że już to odkryłeś, jeśli naprawdę już nad tym pracowałeś.
Jasne, MongoDB może wydawać się przeszywający i wydaje się łatwy na powierzchni, ale napotkasz problemy, które rozwiązały już bardziej dojrzałe produkty. Nie daj się tak łatwo zwabić, ale raczej poczekaj, aż „nosql” dojrzeje lub umrze.
Osobiście uważam, że „nosql” uschnie i umrze z powodu fragmentacji, ponieważ nie ma ustalonych standardów (prawie z definicji). Dlatego nie będę osobiście stawiać na to w przypadku długoterminowych projektów.
Jedyną rzeczą, która może zaoszczędzić „nosql” w mojej książce, jest to, że bezproblemowo integruje się z Ruby lub podobnymi językami i sprawia, że język jest „trwały”, prawie bez żadnych kosztów związanych z kodowaniem i projektowaniem. Może się to zdarzyć, ale poczekam do tego czasu, nie teraz, I oczywiście musi być bardziej dojrzały.
Przy okazji, dlaczego tworzysz forum od zera? Istnieje mnóstwo forów o otwartym kodzie źródłowym, które można dostosować do większości wymagań, chyba że naprawdę tworzysz forum nowej generacji (co wątpię).
źródło
Widziałem w wielu firmach używa MongoDB do analizy w czasie rzeczywistym z dzienników aplikacji. Jego płynność schematu naprawdę pasuje do dzienników aplikacji, w których schemat rekordów zmienia się od czasu do czasu. Również jego kolekcja Capped funkcja jest przydatna, ponieważ automatycznie usuwa stare dane, aby dopasować je do pamięci.
To jest jeden obszar, który naprawdę uważam za MongoDB, ale MySQL / PostgreSQL jest ogólnie bardziej zalecany. W sieci znajduje się wiele dokumentacji i zasobów dla programistów, a także ich funkcjonalność i niezawodność.
źródło
Dwa główne powody, dla których warto wybrać Mongo, to:
Nadaje się do aplikacji Big Data. RDBMS nie jest dobry dla dużych zbiorów danych.
źródło
Wiesz, wszystkie te rzeczy o sprzężeniach i „złożonych transakcjach” - ale to sam Monty wiele lat temu wyjaśnił „potrzebę” COMMIT / ROLLBACK, mówiąc, że „wszystko to dzieje się w klasach logiki (a nie baza danych) w każdym razie ”- więc od początku to samo. Potrzebny jest głupi, ale niezwykle schludny i szybki silnik do przechowywania / wyszukiwania danych, do 99% tego, co robią aplikacje internetowe.
źródło
Jak powiedziano wcześniej, możesz wybierać spośród wielu opcji, spójrz na te wszystkie opcje: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
Sugeruję, aby znaleźć najlepszą kombinację: MySQL + Memcache jest naprawdę świetny, jeśli potrzebujesz ACID i chcesz dołączyć do niektórych tabel MongoDB + Redis jest idealny do przechowywania dokumentów Neo4J jest idealny do bazy danych grafów
Co robię: Zaczynam od MySQl + Memcache, ponieważ jestem do tego przyzwyczajony, a potem zaczynam używać innych struktur bazy danych. W jednym projekcie możesz na przykład połączyć MySQL i MongoDB!
źródło