Die transaktionale Programmierung ist in der heutigen Zeit ein Grundpfeiler der modernen Entwicklung. Parallelität und Fehlertoleranz sind entscheidend für die Langlebigkeit einer Anwendung, und zu Recht ist die Transaktionslogik einfach zu implementieren. Mit dem Anwachsen von Anwendungen scheint es jedoch so zu sein, dass transaktionaler Code die Skalierbarkeit der Anwendung immer mehr belastet. Wenn Sie in verteilte Transaktionen und gespiegelte Datensätze einbinden, werden die Probleme sehr kompliziert. Ich bin neugierig, was scheint der Punkt zu sein, in der Datengröße oder Anwendungskomplexität, dass Transaktionen häufig Quelle der Probleme werden (verursacht Zeitüberschreitungen, Deadlocks, Leistungsprobleme in kritischen Code usw.), die lästiger zu beheben sind, Problembehandlung oder Problemumgehung als das Entwerfen eines Datenmodells, das in sich selbst fehlertoleranter ist, oder das Verwenden anderer Mittel, um die Datenintegrität sicherzustellen. Welche Entwurfsmuster dienen auch dazu, diese Auswirkungen zu minimieren oder die Standardtransaktionslogik obsolet oder unproblematisch zu machen?Wann werden Transaktionen mehr zur Last als zum Vorteil?
-
EDIT: Wir haben bisher einige Antworten von angemessener Qualität bekam, aber ich denke, ich werde eine Antwort schreiben mir einige der Dinge zu bringen, die ich gehört habe über zu inspirieren, um zu versuchen etwas zusätzliche Kreativität; Die meisten Antworten, die ich bekomme, sind pessimistische Ansichten des Problems.
Eine weitere wichtige Anmerkung ist, dass nicht alle Deadlocks ein Ergebnis von schlecht kodierten Prozeduren sind; manchmal gibt es missionskritische Operationen, die von ähnlichen Ressourcen in unterschiedlichen Aufträgen abhängen, oder komplexe Verbindungen in verschiedenen Abfragen, die aufeinander treten; Dies ist ein Problem, das manchmal unvermeidlich scheint, aber ich war Teil der Überarbeitung von Workflows, um eine Ausführungsreihenfolge zu ermöglichen, die weniger wahrscheinlich ist.
Diese Frage ist ziemlich subjektiv. Auch ist es ziemlich vage und wahrscheinlich zu allgemein, um eine konzentrierte Antwort zu erhalten. Sie sollten versuchen, es neu zu formulieren. –
Ich habe einige zusätzliche Details zu der Frage hinzugefügt und sogar eine Antwort mehr in die Richtung dessen gestellt, wonach ich suche, aber es scheint, dass dies in den SO-Wirbel hineingesogen wurde. – TheXenocide