我有一个带XML的DataModule,我需要进行搜索......
不幸的是,有超过300,000条记录,我无法循环检查。
是否可以在不使用数据库的情况下进行查询?
还有其他解决方案吗?
答案 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问题: