2008-10-22 166 views
2

CouchDB和原生XML数据库(如eXist)之外,哪些数据库可以存储和查询未结构化和半结构化数据?我已经交了许多不同格式的数据(XML,JSON,YAML,CSV,一些自定义格式),我需要合并和处理,但在关系数据库中开发模式将是时间 - 消耗和困难。可以处理半结构化数据的数据库?

主要是,我正在寻找开源解决方案。另外,在某些时候,我想让这些数据可用。

我知道将所有这些数据转换为通用格式来处理会有一些开销。 XML前端有一些很好的选择:eXist-db和BerkeleyDB-XML似乎有很好的XQuery支持。另外,虽然还很年轻,但CouchDB看起来很有希望,它具有简单的“文档”格式。

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

我不喜欢的是“blobs-in-relational-db”解决方案。看起来像一个黑客,并没有真正考虑到数据的演变,FT索引等。

有没有其他解决方案我没有遇到过?

回答

-1

微软SQL Server有一个XML列式开始于2005年

0

如果你真的存储非结构化数据 - 或者你打算不基于文档的结构指数 - 那么我想全文像Lucene这样的搜索引擎将对你很有价值。 developerWorks用Lucene处理XML有一个较老的但内容丰富的article

+0

数据是半结构化的,但结构通常不匹配任何其他文档/文件。 – 2008-10-22 22:44:02

1

大多数现代RDBMS都支持xml数据类型,认为xml文档是表字段中的值,XPath/XQuery从值中检索数据。类似地,您可以使用CLOB数据类型来表示一大块字符(即非结构化文档);在这种情况下,Oracle,SQL Server和其他人可以扩展来在这些字段中执行文本搜索。

很酷的是,这些半结构化/非结构化的搜索工具是作为可从sql访问的操作符实现的,因此您可以将这些搜索的结果与您构造的查询混合;为客户端应用程序提供一致的关系表示。在一对夫妇的项目中,我们在Oracle数据库中存储了原生XML数据,并使用标准SQL视图将数据投影为结构化数据。

1

如果你想要非常通用的东西,你可以使用RDF存储。借助RDF,您可以构建一个图形,这对于半结构化数据来说是一个很好的抽象。您只需给图表提供数据固有的结构。在这种情况下,纸张Querying RDF Data from a Graph Database Perspective(或slides)可能是一个有趣的阅读。

更简单的方法是使用图形数据库(如neo4j)更直接地使用图形抽象。这是一个开源项目(我是其中的一部分)。图形数据库不会将您的数据与特定应用程序绑定在一起。OODB倾向于这样做。而且它也不会强制您使用必须适合数据的静态模式。