Domanda

Per un'agenzia governativa, costruiamo un sistema di gestione delle versioni sviluppato in PHP e Oracle. I dati per questa applicazione sono memorizzati in tabelle di database ed elaborati con pacchetti e procedure PL / SQL.

Il processo di gestione delle versioni si basa ampiamente su metadati provenienti dai repository Subversion. Accediamo ai repository da PL / SQL tramite Oracle JVM interna per eseguire comandi svn sul server unix su cui risiedono le istanze Oracle. I risultati dei comandi svn vengono ricevuti in XML e analizzati prima di essere elaborati da PL / SQL. L'accesso a Subversion in questo modo non è molto efficace per un uso frequente e ripetuto.

Attualmente, ciò che facciamo è archiviare i metadati di Subversion nelle tabelle del database ad ogni commit nei repository Subversion (tramite hook Subversion). Estraggiamo le informazioni del registro per ogni transazione Subversion e le conserviamo in alcune tabelle di Oracle. Siamo quindi in grado di ottenere metadati di Subversion con normali query SQL.

Esistono modi migliori per accedere a Subversion da PL / SQL?

È stato utile?

Soluzione

Se si utilizza Java JVM di Oracle, è possibile provare a utilizzare SVNKit per comunicare nativamente con Java dal server SVN , invece di sborsare al sistema operativo per eseguire i comandi.

Altri suggerimenti

Penso che il flusso di base abbia senso. Consiglierei di fare esperimenti per vedere dove sono esattamente i colli di bottiglia delle prestazioni e poi prendere se da lì. Ad esempio, sta passando da PL / SQL a Oracle JVM? JVM sta sborsando per eseguire il comando svn? È lo svn round trip? È l'analisi dell'XML?

Diciamo, ad esempio, che è il round trip svn. Forse potresti avere un processo sulla macchina dell'oracolo che memorizza nella cache le risposte dal server svn in modo che a volte il round trip possa essere evitato? Forse il viaggio di andata e ritorno in svn potrebbe essere asincrono?

Ma, come ho detto, devi sapere dov'è il collo di bottiglia.

Sto anche cercando un'API per integrare Subversion e Oracle. Devo essere in grado di estrarre oggetti Oracle PL / SQL (procedure, pacchetti) in Subversion e quindi, una volta apportate modifiche agli oggetti, dovrebbero essere applicati a quegli oggetti nel database Oracle.

Un'altra soluzione consiste nell'utilizzare software che si colloca tra ORACLE e SVN e sincronizza PL / SQL con le fonti.

Ecco uno di questi programmi che può essere avviato da cron: https://sourceforge.net/projects/dbcode-svn-sync/ .

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