XML数据库评估
我的应用程序使用来自不同供应商的XML数据。 所有供应商都有不同的xml格式/架构,并且需要自定义查询才能从这些XML中检索各种数据。 (使用Woodstock StAX解析器)我从一个RDBMS方法开始,在从供应商处检索一个特定的XML之后,我将解析/查询XML并将数据写入一些表中(使用Woodstock StAX解析器)。然而,由于RDBMS(固定模式)的本质,我无法支持来自不同供应商的所有XML格式,即使我这样做,我也必须将分层xml“归一化”为RDBMS固定模式关系数据。XML数据库评估
来自供应商的xml /数据每天都会经常更新,并且大小在几kbs至50 MB的数据文件之间变化。
我正在评估各种NXD(本机Xml数据库),eXist-db,Sedna,BaseX和MonetDB作为下一步,看看这是否适合我的目的。
有人可以提供一些关于如何解决这个问题的实用建议吗?或者已经构建了类似的系统,它处理大量不同格式/模式的XML数据。
这里是核心XML要求我试图回答:
- 处理多种XML数据文件,从多个来源。不同供应商的XML不同。
- 整个文档的XML更新以及DB中现有XML的一些字段。
- 确定它是否来自特定供应商并据此进行查询。
- 使用XPath/XQuery查询这些XML以读取数据以将其呈现给通用视图中的用户。
请指教。
谢谢, Subhro。
我会使用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。
我认为你是正确的选择原生XML数据库而不是混合数据库,如SQL服务器。混合数据库,因为它们做得太多,通常需要更长的时间才能提供核心XML功能,例如符合XQuery和XQuery更新的实现;而且他们提供了许多不同的数据存储方式,这使得开发人员难以控制。
至于哪种产品,这里有一个真正的问题。对数据库产品进行评估是一个昂贵的过程,如果要做到足够彻底以获得有意义的答案,那么可能会花费更多的成本而不是做出错误的选择当数据库项目失败时,通常不是因为数据库软件不足,而是因为项目缺乏使用所选数据库软件发挥最大优势的技能和经验。所以我会说,选择一种基于可用技能的产品。