2017-06-05 5 views
3

Ich habe gerade über elastische Suche gelesen und festgestellt, dass es jeden Begriff im Dokument sowie alle Felder indiziert. Obwohl es einige Nachteile hat, kann es keine Transaktionen bereitstellen usw. Aber für die Anwendung, wo ich nur Daten aus der Datenbank lesen muss und es keinen Schreibvorgang gibt, ist es vorteilhaft, Dynamo Db anstelle von Elastic Search zu verwenden. Früher dachte ich daran, den Dynamo Db zu verwenden, aber jetzt, nachdem er gesehen hat, dass er jedes Feld indiziert, warum sollte man nicht die Elastic Search selbst verwenden. Bis jetzt ist der einzige für mein Projekt definierte Anwendungsfall die Suche nach einer ID. Aber in Zukunft werden mehr Anwendungsfälle kommen, dann wäre es sehr schwierig, weitere Indizes in Dynamo Db hinzuzufügen, wäre aber bereits in Elastic Search vorhanden.Dynamo Db vs elastische Suche

Kann mir jemand einige Vorteile von Dynamo Db gegen Elastic Search nennen.

Bitte geben Sie Ihre Vorschläge.

Antwort

3

Ich habe elasticsearch und MongoDB aber nicht viel Dynamodb verwendet. MongoDB funktioniert sehr gut in Bezug auf Indexierung und starke Konsistenz.

Wenige Dinge, die ich über elasticsearch und DynamoDB weiß;

Elasticsearch ist ein suchmaschinen, in dem Sie mit irgendwelchen Bedingungen oder aggregierte Datensätze nach bestimmten Kriterien suchen, aber es dient auch als Dokument-Speicher, wenn auch nicht Hauptzweck war. Und definitiv gut für weniger schreiben und mehr liest.

einige Elasticsearch Vorteile

Elasticsearch

  • keine Atomicity (A in ACID) hat Nachteile zwischen mehreren Dokumenten

  • möchten Sie vielleicht Sicherheitsoptionen überprüfen, habe ich es vielleicht das letzte Mal, Version 3 verwendet, nicht gute Option hatte

DynamoDB auf der anderen Seite ist ein Datenspeicher (technisch Dokument-store/Amazon-Version genannt von MongoDB).

Vorteile

Wenn ein Dokument ist, in die DynamoDB-Tabelle geschrieben und eine HTTP 200 Antwort erhält, werden alle Kopien des Dokuments aktualisiert. Das Dokument wird schließlich über alle Speicherorte konsistent sein, normalerweise innerhalb von eine Sekunde oder weniger.

Wenn Sie einen stark konsistenten Lesevorgang anfordern, gibt DynamoDB eine -Antwort mit den aktuellsten Daten zurück, die die Aktualisierungen von aller früheren Schreibvorgänge widerspiegelt, die erfolgreich waren. Ein stark konsistentes Lesen ist im Falle einer Netzwerkverzögerung oder eines Netzwerkausfalls möglicherweise nicht verfügbar.

hat aber einige Einschränkungen,

  • unterstützt nur max 40K schreibt für 1 KB großer Dokumente/s pro Tisch = die 400 schreibt für 100K Größe docs/sec (in us-east wäre Region)

    unterstützt nur 10K schreibt für 1 KB Größe docs/pro Tisch in anderen Regionen

  • max 40K liest für 4KB große Dokumente/s pro Tisch (in us-east Region)

    unterstützt 10K liest nur für 4 KB Größe docs/pro Tisch in anderen Regionen

    so berechnen Sie Ihren Durchsatz auf der Grundlage Ihres durchschnittliche Dokumentgröße und sehen DynamoDB passt

  • die maximale Dokument/Artikelgröße in dynamodb ist 400KB (Verweis auf s3 könnte den Trick tun, wenn Dokumentgröße mehr als 400 KB ist, aber immer noch, wenn Sie diese Route wirklich gehen wollen)/MongoDB könnte alternativ which allows upto 16M of document sein.

  • können Sie nur 1000 KB von Dokumenten aus DynamoDB in einer Anfrage

Also, im Grunde

  • gewünschten Durchsatz,
  • ACID-Konformität (DynamoDB +1), holen
  • jede Dokumentgröße (elasticsearch +1, MongoDB +1) und
  • secu rität könnte der ausschlaggebende Faktor sein.

ich auch auf der Suche in MongoDB vs DynamoDB wie MongoDB betrachten würde, ist Open Source, verfügt über alle Funktionen außer A in Unteilbarkeit, und ist auch supported by AWS.

+0

"keine atomaren schreibt" ist irgendwo zwischen irreführend und falsch. [Teilupdates] (https://www.elastic.co/guide/en/elasticsearch/guide/current/partial-updates.html) könnte etwas kniffliger sein, als Sie erwarten würden, aber in den meisten Szenarien möglich. Auch ich finde den Schluss ein wenig unerwartet: Vor- und Nachteile von Elasticsearch und DynamoDB - MongoDB verwenden. – xeraa

+0

AWS bietet eine Ein-Klick-Konfiguration von Streaming-Dynamodb-Daten für einen ElasticSearch-Cluster. Disadvabtage dieses Features ist, dass die elastische Suche nicht zu einem vpc gesperrt ist –

+0

@xeraa wusste nicht, mein Englisch ist so schlecht :) Ich habe nicht gesagt, MongoDB überhaupt zu verwenden, ich sage nur, dass ich auch darüber nachdenken werde, in MongoDB zu suchen auch das ist ein document-store mit so ziemlich allen Dynamodb hat aber nicht wie Amazon gesperrt. Ich sage auch, machen Sie die Durchsatztests/wenn der Datenspeicher die Kriterien für Dokumentengröße erfüllt, nach denen Sie suchen, und die Sicherheit, um zu entscheiden, welche für Sie am besten geeignet ist. Danke, dass Sie im Elasticsearch auf "no atomic writes" hingewiesen haben, da meine Antwort falsch war. Ich sollte Atomicity not Atomic spielen, das tut mir leid. Und nochmal danke, dass du das raus zeigst :) – prayagupd