可以处理半结构化数据的数据库?

时间:2008-10-22 18:30:31

标签: database distributed

除了CouchDB和原生XML数据库(例如eXist)之外,哪些数据库可以存储和查询非结构化和半结构化数据?

我已经交付了许多不同格式的数据(XML,JSON,YAML,CSV,一些自定义格式),我需要合并和使用它们,但在关系数据库中开发模式将非常耗时而且很难。

主要是,我正在研究开源解决方案。此外,在某些时候,我想提供一些如何使用这些数据。

我知道将所有这些数据转换为常用格式会有一些开销。 XML前端有一些很好的选择:eXist-db和BerkeleyDB-XML似乎都有很好的XQuery支持。

此外,虽然还很年轻,CouchDB看起来很有前途,其简单的“文档”格式。

我看过的其他途径是OODBMS,如ZODB和db4o;编写一些简单的解析脚本,然后只是“按原样”存储生成的记录对象。之后的问题是询问他们; OODBMS似乎没有良好的查询引擎历史。

我并不热衷于“blob-in-relational-db”解决方案。看起来像黑客,并不真正允许数据的演变,FT索引等。

我还没有遇到任何其他解决方案吗?

5 个答案:

答案 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列类型。