Grundlegende Frage zu Datenbankverbindungen

Verschiedenes zu Qt
Antworten
sea_bear
Beiträge: 61
Registriert: 9. Oktober 2005 16:40
Wohnort: Schortens

Grundlegende Frage zu Datenbankverbindungen

Beitrag von sea_bear »

Moin moin!
Ich habe da mal eine grundlegende Frage zum Thema Datenbankverbindungen. Ich hatte mal gelernt, dass man versuchen soll, so wenig echte Verbindungen wie möglich zu einem Datenbankserver aufzubauen. In einem meiner selbst geschriebenen Qt4 Programme nutze ich zum Beispiel eine mySQL Datenbank mit 11 einzelnen Tabellen. Aufbauen tue ich aber nur eine Verbindung zum mySQL Server. Nehme ich nun zum Beispiel knoda, so wird für jede geöffnete Tabelle eine Verbindung zum mySQL Server aufgebaut. Bei 11 aktiven Tabellen habe ich dann 11 Verbindungen zu mySQL. Kann man alles sehr schön mit mytop sehen.
Ich möchte nun aber gerne auf einem Rechner mehrere Programme gleichzeitig von mir laufen lassen, welche alle auf einen mySQL Server zugreifen werden. Wenn ich für jede Tabelle der einzelnen Datenbanken jeweils eine Verbindung herstelle, werde ich ungefähr 50 Verbindungen haben. Scheint mir ein bisschen viel zu sein, vor allen da nicht ständig alle Verbindungen benötigt werden.
Was ist aber nun der bessere Weg? Was ist der Unterschied? Gibt es Geschwindigkeitsvor- / nachteile?
Irgendwie habe ich bis jetzt noch keine vernünftige Antwort im Netz zu diesen Fragen gefunden. Aber vielleicht kann mir ja jemand hier helfen.

Tobias
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Jede Verbindung zur Datenbank braucht Resourcen.

Im allgemeinen reicht eine Verbindung zur Datenbank aus. Der Server-Administrator wird es dir danken.
sea_bear
Beiträge: 61
Registriert: 9. Oktober 2005 16:40
Wohnort: Schortens

Beitrag von sea_bear »

upsala hat geschrieben:Jede Verbindung zur Datenbank braucht Resourcen.

Im allgemeinen reicht eine Verbindung zur Datenbank aus. Der Server-Administrator wird es dir danken.
So denke ich auch. Doch welchen tieferen Sinn hätten dann mehrere Verbindung zu einer Datenbank, wenn doch auch eine reicht?? Das ist ja gerade mein Problem, dass ich eben genau da keine Logik sehe.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Für mich hätte max. eine 2. Verbindung in einem eigenem Thread zum synchronisieren mit einer anderen Datenbank einen Sinn.

Was die Programmierer von KNoda damit bezwecken wollte, must du schon diese fragen.
Mal davon abgesehen: Ist dieses Projekt überhaupt noch aktiv?
sea_bear
Beiträge: 61
Registriert: 9. Oktober 2005 16:40
Wohnort: Schortens

Beitrag von sea_bear »

upsala hat geschrieben:Für mich hätte max. eine 2. Verbindung in einem eigenem Thread zum synchronisieren mit einer anderen Datenbank einen Sinn.

Was die Programmierer von KNoda damit bezwecken wollte, must du schon diese fragen.
Mal davon abgesehen: Ist dieses Projekt überhaupt noch aktiv?
Keine Ahnung ob noch an knoda gearbeitet wird. Ich finde knoda nur sehr schön, da recht schnell. Habe leider noch nichts besseres gefunden, was mir diese Funktionen in ebenso einfacher Art und Weise zur Verfügung stellt. Lasse mich aber gerne von anderen Projekten überzeugen.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Wenn man eine DB hat, die Transaktionen untersteutzt, und es meist max eine transaktion pro verbindung gibt, macht es Sinn fuer "mehrere" logische vorgaenge im selben programm ne eigene verbindung zu bauen (um mehrere transaktionen zu bekommen)

Ansonsten iss es manchmal nen guter trick, um mehr Last parallel auf den Datenbankserver zu legen. oft wird pro verbindung nur ein prozess gestartet ohne multithreading. Um die Rechenleistung des Servers besser auszunutzen bekommt man mit mehreren verbindungen quasi multiprozessing.
Ob das gewollt ist, oder ob der Admin Dir auf die Finger hauen woellte iss von fall zu fall unterschiedlich.
Grad in komplexen client server architekturen isses besser die Last so gut wie geht auf den server zu legen, weil man den an zentraler stelle besser kalkulieren kann .... Aber da wuerde man dann auch nen RDBMS verwenden was mit der rechenleisteung sehr gut mitskaliert (und pro connect mehrere Abfragen parallel bearbeiten kann).

Ciao ...
odenter
Beiträge: 36
Registriert: 5. Dezember 2009 10:02

Beitrag von odenter »

Mir fallen spontan 10 Gründe ein warum man mehr als eine Connection braucht, und das auf verscheidenen Servern MSSQL, Oracle, MySql und PostgresSql.

Alleine schon weil Funktionen der Server sich zum Teil eben auf die aktuelle Connection beziehen.

Da produziert eine Multithreaded Anwendung schonmal nur Mist, wenn nur eine Connection verwendet wird.
Antworten