2010-03-17 105 views
1

我有一个Windows服务,接收大量的数据需要转换并保存到数据库。为确保我们不会丢失数据,我希望为数据创建一个“写入缓存”,无论数据库是否在线,这些数据都会继续。一旦数据库再次变得可用,我希望它将缓存内容刷新回数据库。C#离线数据库写入缓存#

我见过一些文章指出我可以用NHibernate做到这一点,但我还没有确定地发现它。有什么选择存在,NHibernate的适当方向?

回答

0

我同意Paco,但仍然有一些情况下,如果数据库更新太频繁,那么你可能需要按照你的要求执行。

这就是所谓的后写方案

请看下面的文章

http://wiki.tangosol.com/display/COH32UG/Read-Through,+Write-Through,+Refresh-Ahead+and+Write-Behind+Caching

如果你觉得你真的需要它,你可以使用nCache的服务器 http://www.alachisoft.com/ncache/

或者有其他应用程序也可用于处理这种情况,您也可以编写自己的应用程序或代码来确保这一点。

问候 Mubashar

1

如果写入缓存脱机会怎么样?比你需要另一个writecache来确保第一个writecache。这是创建(假)可用性的递归模式。使用多台机器的集群尽可能小的可用性。 sql数据库的可用性可能高于系统中的任何其他组件。

我不处理这些类型的服务异常,我只是在它的原始输入再次调用服务(间接),当它失败的任何子系统的停机时间。原始输入可以是你的“writecache”。

+0

这是一个很值得非的答案。假设服务正在使用正在运行的机器的HDD作为写入缓存,则它同时失败的可能性(即写入缓存脱机),并且数据库服务器脱机的可能性非常低。你的建议确实有效,但你并没有回答这个问题。 – snicker 2010-03-17 22:36:06