请原谅这篇文章的标题,但我真的不能想到一个更有创意的标题。
我正在调用第三方网络服务,其中作者正在订购最近的交易结果。总事务计数大于100 000.为了使事情更有趣,Web服务发送代表每个事务的复杂对象,因此如果我一次要求所有100 000,将发生超时。因此,需要对此Web服务的调用进行批处理,以便一次只返回1000条记录。这意味着对此Web服务进行100次单独调用。
到目前为止一切都很好,除了交易需要从最旧到最新处理,所以我需要一个地方暂时保留这些交易的ID,以便以后我可以按正确的顺序调用ID(最旧的)在我对它们进行分类之后。
我在此解决方案中缺少的是RDBMS,我正在考虑使用文本文件来存储值。
请原谅长篇介绍,如果你还在醒着,请考虑以下事项:
(1)
这是一个架构/后勤问题,任何帮助都将不胜感激,谢谢
答案 0 :(得分:3)
如果您在典型的PC / Server类计算机上运行,则存储100,000个ID和相关时间戳的内存不会被视为大容量。考虑使用内存中的排序列表。
如果你真的想写一个文件,你可以使用File.ReadAllLines并向后遍历生成的字符串数组。
答案 1 :(得分:2)
如果它们只是ID,你肯定首先需要使用文件吗?
假设它们是32字节的ID ...其中100,000个仍然只是超过3MB。你是不是真的想要记忆?
我肯定会尝试使用内存解决方案 - 确保在最糟糕的情况下(例如,预期音量增加一倍)可以接受它,但请继续使用。
基本的道德并不是太害怕听起来很大的数字:在人类方面,100,000件物品可能很多,但除非每件物品有相当多的数据,否则它就是现代电脑的花生。
答案 2 :(得分:0)
您可以尝试将信息存储在DataSet / DataTable组合中,并使用附加到DataSet的DataView在您从中获取数据时更改排序顺序。
根据您从Web服务返回的XML的结构,您可以直接将其读取到DataSet中并让它将其解析为DataTables(如果可行,我会去这是为了简单因素)。
此方法涉及的代码最少 - 但您必须使用其中的100,000个项来评估DataSet的性能。
我应该注意,我建议您以这种方式存储整个事务(包括ID),然后您将获得需要处理的所有数据,并且可以按照您指定的任何排序顺序遍历它。
我得到的印象是,您最初只是存储ID,对它们进行排序 - 然后在排序顺序中为每个ID重新查询Web服务,但这意味着为同一数据点击服务两次。如果可能的话,我会避免这种情况。