2

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

如果您认为我的要求是胡说八道,请提出替代建议。

关于相关说明:您有哪些 XML 数据库(最好是原生的和开源的)的经验,您会推荐什么?

4

6 回答 6

1

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

于 2008-09-18T23:16:36.310 回答
1

对于 am Native XML 数据库,您可以尝试Berkeley XMLDB,它由 Oracle 维护,但是是开源的。

如果您想要一个真正强大的解决方案,您可以使用MarkLogic Xml Server。这是有代价的。

于 2008-09-20T07:36:00.210 回答
1

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

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

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

如果您有大量数据或 eXist 不够健壮,那么MarkLogic Server是领先的商业 XML 数据库,我相信它对内部版本控制有一些支持。

于 2008-09-26T09:06:34.217 回答
0

在过去的一年中,我与 Berkeley XMLDB 合作了很多次,它的情况好坏参半。

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

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

同意另一张海报 - 去一个更强大的情况是一个很大的成本,通常是速度。如果我要尝试其他任何东西,它会存在,但我被 java 打包的开销吓倒了。

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

于 2008-11-04T19:35:13.113 回答
0

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

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

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

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

于 2010-04-12T18:21:02.610 回答
0

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

于 2010-11-30T17:17:16.693 回答