c# – 将实时数据存储到1000个文件中

c# – 将实时数据存储到1000个文件中,第1张

概述我有一个程序,可以接收1000个主题的实时数据.它平均每秒收到5000条消息.每条消息由两个字符串,一个主题和一个消息值组成.我想保存这些字符串以及指示消息到达时间的时间戳. 我在’Core 2’硬件上使用32位Windows XP并在C#中编程. 我想将这些数据保存到1000个文件中 – 每个主题一个.我知道很多人会想告诉我将数据保存到数据库中,但我不想走这条路. 我考虑过几种方法: 1)打开1 我有一个程序,可以接收1000个主题的实时数据.它平均每秒收到5000条消息.每条消息由两个字符串,一个主题和一个消息值组成.我想保存这些字符串以及指示消息到达时间的时间戳.

我在’Core 2’硬件上使用32位Windows XP并在C#中编程.

我想将这些数据保存到1000个文件中 – 每个主题一个.我知道很多人会想告诉我将数据保存到数据库中,但我不想走这条路.

我考虑过几种方法:

1)打开1000个文件,并在数据到达时写入每个文件.我对此有两个担忧.我不知道是否可以同时打开1000个文件,我不知道这会对磁盘碎片产生什么影响.

2)写入一个文件 – 以某种方式 – 稍后处理它以生成1000个文件.

3)将其全部保存在RAM中直到当天结束,然后一次写入一个文件.我认为如果我有足够的RAM,这将很有效,尽管我可能需要移动到64位以超过2 GB的限制.

你会如何解决这个问题?

解决方法 我同意Oliver,但我建议修改:拥有1000个队列,每个主题/文件一个.一个线程接收消息,对它们加时间戳,然后将它们粘贴到适当的队列中.另一个只是在队列中旋转,看看他们是否有数据.如果是,则读取消息,然后打开相应的文件并将消息写入其中.关闭文件后,它会移动到下一个队列.这样做的一个优点是,如果无法跟上流量,您可以添加额外的文件写入线程.我可能首先尝试设置写入阈值,但是(延迟处理队列直到它有N条消息)来批量写入.这样你就不会陷入打开和关闭文件只能写一两条消息. 总结

以上是内存溢出为你收集整理的c# – 将实时数据存储到1000个文件中全部内容,希望文章能够帮你解决c# – 将实时数据存储到1000个文件中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1226151.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存