Frage

Ich entwickle eine Clojure -Anwendung, die STM stark nutzt. Ist es besser, einen globalen Schiedsrichter oder viele kleinere Schiedsrichter im Allgemeinen zu verwenden? Jeder REF speichert Daten wie in einer relationalen Datenbanktabelle, sodass es mehrere Schiedsrichter geben wird.

War es hilfreich?

Lösung

Ein möglicher Vorteil der Verwendung weniger Refs ist, dass Sie einfacher sein werden, zu verstehen, was in Ihrer vermutlich multi-thread-App geschieht.

Ein möglicher Vorteil der Verwendung von mehr Refs besteht darin, dass Sie weniger Code gleichzeitig und die Geschwindigkeit erhöhen werden.

Wenn Sie einen Ref -pro -Tabelle haben und die Datenintegrität zwischen zwei Tabellen aufrechterhalten müssen, sind Sie für die Implementierung dieser Logik verantwortlich, da das STM keine Kenntnis hat, wie sich die Daten zwischen den Tabellen beziehen.

Ihre Antwort könnte darin liegen, wie oft eine Veränderung in einer Tabelle einen anderen wirkt und ob Sie Ihren einzelnen Schiedsrichter in einen Schiedsrichter pro Tabelle einteilen.

Andere Tipps

Ich habe normalerweise festgestellt, dass es besser ist, die Anzahl der Schiedsrichter zu minimieren.

Schlüsselgründe:

  • Es ist oft hilfreich, große Teile des Anwendungszustands als einzelne unveränderliche Blöcke zu behandeln (zB, um einfache Schnappschüsse für die Analyse oder das Bestehen der Testfunktionen zu ermöglichen).
  • Es wird mehr Aufwand geben, viele kleine Schiedsrichter zu verwenden
  • Es hält Ihren Namespace auf höchstem Niveau einfacher

Dies hängt natürlich letztendlich von Ihrer Arbeitsbelastung und Ihren Parallelitätsanforderungen ab, aber mein allgemeiner Rat wäre, so wenig wie möglich mit so wenigen Schiedsrichtern zu passen, bis Sie sicher sind, dass Sie mehr benötigen.

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