Was gefällt dir am besten Amazon DynamoDB?
Die Einfachheit der API und des Datenmodells spricht mich wirklich an, es macht einfach seine Sache gut und versucht nicht, die perfekte Datenbank für alles zu sein. Nachdem man gelernt hat, wie es funktioniert, was man sowohl in den Dokumentationen als auch im ursprünglichen Dynamo-Whitepaper, das sehr gut ist, tun kann, wird ziemlich klar, wo die Kompromisse liegen.
Sobald man ein System auf Dynamo aufgebaut hat, ist der große Vorteil, dass man tatsächlich nahezu unbegrenzte Skalierbarkeit erhält, indem man einfach einige Regler anpasst, während man wächst.
Weil es so einfach ist und einen zwingt, innerhalb seines Rahmens zu arbeiten, fühlt es sich viel solider und vorhersehbarer an als andere marketinglastige Datenspeicher (MongoDB ist derjenige, von dem ich am meisten enttäuscht wurde, obwohl ich es seit Jahren nicht mehr benutzt habe, also ist es vielleicht besser), die Skalierbarkeit versprechen, aber auch versuchen, alles zu tun und daher viele Funktionen für den Ein-Knoten-Fall bieten, ohne sehr klar zu machen, welche Funktionen man vermeiden muss, wenn man im Sharded-Modus laufen möchte.
Und abgesehen vom Datenmodell ist die Tatsache, dass es gehostet wird, erstaunlich. Ich habe vor ein paar Jahren ein Cassandra-Cluster eingerichtet und es hat Wochen gedauert, nur um die JVM stabil mit den richtigen GC-Generationsgrößen zum Laufen zu bringen, Monitoring einzurichten usw. Seit etwa anderthalb Jahren hat DynamoDB im Grunde alle Funktionen, die Cassandra hat (die bemerkenswerten neuen Ergänzungen sind Set- und Dictionary-Typen, die man für einige Arten von CRDT-Datentypen verwenden kann).
Es funktioniert auch gut mit Amazon Elastic Map Reduce - man kann einen riesigen Hadoop-Job ausführen, sagen wir, und die Ergebnisse in s3 ausgeben und dann die Schreibvorgänge/Sek vorübergehend sehr hoch auf DynamoDB einstellen, um die Ergebnisse schnell in Dynamo zu schreiben, wo sie in der App verwendet werden können. Bewertung gesammelt von und auf G2.com gehostet.
Was gefällt Ihnen nicht? Amazon DynamoDB?
Der Nachteil von DynamoDB ist, dass Sie Ihre Daten als einfache Schlüssel-Wert-Abfragen strukturieren müssen, und das macht einige Dinge, die in SQL-Datenbanken einfach sind, wie das Hinzufügen eines Indexes, um ein neues Feld abzufragen, in Dynamo etwas schwieriger. Es gibt auch keine Joins, sodass Sie alle erforderlichen Joins entweder im Speicher durchführen oder Daten duplizieren und denormalisieren müssen.
Es ist nicht die perfekte Datenbank für alles. Besonders wenn Sie ein System haben, von dem Sie erwarten, dass es immer innerhalb der Kapazität eines einzelnen Servers bleibt, und Sie OLTP- und OLAP-Workloads am selben Ort durchführen möchten, macht die Verwendung einer SQL-Datenbank wahrscheinlich mehr Sinn. Bewertung gesammelt von und auf G2.com gehostet.