9

政府機関向けに、PHP と Oracle で開発されたリリース管理システムを構築しています。このアプリケーションのデータはデータベース表に格納され、PL/SQL パッケージおよびプロシージャで処理されます。

リリース管理プロセスは、Subversion リポジトリからのメタデータに広く基づいています。内部 Oracle JVM を介して PL/SQL からリポジトリにアクセスし、Oracle インスタンスが存在する UNIX サーバーで svn コマンドを実行します。svn コマンドの結果は XML で受信され、PL/SQL によって処理される前に解析されます。この方法で Subversion にアクセスすると、頻繁に繰り返し使用する場合、パフォーマンスが低下します。

現在、私たちが行っていることは、(Subversion フックを介して) Subversion リポジトリのコミットごとにデータベース テーブルに Subversion メタデータを格納することです。各 Subversion トランザクションのログ情報を抽出し、いくつかのオラクル テーブルに保持します。その後、通常の SQL クエリで Subversion メタデータを取得できます。

PL/SQL から Subversion にアクセスするより良い方法はありますか?

4

4 に答える 4

2

基本的な流れはわかりやすいと思います。実験を行って、パフォーマンスのボトルネックがどこにあるかを正確に確認し、そこから判断することをお勧めします。たとえば、PL/SQL から Oracle JVM に移行していますか? svnコマンドを実行するためにJVMがシェルアウトしていますか? それはsvn往復ですか?XMLの解析ですか?

たとえば、svn 往復だとしましょう。おそらく、svn サーバーからの回答をキャッシュするプロセスを oracle マシンに設定して、ラウンドトリップを回避できるようにすることはできますか? たぶん、svn のラウンド トリップは非同期である可能性がありますか?

しかし、前述したように、ボトルネックがどこにあるかを知る必要があります。

于 2008-09-26T15:35:35.910 に答える
2

Oracle の Java JVM を使用している場合は、コマンドを実行するためにオペレーティング システムにシェルを送信する代わりに、SVNKit を使用して Java からネイティブに SVN サーバーと通信することを試みることができます。

于 2008-09-26T15:23:36.127 に答える
1

SubversionとOracleを整数化するためのAPIも探しています。Oracle PL / SQLオブジェクト(プロシージャ、パッケージ)をSubversionにプルできる必要があります。オブジェクトに変更が加えられたら、Oracleデータベース内のそれらのオブジェクトに適用する必要があります。

于 2009-02-04T22:49:11.377 に答える
1

もう 1 つの解決策は、ORACLE と SVN の間に留まり、PL/SQL をソースと同期するソフトウェアを使用することです。

cron で開始できるこれらのプログラムの 1 つを次に示します: https://sourceforge.net/projects/dbcode-svn-sync/

于 2011-04-25T10:51:40.943 に答える