我们为政府机构构建了一个用 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?

有帮助吗?

解决方案

如果您使用 Oracle 的 Java JVM,您可以尝试使用 SVN工具包 从 Java 与 SVN 服务器进行原生通信,而不是通过操作系统来执行命令。

其他提示

我认为基本流程是有道理的。我建议做实验来看看性能瓶颈到底在哪里,然后从那里采取行动。例如,是否从 PL/SQL 跨越到 Oracle JVM?是JVM脱壳执行svn命令吗?是svn往返吗?是XML的解析吗?

比方说,这是 svn 往返。也许你可以在 oracle 机器上有一个进程来缓存来自 svn 服务器的答案,这样有时就可以避免往返?也许 svn 往返可以是异步的?

但是,就像我说的,你需要知道瓶颈在哪里。

我也在寻找一个 API 来集成 Subversion 和 Oracle。我需要能够将 Oracle PL/SQL 对象(过程、包)拉入 Subversion,然后一旦对对象进行更改,它就应该应用于 Oracle 数据库中的这些对象。

另一种解决方案是使用介于 ORACLE 和 SVN 之间的软件,将 PL/SQL 与源同步。

以下是可以由 cron 启动的程序之一:https://sourceforge.net/projects/dbcode-svn-sync/ .

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top