2

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

我收到了很多不同格式的数据(XML、JSON、YAML、CSV、一些自定义格式),我需要合并和使用这些数据,但是在关系数据库中开发模式既耗时又困难。

主要是,我正在研究开源解决方案。此外,在某些时候,我想以某种方式提供这些数据。

我知道将所有这些数据转换为通用格式会产生一些开销。在 XML 方面有一些不错的选择:eXist-db 和 BerkeleyDB-XML 似乎有很好的 XQuery 支持。

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

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

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

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

4

5 回答 5

1

如果你想要一些非常通用的东西,你可以使用 RDF 存储。使用 RDF,您可以构建一个图,结果证明这是对半结构化数据的一个很好的抽象。您只需为图形提供数据固有的结构。在这种情况下,论文Querying RDF Data from a Graph Database Perspective(或幻灯片)可能是一本有趣的读物。

一种更简单的方法是通过使用像neo4j这样的图形数据库更直接地使用图形抽象。这是一个开源项目(我也是其中的一部分)。图形数据库不会像 OODB 那样将您的数据与特定的应用程序联系起来。而且它也不会强迫您使用必须将数据放入其中的静态模式。

于 2009-01-31T10:42:22.733 回答
1

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

很酷的是,这些半/非结构化搜索工具被实现为可从 sql 访问的运算符,因此您可以将这些搜索的结果与结构化查询混合;维护客户端应用程序的一致关系表示。在几个项目中,我们将原生 xml 数据存储在 Oracle DB 中,并使用标准 SQL 视图将数据投影为结构化数据。

于 2008-10-22T18:52:05.260 回答
0

如果您真的要存储非结构化数据——或者您不打算根据文档的结构进行索引——那么我认为像Lucene这样的全文搜索引擎对您来说很有价值。developerWorks 有一篇关于使用 Lucene 处理 XML的较早但内容丰富的文章。

于 2008-10-22T18:40:13.037 回答
0

IBM DB2 版本 9支持PureXML

于 2008-10-22T19:13:14.780 回答
-1

Microsoft SQL Server 从 2005 年开始具有 XML 列类型。

于 2008-10-22T18:33:06.843 回答