dynamodb - mongodb atlas




DynamoDB vs MongoDB NoSQL (5)

Bedenken Sie, ich habe nur mit MongoDB experimentiert ...

Nach dem, was ich gelesen habe, hat DynamoDB in Bezug auf Features einen langen Weg zurückgelegt. Es war einmal ein superbasierter Schlüssel-Wert-Speicher mit extrem begrenzten Speicher- und Abfragefähigkeiten. Es ist inzwischen gewachsen und unterstützt jetzt größere Dokumentgrößen + JSON-Unterstützung und globale Sekundärindizes . Die Lücke zwischen dem, was DynamoDB und MongoDB in Bezug auf Features bietet, wird mit jedem Monat kleiner. Die neuen Funktionen von DynamoDB werden hier erweitert.

Ein Großteil der Vergleiche MongoDB vs. DynamoDB ist aufgrund der kürzlich hinzugefügten DynamoDB-Funktionen veraltet. Dieser Beitrag bietet jedoch einige andere überzeugende Argumente für die Wahl von DynamoDB, nämlich dass es einfach, wartungsarm und oft kostengünstig ist. Eine andere Diskussion über Datenbankauswahl war interessant zu lesen, wenn auch etwas alt.

Mein Mitnehmen: Wenn Sie ernsthafte Datenbankabfragen durchführen oder in Sprachen arbeiten, die nicht von DynamoDB unterstützt werden, verwenden Sie MongoDB. Ansonsten bleibe bei DynamoDB.

Ich versuche herauszufinden, was ich für ein zukünftiges Projekt verwenden kann, wir planen, im ersten Jahr etwa 500.000 Datensätze pro Monat zu speichern, und vielleicht ist dies in den nächsten Jahren noch eine vertikale Anwendung, so dass man keine verwenden muss Datenbank dafür, das ist der Grund, warum ich mich entschieden habe, einen NoSQL-Datenspeicher zu wählen.

Die erste Option, die mir in den Sinn kam, war mongo db, da es ein sehr ausgereiftes Produkt mit viel Unterstützung von der Community ist, aber auf der anderen Seite haben wir ein brandneues Produkt, das einen Managed Service mit Top-Performance bietet Anwendung, aber es gibt keinen Wartungsplan (zumindest für jetzt), also denke ich, dass das ein großer Vorteil sein wird, da Amazon eine elastische Möglichkeit zum Skalieren bietet.

Mein Hauptanliegen ist die Abfragestruktur, ich habe die DynamoDB-Abfragefunktionen noch nicht untersucht, aber da es sich um einen ak / v-Datenspeicher handelt, glaube ich, dass dies begrenzter sein könnte als mongo db.

Wenn jemand die Erfahrung hat, ein Projekt von mongoDB nach DynamoDB zu verschieben, wird jeder Ratschlag sehr geschätzt.


Bei 500.000 Dokumenten gibt es keinen Grund für eine Skalierung. Ein typischer Laptop mit einer SSD und 8 GB RAM kann leicht 10 Millionen von Aufzeichnungen machen, also ist es nicht wirklich wichtig, wenn Sie sich für eine Skalierung entscheiden. Ich würde vorschlagen, dass Sie auswählen, was Sie am meisten mögen, und vielleicht, wo Sie den meisten Online-Support mit finden können.


Ich habe an beiden gearbeitet und bin Fan von beiden.

Aber Sie müssen verstehen, wann was und zu welchem ​​Zweck zu verwenden ist.

Ich denke nicht, dass es eine gute Idee ist, all Ihre Datenbank nach DynamoDB zu verschieben, weil die Abfrage schwierig ist, außer auf primären und sekundären Schlüsseln. Die Indizierung ist begrenzt und das Scannen in DynamoDB ist mühsam.

Ich würde für eine hybride Art von DB gehen, wo umfangreiche Abfrage-fähige Daten dort sein sollten, ist MongoDB, mit all seiner Eigenschaft würden Sie sich nie gezwungen fühlen, Verbesserungen oder Modifikationen zur Verfügung zu stellen.

DynamoDB ist blitzschnell (schneller als MongoDB), daher wird DynamoDB oft als Alternative zu Sitzungen in skalierbaren Anwendungen verwendet. Die Best Practices von DynamoDB weisen außerdem darauf hin, dass bei vielen Daten, die weniger verwendet werden, diese in eine andere Tabelle verschoben werden.

Angenommen, Sie haben Artikel oder Feeds. Leute suchen eher nach Sachen der letzten Woche oder den Sachen dieses Monats. Es ist sehr selten, dass Menschen zwei Jahre alte Daten besuchen. Für diese Zwecke speichert DynamoDB Daten vorzugsweise nach Monaten oder Jahren in verschiedenen Tabellen.

DynamoDB ist nahtlos skalierbar, was Sie in MongoDB manuell erledigen müssen. Sie würden jedoch die Leistung von DynamoDB verlieren, wenn Sie die Durchsatzpartition nicht verstehen und die Skalierung hinter der Szene funktioniert.

DynamoDB sollte dort eingesetzt werden, wo Geschwindigkeit von entscheidender Bedeutung ist, während MongoDB auf der anderen Seite zu viele Hände und Funktionen hat, was DynamoDB fehlt.

Zum Beispiel können Sie eine Replikatmenge von MongoDB so einrichten, dass eine Replik eine Dateninstanz von 8 (oder was auch immer) Stunden alt hält. Wirklich nützlich, wenn Sie in Ihrer Datenbank etwas Großes verschwendet haben und die Daten so erhalten wollen, wie sie vorher waren.

Das ist meine Meinung.


Ich weiß, das ist alt, aber es kommt immer noch, wenn Sie nach dem Vergleich suchen. Wir haben Mongo benutzt, sind fast komplett nach Dynamo umgezogen, was jetzt unsere erste Wahl ist. Nicht weil es mehr Funktionen hat, aber nicht. Mongo hat eine bessere Abfragesprache, Sie können innerhalb einer Struktur indizieren, es gibt viele kleine Dinge. Die Überlegenheit von Dynamo liegt in dem, was der OP in seinem Kommentar gesagt hat: es ist einfach. Sie müssen sich nicht um irgendwelche Server kümmern. Wenn Sie eine Mongo-Sharded-Lösung erstellen, wird es kompliziert. Sie können zu einem der Hosting-Unternehmen gehen, aber das ist auch nicht billig. Wenn Sie mit Dynamo mehr Durchsatz benötigen, klicken Sie einfach auf eine Schaltfläche. Sie können Skripts schreiben, die automatisch skaliert werden. Wenn es Zeit ist, Dynamo zu aktualisieren, ist es für Sie erledigt. Das ist viel wertvoller Stress und Zeit, die nicht ausgegeben wird. Wenn Sie keine engagierten Mitarbeiter haben, ist Dynamo exzellent.

Wir gehen jetzt standardmäßig auf Dynamo. Mongo vielleicht, wenn die Datenstruktur kompliziert genug ist, um es zu rechtfertigen, aber dann würden wir wahrscheinlich zu einer SQL-Datenbank zurückkehren. Dynamo ist stumpf, man muss wirklich darüber nachdenken, wie man es erstellt, und wahrscheinlich verwenden Sie Redis in Elasticcache, um es für komplexe Aufgaben zu verwenden. Aber es ist schön, sich nicht darum kümmern zu müssen. Du codierst. Das ist es.


Wir haben eine Kombination aus Mongo / Dynamo für ein Gesundheitsprodukt gewählt. Grundsätzlich ermöglicht Mongo eine bessere Suche, aber der gehostete Dynamo ist großartig, weil er ohne zusätzliche Arbeit HIPAA-konform ist. Daher hosten wir den Mongo-Teil ohne persönliche Daten in einem Standard-Setup und erlauben Amazon, sich mit dem HIPAA-Teil in Bezug auf die Infrastruktur zu befassen. Wir können bestimmte Elemente von Mongo abfragen, die Dokumente mit Zeigern (IDs) des verknüpfbaren Dynamo-Dokuments aufrufen.

Der Hauptgrund, warum wir dies mit Mongo gemacht haben, anstatt die gesamte Anwendung auf Dynamo zu hosten, war aus zwei Gründen. Zuerst mussten wir standortbasierte Suchen durchführen, bei denen Mongo großartig ist und zu der Zeit, Dynamo war es nicht, aber sie haben jetzt eine Option.

Zweitens waren einige Dokumente unstrukturiert und wir wussten nicht im Voraus, was die Daten sein würden, also sagen wir zum Beispiel, dass ein Benutzer ein Dokument in die "Form" -Kollektion eingibt: {"username": "user1", " email ":" [email protected] "}. Und ein anderer Benutzer bringt dies in die selbe Sammlung {"phone": "813-555-3333", "location": [28.1234, -83.2342]}. Mit Mongo können wir jedes dieser dynamischen und unbekannten Felder jederzeit mit Dynamo durchsuchen. Sie könnten dies tun, müssten aber jedes Mal einen Index erstellen, wenn ein neues Feld hinzugefügt wurde, das durchsucht werden soll. Wenn Sie also noch nie ein Telefonfeld in Ihrem Dynamo-Dokument hatten und dann ganz plötzlich, fügt es jemand hinzu, der vollständig unerforschbar ist.

Das bringt einen weiteren Punkt, den Sie erwähnt haben. Manchmal bedeutet die Auswahl der richtigen Lösung für den Job nicht immer die Auswahl des besten Produkts für den Job. Zum Beispiel können Sie einen Kunden haben, der das System, das Sie für mehr als 10 Jahre erstellt haben, benötigt und verwenden wird. Mit einer SaaS / IaaS-Lösung, die gut genug ist, um die Arbeit zu erledigen, kann eine bessere Option sein, da man sich darauf verlassen kann, dass amazon seine Systeme auf lange Sicht aufrecht erhalten und gewartet hat.





nosql