我需要将数据提供给数据处理窗口服务(单向,松散耦合)。我想确保服务正在停止等不会导致“丢失”数据,重新启动Windows服务只会让它在离开的地方工作,我需要系统非常容易进行故障排除,这就是我没有使用MSMQ的原因。
所以我提出了两个解决方案之一 - 或者:
或
MSSQL数据库是系统上的本地,而不是通过网络,但稍后我可能想将其移动到其他服务器。
从表现(或其他观点)来看,这是更好的解决方案吗?
答案 0 :(得分:6)
从性能角度来看,文件系统很可能是最快的 - 也许是大幅度的。
但是,还有其他因素需要考虑。
.GetFiles()
之类的东西会变慢 - 而DB可以在时间戳上编入索引,并且无论旧的混乱如何都会检索最新的消息。你可以解决这个问题,但这是一个额外的障碍。我不知道您的建筑物是什么,但 不会过早优化 。这两种解决方案在性能方面非常相似,而且可能并不重要 - 因此选择最适合您的方案。如果性能确实是一个问题,直接通信(无论是通过IPC还是IP或诸如此类)的性能将提高几个数量级,因此不要浪费时间进行微观优化。
答案 1 :(得分:0)
我对2005年及以下的经验是,数据库的速度要慢得多
特别是对于较大的文件..在进行表扫描时,这真的会弄乱SQL服务器内存
然而
新的 SQL server 2008 在引擎中具有更好的文件支持。