Gut oder Böse? Abfragen aus 2 Datenbanken?

PowerCheat

Erfahrenes Mitglied
Hallo!

Ich habe mal ne kurze Frage, da ich gerade an einen Projekt Sitze, wo ich 2 Datenbanken getrennt von einander Betreibe, muss ich mal etwas in Erfahrung bringen:

Also wie gesagt ich habe 2 Datenbanken - Nein keine 2 Tabellen -

In der einen Datenbank befinden sich die User-Daten in der anderen Datenbank die Informationen zu den User-Daten.

Da man sich mit den User-Daten auf mehreren "Servern" Anmelden kann und verschiedene Informationen dort zu Verfügung stehen, stellt sich mir die Frage ob ich in meinen PHP Script mehrer Datenbanken abfragen kann und auch soll? Oder ob ich die Abfragen via API machen soll.

Ich würde gerne eure Meinung dazu in Erfahrung bringen, was sich besser Eignet und ob es sinn macht 2 Datenbanken ab zu Fragen.
 
Hallo,

ich glaube nicht, dass es von Vorteil ist 2 DBs zu nutzen, da es meiner Meinung die Performance beeinflußt.
Warum nimmst du nicht 1 db und 2 Tabellen kannst sie doch verknüpfen mit dem Primärschlüssel z.B.
Wegen Sicherheit, kannst du dir ja nen Cron anlegen, der nen backup der db erstellt.

Grüße
Frank
 
Problem ist wenn ich weitere Webseiten dem Projekt hinzufüge, weitere Datenbanken hinzu kommen.

Da auf allen Seiten die Gleichen User-Daten benutzt werden sollen und damit nur eien Anmeldung nötig gemacht werden soll.

Bei Spiel: ich betreibe jetzt angenommen 4 Online Spiele. aber bei Allen Spielen soll der User sich anmelden können, mit dem auf dem Hauptportal erstellten Account.

Jedes Spiel hat 20 - 40 Tabellen in der DB, wenn ich alles in einer DB laufen lasse wird z.b. ein neuer Entwickler nicht mehr durch steigen ...

Zumal die Tabellen so gut wie immer die Gleiche Struktur und die gleichen Namen habe.

Wäre es nicht ratsam, die Daten in einer DB unter zubringen.
 
Gut, das ist natürlich ein Argument.
Da könnte ich mir das so vorstellen, das du einen Login machst, der immer auf eine DB zugreift. Die logindaten schreibst du ja sowieso in eine Variable. Diese Variable übergibst du ja immer mit um die Authentifizierung zu gewährleisten. Du kannst diese ja auch zur Bestimmung der Spieldaten in der Spieledb nutzen.
Zum Abfragen der spezifischen Daten zum Spiel kannst du eine externe DBConfig erstellen, die du dann individuell includen kannst. Das hätte den Vorteil, das du die meisten abfragen nicht neu programmieren musst, sondern nur die DBConfig von Spiel zu Spiel änderst...
 
Problem ist wenn ich weitere Webseiten dem Projekt hinzufüge, weitere Datenbanken hinzu kommen.

Da auf allen Seiten die Gleichen User-Daten benutzt werden sollen und damit nur eien Anmeldung nötig gemacht werden soll.

Dein Problem sollte man nicht über php lösen.Im normal werden für so komplexe sachen Sql_server2000 oder neure Datenbank versionen eingestezt.In dem Fall folgt der Datenbank abgleicht über die Server selbst.Das heißt es gibt verschiedene methoden wie das ganze Syncroniesiert wird.

Sobald ein neuer eintrag in die Db folgt so sendet dann der Server automatisch die daten weiter an die anderen Datenbank Servern. Das geht übrings nicht nur mit 2 sondern das kann auf vielen server aufgeteil sein.

Mysql unterstütz meines wissen nicht so eine funktion.

Daher were dein Projekt nur über einen Microsoft Sql Server realisierbar.

Mfg Splasch
 
ok, soweit wäre das ja sicher möglich.

Vllt sollte ich einfach eine Class schreiben wo mit ich 2 Verbindungen erstellen kann.

dies wäre ja direkt mit DB_Query möglich oder bin ich jetzt Falsch?
 
Man kann durch aus verschiedene Datenbank von php aus aufrufen wenn es bei den 2 Bleibt kann du folgendes machen.(Es ist halt nur etwas umständlicher und Serverlastiger)

Zuerst bei login die lokale Db abfragen findet er dort nix drin dann wählst die 2 db an aber nicht vergessen voher die 1 db connect zu schliessen.

Das kanste dann ganz normal wieder über die Querry abfragen nur die Zugangsdaten beider Db müssen eben bekannt sein.

Es kann nur vorkommen das der Webspace betreiber die Ip prüft und nur zugriff auf die Db erlaubt wenn sie vom eigenen Webspace aus statt findet in dem Fall mußt du mit dem Betreiber in verbindung tretten.

Mfg Splasch
 
Zuletzt bearbeitet:
Hallo,

eine Hauptdatenbank für Login- und Userdaten zu verwenden und dann
die Daten zum gewünschten Unterprojekt zu übergeben sollte keine Probleme machen!
Login-Prozess etc abwickeln, alles in ner Session speichern, dann DB-Verbindung schliessen und zur passenden weiteren DB verbinden - wenn ich dein Problem richtig verstehe. Vom Serverleistungsaufwand her kaum von Bedeutung, denn nur beim Login an sich kommst du in die Situation, 2 verschiedenen Datenbanken in einem Script nutzen zu müssen, was auch kein Problem ist! Bei allen weiteren Schritten steht die benötigte Datenbank ja dann eh fest.
Wenn beide Datenbanken betroffen sind - also bei Unterprojekt1 auch ständig ein Datenabgleich mit der Hauptdatenbank stattfindet wäre es vielleicht sinnvoll jedem Unterprojekt eine Kopie der Hauptdatenbank zu verpassen, welche auf die für dieses Unterprojekt relevanten Daten abgespeckt ist.

MfG
 
PHP:
    function GetMyConnection($link)
    {
        global $g_link;
        if( $g_link[$link] )
            return $g_link[$link];
        $g_link[$link] = mysql_connect( 'localhost', 'lalalalalala', 'xxxxxxxx') or die('Could not connect to server.' );
        if ($link == 1) {
			mysql_select_db('User', $g_link[$link]) or die('Could not select database.');
		} elseif ($link == 2) {
			mysql_select_db('Server1', $g_link[$link]) or die('Could not select database.');
		}
        return $g_link[$link];
    }
   
    function CleanUpDB($link)
    {
        global $g_link;
        if( $g_link[$link] != false )
            mysql_close($g_link[$link]);
        $g_link[$link] = false;
    }

$res = mysql_query("SELECT * FROM `USER` LIMIT 1", GetMyConnection(1) );
	$res2 = mysql_query("SELECT * FROM `GAME` LIMIT 1", GetMyConnection(2) );
	$row = mysql_fetch_assoc($res);
	print_r($row);
	$row2 = mysql_fetch_assoc($res2);
	print_r($row2);	
CleanUpDB(1); CleanUpDB(2);

so habe ich das nun gelöst... hoffe das das richtig ist oder?
 

Neue Beiträge

Zurück