Come accedere a Subversion da Oracle PL / SQL?
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?
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/ .