对于政府机构,我们构建了一个用PHP和Oracle开发的发布管理系统。此应用程序的数据存储在数据库表中,并使用PL / SQL包和过程进行处理。
发布管理流程广泛基于来自Subversion存储库的元数据。我们通过内部Oracle JVM从PL / SQL访问存储库,以在驻留Oracle实例的unix服务器上执行svn命令。 svn命令的结果以XML格式接收,并在PL / SQL处理之前进行解析。以这种方式访问Subversion对于频繁重复使用并不是非常有效。
目前,我们所做的是在Subversion存储库中的每次提交时将Subversion元数据存储在数据库表中(通过Subversion挂钩)。我们提取每个Subversion事务的日志信息,并将其保存在一些oracle表中。然后,我们可以使用普通的SQL查询获取Subversion元数据。
有没有更好的方法从PL / SQL访问Subversion?
答案 0 :(得分:2)
如果使用Oracle的Java JVM,您可以尝试使用SVNKit从Java本地与SVN服务器进行通信,而不是向操作系统执行命令来执行命令。
答案 1 :(得分:2)
我认为基本流程是有道理的。我建议做实验,看看性能瓶颈究竟在哪里,然后从那里拿出来。例如,它是否从PL / SQL过渡到Oracle JVM?是JVM shelling出来执行svn命令吗?是svn往返旅行吗?它是解析XML吗?
比方说,这是svn往返。也许你可以在oracle机器上有一个进程来缓存来自svn服务器的答案,以便有时可以避免往返?也许svn往返可能是异步的?
但是,就像我说的那样,你需要知道瓶颈在哪里。
答案 2 :(得分:1)
我也在寻找一个API来整合Subversion和Oracle。我需要能够将Oracle PL / SQL对象(过程,包)拉入Subversion,然后一旦对对象进行更改就应该将它应用于Oracle数据库中的那些对象。
答案 3 :(得分:1)
另一个解决方案是使用保留在ORACLE和SVN之间的软件,并将PL / SQL与源同步。
这是其中一个可以由cron启动的程序: https://sourceforge.net/projects/dbcode-svn-sync/