如何搜索大型XML数据集?

时间:2009-10-06 02:07:33

标签: xml delphi datamodule

我有一个带XML的DataModule,我需要进行搜索......

不幸的是,有超过300,000条记录,我无法循环检查。

是否可以在不使用数据库的情况下进行查询?

还有其他解决方案吗?

6 个答案:

答案 0 :(得分:3)

XML适用于少量信息,但对于数据集来说,关系数据库确实是唯一合理的选择,especially if you need to be able to query it.

答案 1 :(得分:3)

您可以使用XPath之类的东西进行搜索:但是,这只是意味着XPath实现代表您进行搜索(这不一定会提高性能)。

答案 2 :(得分:2)

我认为提问为什么使用XML存储300k记录可能很重要?。由于XML不是用于处理数据的最有效格式。

如果您坚持使用XML,那么最好将XML文件读入某种数据库(您可能会使用内存表,但是您可能会再次耗尽内存)。我想如果你使用TXMLDocument对象加载XML文件,你会遇到严重的性能问题或者内存不足(我在播放250k记录xml文件时遇到了麻烦)。

您可以直接使用MSXML DOM(您可以导入类型库)或使用SAX,这将允许您按顺序解析它,我都没有多少经验。

答案 3 :(得分:1)

有许多内存数据库可能很有用。至少您可以根据需要索引和查询数据。我所知道的是来自components4developers.com。 大卫

答案 4 :(得分:0)

您没有说明如何实施数据源。我已经使用了通过TXMLTransformProvider连接的TClientDataSet(确定不是300K记录)但是只有几千个。并简单地设置过滤器和过滤的属性似乎“查询”它就好......

或者我错过了什么?

答案 5 :(得分:0)

对于Delphi的SAX解析器,请检查此Stackoverflow问题:

Is there a SAX Parser for Delphi and Free Pascal?