2011-12-13 34 views
1

我对在其核心我可以运行在内存中的对象还是需要看Serializeing到DB

public class Album 
{ 
    public ICPN ICPN { get; set; } 
    public string Title { get; set; } 
    public string Label { get; set; } 
    public string PLine { get; set; } 
    public string CLine { get; set; } 


    public string Genre { get; set; } 
    public string SubGenre { get; set; } 

    public string Artist { get; set; } 
    public int NumTracks { get; set; } 
    public int NumVolumes { get; set; } 

    public IList<ITerms> Terms { get; set; } 

} 

约4基本实体多线程应用程序工作,我有一个4步骤过程,我使用BlockingCollections生产者/消费者模式来管理这些过程。它是一条生产线,我修改完一个对象的状态后,将一个状态为& enque的副本拷贝到下一个进程队列中,等待下一个进程/任务执行。

我处于这个关键时刻,需要考虑将某些BlockingCollections序列化为数据库,或者我可以在Highend服务器上的管道中使用上述类型的约1000万个对象来运行。

我有一个专用于每个进程的统计信息的队列I.e UI的Timetaken/Success或者我应该看看是否将这些信息与对象一起存储?

速度/效率在这个过程中是临界的。

是否有计算内存需求的任何方式或这是吸吮的情况下,它&看到

更新在这个阶段,我不需要持续崩溃等数据作为元数据对象被修改和writen出到磁盘......即未处理的文件夹/已处理的文件夹

+1

如果你希望对象是持久化的,那么你需要实现一个持久化机制。你可以使用内置的序列化器或类似protobuf-net的东西。存储要求和性能取决于序列化技术。无论服务器有多强大,如果您希望这些对象在服务器重新启动/崩溃后仍然存在,您需要坚持。 – eulerfx

+0

服务器重新启动/崩溃不是问题@这一点..我的问题是,从性能的角度来看,你可以在内存中存储多少负载 – HoopSnake

+0

我不知道你为什么问,而且我怀疑知道这会有助于产生一个实际的,有用的答案。做一些乘法以获得关于基本POCO对象的内存使用的一些非常粗略的想法是相当容易的;如“,我可以同时将数千,数百万或数十亿的这些内容装入内存吗?”但问这样一个问题通常不会产生一个非常有用的答案。 –

回答

0

你不真正描述你的应用程序的形式因素,所以我会开始说它取决于。

如果您的应用程序需要重新启动,或者您的应用程序可能存在漏洞,那么我建议您将实时数据保存到某种形式的数据存储区(数据库,文件等) ),而在飞行中。当然,如果你永远不想丢失数据,这只是重要的。

编辑:考虑到你的编辑,我不认为这真的是必要的,除非你想保存任何以前的数据处理结果。

相关问题