加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 20:49:31 所属栏目:百科 来源:网络整理
导读:我有一个程序,可以接收1000个主题的实时数据.它平均每秒收到5000条消息.每条消息由两个字符串,一个主题和一个消息值组成.我想保存这些字符串以及指示消息到达时间的时间戳. 我在’Core 2’硬件上使用32位Windows XP并在C#中编程. 我想将这些数据保存到1000个
我有一个程序,可以接收1000个主题的实时数据.它平均每秒收到5000条消息.每条消息由两个字符串,一个主题和一个消息值组成.我想保存这些字符串以及指示消息到达时间的时间戳.

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

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

我考虑过几种方法:

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

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

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

你会如何解决这个问题?

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读