除了CouchDB和原生XML数据库(例如eXist)之外,哪些数据库可以存储和查询非结构化和半结构化数据?
我已经交付了许多不同格式的数据(XML,JSON,YAML,CSV,一些自定义格式),我需要合并和使用它们,但在关系数据库中开发模式将非常耗时而且很难。
主要是,我正在研究开源解决方案。此外,在某些时候,我想提供一些如何使用这些数据。
我知道将所有这些数据转换为常用格式会有一些开销。 XML前端有一些很好的选择:eXist-db和BerkeleyDB-XML似乎都有很好的XQuery支持。
此外,虽然还很年轻,CouchDB看起来很有前途,其简单的“文档”格式。
我看过的其他途径是OODBMS,如ZODB和db4o;编写一些简单的解析脚本,然后只是“按原样”存储生成的记录对象。之后的问题是询问他们; OODBMS似乎没有良好的查询引擎历史。
我并不热衷于“blob-in-relational-db”解决方案。看起来像黑客,并不真正允许数据的演变,FT索引等。
我还没有遇到任何其他解决方案吗?
答案 0 :(得分:1)
大多数现代RDBMS都支持xml数据类型,认为xml文档是表字段中的值,XPath / XQuery用于从值中检索数据。同样,您可以使用CLOB数据类型来表示大块字符(即非结构化文档);在这种情况下,Oracle,SQL Server和其他人都有扩展来对这些字段执行文本搜索。
很酷的是,这些半/非结构化搜索工具实现为可从sql访问的操作符,因此您可以将这些搜索的结果与您构建的查询混合;维护一致的关系代表客户端应用程序。在几个项目中,我们将本机xml数据存储在Oracle DB中,并使用标准SQL视图将数据投影为结构化数据。
答案 1 :(得分:1)
如果您想要非常通用的东西,可以使用RDF商店。使用RDF,您可以构建一个图形,这对于半结构化数据来说是一个很好的抽象。您只需为图表提供数据固有的结构。在这种情况下,论文Querying RDF Data from a Graph Database Perspective(或slides)可能是一个有趣的读物。
更简单的方法是使用图形数据库(如neo4j)更直接地使用图形抽象。这是一个开源项目(我是其中的一部分)。图形数据库不会将数据绑定到lika OODB倾向于执行的特定应用程序。它也不会强迫您使用必须适合数据的静态模式。
答案 2 :(得分:0)
如果您真的存储非结构化数据 - 或者您打算不根据文档的结构进行索引 - 那么我认为像Lucene这样的全文搜索引擎对您来说很有价值。 developerWorks在使用Lucene处理XML方面有一个较旧但信息丰富的article。
答案 3 :(得分:0)
IBM DB2版本9具有PureXML支持。
答案 4 :(得分:-1)
Microsoft SQL Server从2005年开始具有XML列类型。