是否存在到现有XML文件的XML XQuery接口?

时间:2020-03-06 14:23:57  来源:igfitidea点击:

我的公司从事教育行业,我们使用XML存储课程内容。我们还将一些与课程相关的信息(主要是metainfo)存储在关系数据库中。现在,我们正在从专有的XML Schema切换到DocBook5. 我们希望将与课程相关的信息从数据库转移到XML文件。这样做的原因是将所有课程数据放在一个地方,然后放在Subversion下。但是,我们希望保持关系数据库的灵活性,并能够轻松地从XML文档中提取有关课程的特定信息。 XQuery似乎可以完成任务,因此我正在研究支持它的数据库,但到目前为止找不到我需要的东西。我基本上想要的是将XML文件放在特定的目录结构中,然后在此之上,我希望有一个系统可以对我的文件建立索引,并允许我使用XQuery从任何文件中选择任何内容。这样,我就可以"吃也吃":我将具有XQuery界面,并且仍将文件保留为纯文本格式和版本控制。那里至少有什么与我想要的东西相似的东西吗?

如果我们认为我的要求是胡说八道,请提出其他建议。

在相关说明中:我们有哪些XML数据库(最好是本机和开放源代码)经验,我们会推荐什么?

解决方案

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

对于本地XML数据库,我们可以尝试Berkeley XMLDB,该数据库由Oracle维护,但是是开源的。

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

我不知道任何XQuery实现都可以索引文档并将它们保留在文件系统上。

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

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

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

在过去的一年中,我与Berkeley XMLDB进行了很多合作,这有点复杂。

优点:FAST,xquery和xupdate,oracle保持良好状态,许多语言都有界面,小的烙印,嵌入式,基于文件的文件(也许有人认为这是缺点?),对于某些邪恶的令人敬畏的查询而言非常灵活

缺点:如果我们要处理任何并发类型的情况,这是一个麻烦,环境对于任何关系数据库人员来说都是一个奇怪的概念,通常非常敏感,如果不满意,则容易出现段错误

同意另一个发布者,使其情况更加健壮,通常会在速度上付出巨大的代价。如果我要尝试其他任何方法,它将会存在,但我对java打包的开销感到沮丧。

从概念上讲,xmldbs超级难,其实现只是有些不成熟,缺乏竞争,缺乏行业知识。

MarkLogic Xml数据库服务器(4.x)具有我们尝试的几个良好功能。

  • 它具有良好的本机Xquery实现,我们可以查询xml文档。
  • 它具有内置搜索引擎/ search解析器,并具有XQuery扩展名,可以快速索引文档。
  • 它具有基于REST的简单协议支持,可以与外部系统对话并表现出来。

MarkLogic已发布带有XSLT的v4.2,对于XML转换非常方便。好的方面是,在此版本中,我们可以混合使用XQuery和XSLT代码以充分利用这两个方面。