2009-10-14 10 views

risposta

39

mi viene in mente quattro possibili soluzioni per lo scenario:

  1. uso fully-qualified-table-nomi durante la ricerca di quella esterna tavolo . MySQL supporta dbname.tablename -sintassi per accedere a tabelle esterne all'ambito del database corrente. Ciò richiede che l'utente attualmente connesso disponga dei diritti appropriati per leggere dalla tabella richiesta in un altro db fisico.
  2. se il database esterno è in esecuzione su un server MySQL diverso (sullo stesso computer o tramite una connessione di rete), è possibile utilizzare la replica per aggiornare costantemente una copia di sola lettura della tabella remota. La replica è possibile solo se si stanno eseguendo due istanze MySQL separate.
  3. utilizzare FEDERATED MySQL storage engine in virtualmente importazione la tabella nel database corrente. Ciò solleva il requisito di fornire i diritti di accesso dell'utente corrente nel secondo database poiché le credenziali sono fornite con lo stato CREATE TABLE quando si utilizza il motore di archiviazione FEDERATED. Questo funziona anche con i database in esecuzione su diversi server fisici o diverse istanze MySQL. Penso che questa sia l'opzione meno performante e che abbia qualche limitations - più o meno importante a seconda del tuo scenario d'uso e delle tue esigenze.
  4. Si tratta di un'estensione per il metodo 1. Invece di dover precisare gli pienamente qualificati-table-nomi ogni volta che si richiede informazioni dal esterna tavolo , si può semplicemente creare un view all'interno del database corrente sulla base di una semplice SELECT <<columns>> FROM <<database>>.<<table>>. Questo assomiglia al metodo, il metodo FEDERATED funziona, ma è limitato alle tabelle sulla stessa istanza MySQL.

Personalmente considererei il metodo (4) il più utile, ma gli altri potrebbero anche essere possibili soluzioni alternative a seconda delle esigenze.

+1

Il motore di archiviazione FEDERATED può risolvere il mio problema. Lo proverò. – Palani

+1

Penso che il motore di archiviazione FEDERATED sia la soluzione più vicina al collegamento del database Oracle nello scenario in cui i database sono in esecuzione su server fisici diversi o istanze MySQL differenti. Nella stessa istanza puoi fare tutto con nomi di tabelle completi. Grazie Stefan. – csonuryilmaz

5

Al momento non esiste un metodo equivoco di MySQL, vedere this post. Tuttavia, poiché il poster suggerisce che è possibile eseguire un work-around se i database si trovano sullo stesso computer, semplicemente aggiungendo il nome-database davanti al nome-tabella.

Vedere anche this, ha 6 anni, ma non è stato risolto. È chiuso e probabilmente non è più nella loro lista delle cose da fare.

Problemi correlati