Seite 1 von 1

SQL über Sockets

Verfasst: 28. Januar 2010 11:29
von leoreiter
Hallo allerseits,

Ich arbeite an einem Projekt in dem mehrere Qt-Applikationen auf die gleiche SQLITE Datenbank zugreifen sollen. Anstatt jede Applikation direkt auf den SQLite Server zu verbinden möchte ich eine Datenbank-Applikation (Server) schreiben die für die anderen Applikationen (Clients) über eine Socket-Verbindung erreichbar ist und die Zugriffe auf die Datenbank managt. Dazu folgende Frage an die Experten unter euch:

Gibt es einen Weg in den Client-Applikationen ein QSqlTableModel bereitzustellen, das über den Socket mit dem Server kommuniziert? Oder kann ich nur SQL Strings über den Socket schicken?

Oder bin ich auf dem Holzweg und sollte besser jede Applikation direkt mit SQLite kommunizieren lassen?

Danke & lg,
Leo

Verfasst: 28. Januar 2010 11:54
von RHBaum
Die erste frage:

wenn du die clients direkt auf die DB zugreiffen lassen willst, warum dann sqlite? Welches definitiv nicht fuer deinen beschriebenen anwendungsfall gemacht ist, und nicht eine richtige RDBMS ? mysql / postgres oder sowas ?

wenn du abstrahieren willst, und ein traditionelles 3 schichtmodell programmieren willst, dann iss sqlite sicher ne option. Aber dann wurdest die clients ned mittels SQL und SQLmodells mit dem server kommunizieren lassen, sondern solltest ein angepassteres Protokoll nehmen was deiner Anwendung näher ist.

Ciao ...

Verfasst: 28. Januar 2010 12:37
von leoreiter
Hallo,

Danke für die rasche Antwort. SQLite verwende ich weil das ganze ein Embedded-System ist und bereits SQLite hat.

Anwendungsspezifische Zugriffsfunktionen hätte ich ohnehin vorgesehen (für den "normalen" Anwendungsfall) aber im Servicefall wäre es halt nett gewesen vom GUI aus möglichst unmittelbar auf die Datenbank zugreifen zu können.

lg,
Leo

Verfasst: 28. Januar 2010 13:56
von RHBaum
aber im Servicefall wäre es halt nett gewesen vom GUI aus möglichst unmittelbar auf die Datenbank zugreifen zu können.
du willst in jedem client ne "service-konsole" einbauen, wo nen Admin per SQL direkt auf die DB runterkommt ?

Das macht doch heut keiner mehr .
Normal kommt nen admin aufn server, und von dort aus koennt er mitm standardtool auf die sqlite datei drauf.
Um das protokoll vom server zum client zu testen, koennt man den client so baeuen, das er ueber telnet / ssh auch geht.

also ich wag zu bezweifeln, das sql befehle direkt vom client aus durchschiessbar machen, irgend einen vorteil bei der Wartung bringt.
Aber das muss jeder selber wissen .

Ciao ...

Verfasst: 28. Januar 2010 14:25
von phlox81
Du musst dich entscheiden zwischen DB Zugriff, und Webservice (SOCKETS),
SQL über Sockets selber implementieren zu wollen ist schwierig, da du ja bei mehreren Clients auch Raceconditions, Transitions, Locks etc. hast.

Evtl. wäre auch ODBC eine Alternative, wobei dies unter Unix/Linux natürlich etwas schwieriger ist.