2

我的应用程序使用来自不同供应商的 XML 数据。所有供应商都有不同的 xml 格式/模式,并且需要自定义查询来从这些 XML 中检索各种数据。

我最初从 RDBMS 方法开始,在从供应商处检索特定 XML 之后,我将解析/查询 XML 并将数据写入一些表中。(使用 Woodstock StAX 解析器)。然而,由于 RDBMS(固定模式)的本质,我无法支持来自不同供应商的所有 XML 格式,即使我支持,我也必须将分层 xml “规范化”为 RDBMS 固定模式关系数据。

来自供应商的 xml/数据每天都会频繁更新,大小从几 kb 到 50 MB 的数据文件不等。

我正在评估各种 NXD(原生 Xml 数据库)、eXist-db、Sedna、BaseX 和 MonetDB 作为下一步,看看这是否适合我的目的。

有人可以就如何解决这个问题提供一些实用的建议吗?或者已经构建了类似的系统,可以处理大量不同格式/模式的 XML 数据。

以下是我试图回答的核心 XML 要求:

  • 处理来自多个来源的多个 xml 数据文件。XML 因供应商而异。
  • XML 更新,整个文档以及数据库中现有 XML 中的一些字段。
  • 确定其是否来自特定供应商并相应地触发查询。
  • 使用 XPath/XQuery 查询这些 xml 以读取数据以将其以通用视图呈现给用户。

请指教。

谢谢,苏布罗。

4

2 回答 2

4

我认为您选择原生 XML 数据库而不是 SQL 服务器等混合数据库是正确的。混合数据库,因为它们做的很多,通常需要更长的时间来提供核心的 XML 功能,例如 XQuery 和 XQuery 更新的一致实现;并且它们提供了如此多不同的数据存储方式这一事实可能会使您的开发人员难以控制。

至于哪个产品,这里有一个真正的问题。评估数据库产品是一个代价高昂的过程,而且要做到足够彻底以获得有意义的答案,可能比做出错误的选择要付出更多的代价。当一个数据库项目失败时,通常不是因为数据库软件有缺陷,而是因为项目缺乏充分利用所选数据库软件的技能和经验。所以我想说,根据您可用的技能选择产品。

于 2011-01-09T15:04:59.147 回答
0

我将使用 SQL Server 作为数据库,结合 SQL Server Integration Services (SSIS) 作为集成工具。

SQL Server 本身支持 XML 列类型。它可以要求 XML 遵循一个模式或一组模式,并且可以使用 XQuery 处理 XML。同时,您当然可以将不同供应商的相同 XML 部分分解为表格。

XML 也可以通过 XML 索引进行索引,这将大大提高查询速度。

SSIS 可用于从不同的磁盘存储或通过 FTP 或 Web 服务收集不同的 XML 文件,并且可以将其处理到数据库中,无论是否有额外的预处理。例如,您可能会发现您可以在一定程度上合理化不同的 XML 格式,将大部分数据保留在普通的关系表中,同时仍将剩余部分(或整个文档)存储在同一数据库中以供后续查询使用。

OBTW,SSIS 对于 SQL Server 是免费的。

于 2011-01-09T11:40:54.970 回答