Wir bieten eine Plattform für Video- und Audioclips, Fotos und Vektorgrafiken. Wir haben mit MySQL als Datenbank-Backend begonnen und kürzlich MongoDB zum Speichern aller Metainformationen der Dateien hinzugefügt, da MongoDB den Anforderungen besser entspricht. Beispiel: Fotos enthalten möglicherweise Exif- Informationen, Videos enthalten möglicherweise Audiospuren, in denen auch die Metainformationen gespeichert werden sollen. Videos und Vektorgrafiken teilen keine gemeinsamen Metainformationen usw. Ich weiß also, dass MongoDB perfekt ist, um diese unstrukturierten Daten zu speichern und durchsuchbar zu halten.
Wir entwickeln unsere Plattform jedoch weiter und fügen Funktionen hinzu. Einer der nächsten Schritte ist nun die Bereitstellung eines Forums für unsere Benutzer. Die Frage, die sich jetzt stellt, lautet: Verwenden Sie die MySQL-Datenbank, die eine gute Wahl zum Speichern von Foren und Forenbeiträgen usw. ist, oder verwenden Sie MongoDB auch dafür?
Die Frage ist also: wann MongoDB und wann ein RDBMS verwendet werden soll. Was würden Sie nehmen, MongoDB oder MySQL, wenn Sie die Wahl hätten und warum würden Sie es nehmen?
Antworten:
In NoSQL: Wenn es nur so einfach wäre , schreibt der Autor über MongoDB:
Dann zum Schluss:
Ich mag diesen Artikel, ich finde ihn sehr informativ, er gibt einen guten Überblick über die NoSQL-Landschaft und den Hype. Aber, und das ist der wichtigste Teil, es ist wirklich hilfreich, sich die richtigen Fragen zu stellen, wenn Sie zwischen RDBMS und NoSQL wählen. Lohnt sich meiner Meinung nach zu lesen.
Alternativer Link zum Artikel
quelle
/dev/null
Nach zwei Jahren mit MongoDb für eine soziale App habe ich gesehen, was es wirklich bedeutet, ohne SQL RDBMS zu leben.
Ich glaube, dass 98% aller Projekte mit einem typischen SQL-RDBMS wahrscheinlich viel besser sind als mit NoSQL.
quelle
Wie Sie sagten, eignet sich MongoDB am besten zum Speichern unstrukturierter Daten. Und dies kann Ihre Daten im Dokumentformat organisieren. Diese als NoSQL- Datenspeicher bezeichneten RDBMS-Alternativen ( MongoDB , CouchDB , Voldemort ) sind sehr nützlich für Anwendungen, die massiv skaliert werden und einen schnelleren Datenzugriff aus diesen großen Datenspeichern erfordern.
Die Implementierung dieser Datenbanken ist einfacher als das reguläre RDBMS. Da es sich um einfache binäre Objekte mit Schlüsselwerten oder Dokumentenstil handelt, die direkt auf die Festplatte serialisiert werden. Diese Datenspeicher erzwingen weder die ACID-Eigenschaften noch Schemata . Dies bietet keine Transaktionsfähigkeiten . Dies kann also groß skaliert werden und wir können einen schnelleren Zugriff (sowohl Lesen als auch Schreiben) erzielen.
Im Gegensatz dazu erzwingt RDBM ACID und Schemas für Daten. Wenn Sie mit strukturierten Daten arbeiten möchten, können Sie mit RDBM fortfahren.
Ich würde MySQL wählen, um Foren für diese Art von Sachen zu erstellen . Weil dies nicht groß skalieren wird. Und dies ist eine sehr einfache (übliche) Anwendung, die strukturierte Beziehungen zwischen den Daten aufweist.
quelle
Beachten Sie, dass Mongo im Wesentlichen JSON speichert. Wenn Ihre App mit vielen JS-Objekten (mit Verschachtelung) zu tun hat und Sie diese Objekte beibehalten möchten, gibt es ein sehr starkes Argument für die Verwendung von Mongo. Dadurch werden Ihre DAL- und MVC-Ebenen ultradünn, da sie nicht alle JS-Objekteigenschaften entpacken und versuchen, sie zwangsweise in eine Struktur (Schema) einzupassen, in die sie natürlich nicht passen.
Wir haben ein System, das mehrere komplexe JS-Objekte im Herzen hat, und wir lieben Mongo, weil wir alles wirklich, wirklich einfach beibehalten können. Unsere Objekte sind auch ziemlich amorph und unstrukturiert, und Mongo nimmt diese Komplikation auf, ohne zu blinken. Wir haben eine benutzerdefinierte Berichtsschicht, die die amorphen Daten für den menschlichen Verzehr entschlüsselt, und die nicht so schwer zu entwickeln war.
quelle
Ich würde sagen, verwenden Sie ein RDBMS, wenn Sie komplexe Transaktionen benötigen. Ansonsten würde ich mich für MongoDB entscheiden - flexibler zu arbeiten und Sie wissen, dass es skaliert werden kann, wenn Sie es brauchen. (Ich bin allerdings voreingenommen - ich arbeite am MongoDB-Projekt)
quelle
Wer braucht verteilte, gespaltene Foren? Vielleicht Facebook, aber wenn Sie keinen Facebook-Konkurrenten erstellen, verwenden Sie einfach MySQL, Postgres oder was auch immer Sie am besten mögen. Wenn Sie MongoDB ausprobieren möchten, ok, aber erwarten Sie nicht, dass es für Sie zaubert. Es wird seine Macken und seine allgemeine Gemeinheit haben, genau wie alles andere, wie Sie sicher bereits entdeckt haben, wenn Sie wirklich schon daran gearbeitet haben.
Sicher, MongoDB mag hochgespielt sein und auf den ersten Blick einfach erscheinen, aber Sie werden auf Probleme stoßen, die ausgereiftere Produkte bereits überwunden haben. Lassen Sie sich nicht so leicht anlocken, sondern warten Sie, bis "nosql" reift oder stirbt.
Persönlich denke ich, dass "nosql" verdorren und an der Fragmentierung sterben wird, da es keine festgelegten Standards gibt (fast per Definition). Ich werde also bei langfristigen Projekten nicht persönlich darauf wetten.
Das einzige, was "nosql" in meinem Buch speichern kann, ist, wenn es sich nahtlos in Ruby oder ähnliche Sprachen integrieren lässt und die Sprache "persistent" macht, fast ohne zusätzlichen Aufwand für Codierung und Design. Das mag passieren, aber ich werde bis dahin warten, nicht jetzt, UND es muss natürlich reifer sein.
Übrigens, warum erstellen Sie ein Forum von Grund auf neu? Es gibt unzählige Open-Source-Foren, die an die meisten Anforderungen angepasst werden können, es sei denn, Sie erstellen wirklich The Next Generation of Forums (was ich bezweifle).
quelle
Ich habe gesehen, dass viele Unternehmen MongoDB für Echtzeitanalysen aus Anwendungsprotokollen verwenden. Die Schemafreiheit passt wirklich zu Anwendungsprotokollen, bei denen sich das Datensatzschema von Zeit zu Zeit ändert. Auch seine Capped Collection ist außerdem nützlich, da alte Daten automatisch gelöscht werden, damit die Daten in den Speicher passen.
Das ist ein Bereich, für den MongoDB meiner Meinung nach wirklich geeignet ist, aber MySQL / PostgreSQL wird im Allgemeinen eher empfohlen. Es gibt viele Dokumentationen und Entwicklerressourcen im Web sowie deren Funktionalität und Robustheit.
quelle
Die 2 Hauptgründe, warum Sie Mongo bevorzugen möchten, sind
Es ist für Big-Data-Anwendungen geeignet. RDBMS ist nicht gut für Big Data.
quelle
Wissen Sie, all diese Dinge über die Joins und die "komplexen Transaktionen" - aber es war Monty selbst, der vor vielen Jahren die "Notwendigkeit" für COMMIT / ROLLBACK erklärte und sagte, dass "alles, was in den Logikklassen gemacht wird" (und nicht die Datenbank) sowieso '- also ist es wieder dasselbe. Was benötigt wird, ist eine dumme, aber unglaublich aufgeräumte und schnelle Datenspeicher- / Abruf-Engine, die 99% der Leistung der Web-Apps erbringt.
quelle
Wie bereits erwähnt, können Sie zwischen vielen Optionen wählen. Sehen Sie sich all diese Optionen an: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
Ich schlage vor, die beste Kombination zu finden: MySQL + Memcache ist wirklich großartig, wenn Sie ACID benötigen und einige Tabellen verbinden möchten. MongoDB + Redis ist perfekt für den Dokumentenspeicher. Neo4J ist perfekt für die Grafikdatenbank
Was ich mache: Ich beginne mit MySQl + Memcache, weil ich es gewohnt bin, und beginne dann mit der Verwendung eines anderen Datenbank-Frameworks. In einem einzigen Projekt können Sie beispielsweise MySQL und MongoDB kombinieren!
quelle