关于在 C# 中处理来自 Web 的大数据的理论
Theoretical about handling large data from web in c#
我不熟悉处理大型数据文件
我想从一个有 13 列和大约 150 万行的互联网资源中提取
在提取过程中,我提取了大约 5000 行分钟的数据(API 限制)
我正在用 c# 编码,非常感谢一些助手
我将数据保存在哪种类型的数据存储中。
数组? , 堆?节点?
如果有人能给我提供一个很棒的解决方案
非常感谢!
这实际上取决于您之后将如何处理这些数据(包括您是否实际上同时需要内存中的所有数据)。
如果可能,并且你的数据中有一个规范化的键(或者可以从中构建一个好的散列),我会为它使用 HashSet
,因为它在内存和性能方面都很高效,如果哈希很好,它在查找时会接近 O(1) 性能。
请记住,默认情况下,您可以在 .NET 应用程序中存储的最大对象大小为 2gb(我认为如果目标为 64 位,您可以在 .NET 4.5 上覆盖此限制),因此如果您需要更多,您可以需要不同的对象,批量操作。
150 万行并不能说明什么:那些 "lines" 的大小可能是 10 个字节,或者每行几兆字节,
也许您根本不需要存储数据。
看看 Reactive Extensions
http://msdn.microsoft.com/en-us/data/gg577609.aspx
如果可以使用Observerable.Aggregate方法
即时处理您的聚合,因此不需要在读取过程后重新扫描所有记录。
其他
如果内存消耗小于1GB(根据我的经验),你可以使用List<YourDataRecordType>
如果以后需要在 and/or 持久性数据存储上进行未知的复杂查询,只需使用 SQLite
您可以轻松嵌入例如 RavenDB,并将每一行作为一个对象推送。性能应该不是问题,您最终会得到安全且可查询的数据源(例如,如果您需要快速找出您已经获得的数据,以防您必须重新开始数据下载)。
Here is how to embed a RavenDB
我认为最大的问题是您真的不想丢失已经下载的数据,因为您受限于 API。
我不熟悉处理大型数据文件 我想从一个有 13 列和大约 150 万行的互联网资源中提取 在提取过程中,我提取了大约 5000 行分钟的数据(API 限制) 我正在用 c# 编码,非常感谢一些助手 我将数据保存在哪种类型的数据存储中。 数组? , 堆?节点? 如果有人能给我提供一个很棒的解决方案
非常感谢!
这实际上取决于您之后将如何处理这些数据(包括您是否实际上同时需要内存中的所有数据)。
如果可能,并且你的数据中有一个规范化的键(或者可以从中构建一个好的散列),我会为它使用 HashSet
,因为它在内存和性能方面都很高效,如果哈希很好,它在查找时会接近 O(1) 性能。
请记住,默认情况下,您可以在 .NET 应用程序中存储的最大对象大小为 2gb(我认为如果目标为 64 位,您可以在 .NET 4.5 上覆盖此限制),因此如果您需要更多,您可以需要不同的对象,批量操作。
150 万行并不能说明什么:那些 "lines" 的大小可能是 10 个字节,或者每行几兆字节,
也许您根本不需要存储数据。
看看 Reactive Extensions
http://msdn.microsoft.com/en-us/data/gg577609.aspx
如果可以使用Observerable.Aggregate方法
即时处理您的聚合,因此不需要在读取过程后重新扫描所有记录。
其他
如果内存消耗小于1GB(根据我的经验),你可以使用List<YourDataRecordType>
如果以后需要在 and/or 持久性数据存储上进行未知的复杂查询,只需使用 SQLite
您可以轻松嵌入例如 RavenDB,并将每一行作为一个对象推送。性能应该不是问题,您最终会得到安全且可查询的数据源(例如,如果您需要快速找出您已经获得的数据,以防您必须重新开始数据下载)。
Here is how to embed a RavenDB
我认为最大的问题是您真的不想丢失已经下载的数据,因为您受限于 API。