Dan*_*Dan 13 .net c# sql database
我目前正面临一个令人头疼的问题,我正在处理一个大型数据集(当我说大的时候,我的意思是数十亿行数据)而且我在速度和可扩展性之间陷入困境.
我可以在数据库中存储数十亿行数据,但是我的应用程序需要不断检查数据集中是否存在新的数据行,如果没有,则插入它,否则检索它.
如果我要使用数据库解决方案,我估计每次调用数据库以检索一行数据为10ms(乐观估计),我需要为我在我的应用程序中处理的每个文件检索大约800k记录,这意味着(10ms x 800k = 2.22 hours)
每个要处理的文件.考虑到当数据库增长到数十亿和数十亿行时,从数据库中检索一行数据所需的时间量将增加,因此分析和处理1个文件的时间跨度太长.
我还想过存储一个List
或者HashSet
在本地内存中进行比较和检索,但它不会解决,因为我无法在内存中存储数十亿条记录(对象).
请告诉我应该为我的情况做些什么.
编辑:哦,是的,我忘了声明我已经实现了半缓存,一旦检索到一条记录,它就会被缓存在内存中,所以如果需要再次检索相同的记录,它将从内存相反,但我面临同样的问题,我将达到一个时间点,内存不再适合任何更多的缓存数据.
理想情况下,如果您正在处理大量数据,那么您必须确保在处理数据时不会耗尽资源。然而,您只需要找到一种合理的方法来提高资源的利用率。
我肯定会选择数据库,因为这是以最优化的方式查询和存储数据的最著名的方式。您没有提到您的应用程序到底是做什么的,所以我只能给您提供关于在这种情况下我会如何做的一般意见;
归档时间: |
|
查看次数: |
963 次 |
最近记录: |