我的公司在教育行业,我们使用XML来存储课程内容。我们还在关系数据库中存储了一些与课程相关的信息(主要是metainfo)。现在我们正在从我们的专有XML Schema切换到DocBook 5.随着切换,我们希望将课程相关信息从数据库移动到XML文件。这样做的原因是将所有课程数据放在一个地方并将其放在Subversion下。但是,我们希望保持关系数据库的灵活性,并能够从XML文档中轻松提取有关课程的特定信息。 XQuery似乎完成了任务,所以我正在研究支持它的数据库,但到目前为止找不到我需要的东西。我基本上想要的是将我的XML文件放在某个目录结构中,然后在此基础上我希望有一个系统可以索引我的文件并允许我使用XQuery从任何文件中选择任何内容。通过这种方式,我可以拥有“我的蛋糕,也可以吃它”:我将拥有XQuery界面,并且仍然可以将我的文件保存为纯文本和版本。那里有什么东西至少与我想要的东西相似吗?
如果你认为我要求的是胡说八道,请提出另一个建议。
相关说明:您有哪些XML数据库(最好是本机和开源)以及您会推荐什么?
答案 0 :(得分:1)
看一下exist,它是一个支持XQuery的开源xml数据库。
答案 1 :(得分:1)
对于Native XML数据库,您可以尝试Berkeley XMLDB,它由Oracle维护,但是是开源的。
如果您想要一个真正强大的解决方案,可以使用MarkLogic Xml Server。需要付费。
答案 2 :(得分:1)
我不知道任何XQuery实现都将索引您的文档并将它们留在文件系统上。
但是如果您有少量数据,则可以使用文件系统并使用Saxon作为XQuery实现来查询文档。 Saxon可以treat any directory as a "collection"(以非常灵活的方式),这意味着您可以同时查询大量文档。
如果您有适量的数据(并且文件系统方法太慢),那么eXist是我使用的一个很好的开源选项。一个优点是它有一个WebDAV接口,这意味着编辑文件并将它们视为另一个目录非常容易。 eXist有一个history trigger,可以存储旧版本的文档;我没有使用它,但你可能能够构建一些可以为你提供所需版本控制的东西。也可以将eXist数据库备份到一个文件,然后使用Subversion进行版本控制。
如果您有大量数据或者eXist不够健壮,那么MarkLogic Server是领先的商业XML数据库,我相信它对内部版本控制有一些支持。
答案 3 :(得分:0)
过去一年我和Berkeley XMLDB合作很多,而且它有点混乱。
优点:FAST,xquery和xupdate,oracle维护得很好,许多语言都有接口,小印记,嵌入式,基于文件(可能有些人认为是con?),对于一些邪恶的真棒查询非常灵活
缺点:如果你正在处理任何并发类型的情况,那么它的屁股会很痛苦,对于任何关系数据库人来说,环境都是一个奇怪的概念,一般非常敏感,如果不满意则容易出现段错误
同意另一张海报 - 走向更加强劲的局面是一项巨大的成本,通常是在速度上。如果我要尝试其他任何东西,它会存在,但我被Java包装的开销所吓倒。
概念上xmldbs摇滚超级硬,只是它的实现有些不成熟,缺乏竞争,缺乏行业知识。
答案 4 :(得分:0)
MarkLogic Xml数据库服务器(4.x)有几个很好的功能。
它有一个很好的本机Xquery实现,您可以查询xml文档。
它有一个内置的搜索引擎/搜索解析器,并有一个XQuery扩展,可以快速索引你的文档。
它有一个简单的基于REST的协议支持,可以与外部系统通信并表现出来。
答案 5 :(得分:0)
MarkLogic已经发布了使用XSLT的v4.2,这对于XML转换非常方便。好的部分是在这个版本中你可以混合使用XQuery和XSLT代码来获得两全其美。