我的公司是教育行业,我们使用XML来存储课程内容。我们还在关系数据库中存储一些课程相关信息(主要是元信息)。目前,我们正在从专有的 XML 模式切换到 DocBook 5。随着切换,我们希望将课程相关信息从数据库移动到 XML 文件。这样做的原因是将所有课程数据放在一处并将其放在 Subversion 下。然而,我们希望保持关系数据库的灵活性,并能够轻松地从 XML 文档中提取有关课程的特定信息。XQuery 似乎能够胜任这项任务,因此我正在研究支持它的数据库,但到目前为止找不到我需要的东西。我基本上想要的是将我的 XML 文件放在某个目录结构中,然后在此之上我希望有一个系统可以索引我的文件并让我使用 XQuery 从任何文件中选择任何内容。这样我就可以“鱼与熊掌兼得”:我将拥有 XQuery 界面,并且仍然以纯文本形式保存我的文件并进行版本控制。有没有什么东西至少与我想要的有一点相似?

如果您认为我的要求是无稽之谈,请提出替代建议。

关于相关注释:您有哪些 XML 数据库(最好是本机和开源)的经验以及您会推荐什么?

有帮助吗?

解决方案

看一眼 存在, ,它是一个支持XQuery的开源xml数据库。

其他提示

对于本机 XML 数据库,您可以尝试 伯克利XMLDB, ,由 Oracle 维护,但是开源的。

如果您想要一个真正强大的解决方案,您可以使用 MarkLogic Xml 服务器. 。这是有成本的。

我不知道有任何 XQuery 实现既可以索引您的文档,又可以将它们保留在文件系统上。

但如果你有少量数据,你可以使用文件系统并使用 撒克逊人 作为您的 XQuery 实现来查询文档。撒克逊可以 将任何目录视为“集合” (以一种非常灵活的方式),这意味着您可以同时查询一堆文档。

如果您有适量的数据(并且文件系统方法太慢),那么 存在 是我用过的一个很好的开源选项。它的一个优点是它具有 WebDAV 界面,这意味着可以非常轻松地编辑文件并将它们视为另一个目录。eXist 有一个 历史触发 它将存储被替换的旧版本文档;我还没有使用过它,但您也许可以围绕它构建一些东西,从而为您提供所需的版本控制。还可以将 eXist 数据库备份到文件,然后使用 Subversion 对其进行版本控制。

如果您有大量数据或 eXist 不够强大,那么 马克逻辑服务器 是领先的商业 XML 数据库,我相信它对内部版本控制有一定的支持。

去年我经常使用 Berkeley XMLDB,它的情况有点复杂。

优点:FAST,xquery 和 xupdate,oracle 维护得很好,许多语言都有接口,小印记,嵌入式,基于文件(也许有些人认为这是一个骗局?),对于一些邪恶的令人敬畏的查询非常灵活

缺点:如果您正在处理任何并发类型的情况,那么环境是一个奇怪的概念,对于任何关系数据库人员来说都是一个奇怪的概念,通常非常敏感,如果不高兴的话往往会出现段错误

同意另一位发帖人的观点——进入更稳健的情况需要付出很大的代价,通常是速度方面的代价。如果我想尝试其他任何东西,它就会存在,但我被 java 打包的开销吓倒了。

从概念上讲,xmldbs 非常坚硬,只是它的实现有些不成熟,缺乏竞争,缺乏行业知识。

MarkLogic Xml 数据库服务器 (4.x) 有几个值得您尝试的好功能。

  1. 它有一个很好的原生 Xquery 实现,您可以查询 xml 文档。

  2. 它有一个内置搜索引擎/搜索解析器,并有一个 XQuery 扩展,可以快速索引您的文档。

  3. 它有一个简单的基于 REST 的协议支持,可以与外部系统对话并表现。

MarkLogic 发布了带有 XSLT 的 v4.2,这对于 XML 转换非常方便。在此版本中,好的部分是您可以混合使用 XQuery 和 XSLT 代码,以获得两全其美的效果。

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