Ich arbeite derzeit mit einer sehr großen Datenbank (> 50GB) und versuche den effizientesten, brauchbaren Ansatz zu verstehen, der gut mit Akkas inhärentem Threading funktioniert.Slick Datenbank Sessions, Effizienz und Threading in Akka
In Bezug auf die "Wrapping alles in withSession {}" Ansatz, während dies eine einfachere Lösung wäre, mache ich mir Sorgen, dass dies Akka Threading zwischen Akteuren beschränken würde. Ich bin nicht so gut informiert darüber, wie Akkas Threading funktioniert und wie das Umwickeln eines ganzen Actor-Systems in withSession es bewirken würde.
Ein anderer Ansatz besteht darin, withSession immer dann aufzurufen, wenn auf die Datenbank zugegriffen wird, was zu ineffizient ist. Das "withSession {" Code-Segment benötigt ~ 6ms, um ausgeführt zu werden, und wir machen Millionen von Anfragen.
Im Wesentlichen: Was ist der beste Weg, schnell auf eine Datenbank mit Slick und Akka zugreifen, ohne Threading zu brechen?
Ich habe von Ansätzen mit impliziten Sitzungen und Transaktionen gehört, aber ich habe Mühe, Dokumentation zu diesen beiden zu finden.
Siehe [diese Antwort] (http://stackoverflow.com/a/16834855/406435), um einige Ratschläge zu erhalten. – senia
Wie genau können Sie einen ExecutionContext mit Sitzungen verbinden? Oder wäre die beste Lösung, einfach den gesamten Datenbankzugriffscode unter einen anderen ExecutionContext zu stellen als den Rest? – TreeWhale
Sie könnten N Schauspieler erstellen, jede mit ihrer eigenen Sitzung. Jeder Akteur sollte seine eigene Sitzung verwenden und die gesamte Kommunikation mit der Datenbank sollte durch diese Gruppe von Akteuren geleitet werden. – senia