Domanda

Quali sono i tuoi metodi per collegare i dati distribuiti su più architetture di database (pensa MySQL vs PostgreSQL ecc.), in un'unica applicazione?

Vuoi creare hashtable / array giganti per abbinare i contenuti l'uno contro l'altro? Esistono altre opzioni più efficaci e che richiedono meno memoria per farlo?

Se dovessi usare i dati sia da un MySQL & amp; Sorgente PostgreSQL, senza alcun modo di convertire un DB nell'altro (vincoli applicativi, mancanza di tempo, mancanza di conoscenza, ...), come lo faresti?

È stato utile?

Soluzione

Almeno nel caso di MySQL, è comunque possibile utilizzare i dati di più database in una singola query, purché i database siano ospitati dalla stessa istanza di MySQL Server. Puoi distinguere le tabelle da diversi database qualificando la tabella con un nome di schema:

CREATE TABLE test.foo (id SERIAL PRIMARY KEY) TYPE=InnoDB;

CREATE DATABASE test2;
CREATE TABLE test2.bar (foo_id BIGINT UNSIGNED, 
    FOREIGN KEY (foo_id) REFERENCES test.foo(id)) TYPE=InnoDB;

SELECT * FROM test.foo f JOIN test2.bar b ON (f.id = b.foo_id);

In PostgreSQL, puoi anche qualificare i riferimenti di tabella con un nome di schema. Tuttavia, non sono sicuro che sia possibile creare vincoli di chiave esterna nei database.

Altri suggerimenti

SQL Relay o un altro proxy sql. http://sqlrelay.sourceforge.net/

Se stai cercando di creare vincoli tra RDBMS - non puoi.

Sto affrontando lo stesso problema con l'esecuzione di parte di un'applicazione su PostgreSQL per cui ne trarrà beneficio, e il resto di MySQL dove è meglio.

Sto realizzando più inserimenti scartati dallo stesso formato di informazioni primarie (nel mio caso un ID utente generico), quindi lascio che l'applicazione gestisca la logica di assicurarsi di chiedere lo stesso ID da entrambi i DB.

Non c'è davvero un modo pulito per farlo al di fuori di astrarlo in una funzione di classe o di utilità, tuttavia, che ho trovato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top