Napadají mě čtyři možná řešení pro váš scénář:
- při dotazu na externí použijte plně kvalifikované názvy tabulek stůl. MySQL podporuje
dbname.tablename
-syntaxe pro přístup k tabulkám mimo aktuální rozsah databáze. To vyžaduje, aby aktuálně připojený uživatel měl příslušná práva ke čtení z požadované tabulky v jiné fyzické databázi. - Pokud vaše externí databáze běží na jiném serveru MySQL (buď na stejném počítači nebo prostřednictvím síťového připojení), můžete replikaci použít k neustálé aktualizaci kopie vzdálené tabulky pouze pro čtení. Replikace je možná pouze v případě, že provozujete dvě samostatné instance MySQL.
- použijte
FEDERATED Úložný modul MySQL
virtuálně importovat tabulku do vaší aktuální databáze. Tím se ruší požadavek udělit aktuálnímu uživateli přístupová práva do druhé databáze, protože přihlašovací údaje jsou uvedeny vCREATE TABLE
-příkaz při použitíFEDERATED
skladovací motor. To také funguje s databázemi běžícími na různých fyzických serverech nebo různých instancích MySQL. Myslím, že to bude nejslabší možnost a má nějaké omezení - více či méně důležité v závislosti na vašem scénáři použití a vašich požadavcích. - Toto je rozšíření metody 1. Místo toho, abyste museli zadávat plně kvalifikované názvy tabulek pokaždé, když požadujete informace od svého externího tabulky, můžete jednoduše vytvořit zobrazení
uvnitř vaší aktuální databáze na základě jednoduchého
SELECT <
> FROM < >.< > . Toto se podobá způsobu,
FEDERATED
-metoda funguje, ale je omezena na tabulky ve stejné instanci MySQL.Osobně bych považoval metodu (4) za nejužitečnější – ale ostatní by také mohla být možná řešení v závislosti na vašich požadavcích.