RPC und SQLAlchemy

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Einen wunderschönen guten Morgen Forum,

ich frage mich ob es einen schönen Weg gibt auf einem entfernten Server eine Methode aufzurufen, und von dort das Ergebnis einer SQLAlchemy-Abfrage zurück zu bekommen.

Ich habe so etwas vor Jahren unter Java mit RMI versucht, wobei Hibernate als ORM herhalten musste. Das war unglaublich umständlich, weil das bei Java ja mit seltsamen Klassne verbunden ist, die quasi mit einer Instanz vom Remote-Server gefüllt wurden und man auf beiden Seiten Klassendefinitionen vorhalten musste, etc.
Am Ende ist es daran gescheitert, dass die zurückgegebenen Klassen Daten nachladen wollten, sprich via Join verbundene Daten würden erst übertragen werden, wenn man das Objekt zugreift. Das hat natürlich nicht funktioniert.

Unter Python stelle ich mir dir Handhabung eigentlich relativ einfach vor, weil man auf dem Client eben keine Dummy-Klasse braucht, die die Schnittstelle des zurückgegebenen Objektes zeigt, bevor es überladen wird.

Ich habe im Internet bei der suche nach SQLAlchemy + RPC ein bisschen was gefunden, aber das ist mit 2006 nicht auf dem neuesten Stand.

Hat jemand so etwas schon einmal gemacht? Funktioniert das grundsätzlich?
Oh, und ich glaube, dass ich nach dem falschen Wort suche. RPC scheint auch zur Kommunikation mit anderen Sprachen gedacht zu sein. Gibt es da eine besondere Bezeichnung für Python<->Python, so wie RMI für Java?
BlackJack

@sparrow: Also erst einmal: So etwas wie das Python-Äquivalent zu Java's RMI dürfte Python Remote Objects sein. Falls Du das ins Auge fasst: Unbedingt auf die Sicherheit achten! Pyro schickt mit `pickle` serialisierte Daten durch die Gegend und denen sollte man vertrauen können, oder sich absichern.

Bei RPC im Zusammenhang mit Datenbanken ist wohl das grösste Problem, dass man aufpassen muss, dass die Ergebnisse nicht zu gross werden. Während eine DB die Daten zum Client noch „streamen” kann, wird das Ergebnis bei RPC-Mechanismen in aller Regel ja als eine, dann potentiell grosse Antwort zurück geschickt.

Wenn man einen einfachen RPC-Mechanismus wie JSON-RPC oder XML-RPC wählt, dann stellt sich die Frage nach dem von Dir genannten Problem nicht — es werden ja keine Objekte übertragen, sondern nur noch die Daten.
Antworten