微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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条消息)来批量写入.这样你就不会陷入打开和关闭文件只能写一两条消息.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐