Ich versuche herauszufinden, wie Datenbankoperationen bei der Verwendung eines Aktorsystems am besten zu handhaben sind. Tatsächlich blockieren Datenbankoperationen, während wir versuchen, in AKKA nicht zu blockieren.AKKA Actor und DataBase Operation
Ich rot in der Hauptdokument, dass eine Möglichkeit, das zu handhaben war, um einen Pool von Akteuren hinter einem Router, möglicherweise auf einem getrennten executionContext, die Datenbankzugriff behandeln würde erstellen.
Deshalb habe ich die folgenden Fragen:
1 - Ist der databaseActors die Verbindung offen hält die ganze Zeit?
2 - Wie funktioniert es zusammen mit dem Verbindungs-Pooling, wie es von vielen Datenbanken angeboten wird?
3 - Sollen wir beides kombinieren und die DatabaseActors eine neue Verbindung aus dem Pool anfordern, jedes Mal wenn sie angefordert werden. Wenn nicht, ist es nicht immer eine offene Verbindung, eine schlechte Sache zu tun?
4 - Kann mir jemand die subtile Sache erklären, die es zu einem Ansatz macht, der Thread-Hunger vermeidet. Zum Beispiel mit Play oder spray, die Behandlung einer Anfrage ist eine asynchrone Aufgabe, aber wenn diese Aufgabe einen Datenbankzugriff benötigt und wir eine Anfrage an den DatabaseActor senden, wird der Block auf der Datenbank Actor (wenn es auftritt) nicht induzieren, ein Block in der asynchronen Task, der zu einem möglichen Thread-Hunger führt?
5 - Ist es zu 100% sicher, dass die DB ACID-Eigenschaft die Sicherheit des Mehrfachlese- und -schreibvorgangs gewährleistet und daher vor der Beziehung stattfindet.
6 - Ich benutze die semantische Datenbank auch Triple-Store genannt und mache schwere Verwendung von semantischen Argumentation Fähigkeit während meiner Anfrage. Ich mache auch eine Menge Schreibzugriff, irgendeinen Ratschlag bezüglich der Abstimmungsparameter von Pooling und Actor-Nummern oder dedizierten Ausführungskontexten?
Best,
M
Vielen Dank für die Klarstellung. – MaatDeamon