Frage

Ich muss eine Entscheidung darüber treffen, ob STM in einem Clojure -System verwendet werden soll, mit dem ich mich für ein System beteiligt habe, das mehrere GB benötigt, um in einem einzigen STM -Ref zu speichern.

Ich würde gerne von jedem hören, der Ratschläge zur Verwendung von Clojure STM mit großen indexierten Datensätzen hat, um ihre Erfahrungen zu hören.

War es hilfreich?

Lösung

Ich habe Clojure für einige ziemlich große Datenverarbeitungsaufgaben verwendet (definitiv Gigabyte von Daten, in der Regel viele schwere Java-Arrays, die in verschiedenen Clojure-Konstrukten/STM-Refruten gespeichert sind).

Solange alles in den verfügbaren Speicher passt, sollten Sie in einem einzigen Schiedsrichter kein Problem mit extrem großen Datenmengen haben. Der Schiedsrichter selbst wendet nur eine kleine feste Menge an STM -Overhead an, die unabhängig von der Größe der darin enthaltenen Größe ist.

Ein schöner zusätzlicher Bonus ergibt sich aus der strukturellen Freigabe, die in die Standarddatenstrukturen von Clojure (Karten, Vektoren usw.) integriert ist. beide Datenstrukturen erfordern zusammen nur einen Bruchteil von mehr als 10 GB. Dies ist sehr hilfreich, insbesondere wenn Sie der Ansicht sind, dass Sie aufgrund von STM/Parallelität möglicherweise verschiedene Versionen der Daten haben, die gleichzeitig erstellt werden.

Andere Tipps

Die Leistung wird nicht schlechter oder besser als STM mit einem einzigen Schiedsrichter mit einem kleinen Datensatz. Die Leistung wird durch die Anzahl der Aktualisierungen in einem Datensatz stärker behindert als die tatsächliche Größe des Datensatzes.

Wenn Sie einen Autor des Datensatzes und viele Leser haben, ist die Leistung immer noch recht gut. Wenn Sie jedoch einen Leser und viele Schriftsteller haben, wird die Leistung leiden.

Vielleicht helfen uns mehr Informationen, Ihnen zu helfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top