【问题标题】:Offline Database Write Cache in C#C# 中的离线数据库写入缓存
【发布时间】:2010-03-24 13:50:00
【问题描述】:

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

我看到一些文章表明我可以使用 NHibernate 来做到这一点,但我还没有最终找到它。对此有哪些选择,NHibernate 是合适的方向吗?

【问题讨论】:

    标签: c# database nhibernate caching


    【解决方案1】:

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

    我不在服务中处理此类异常,我只是在任何子系统停机时失败时使用其原始输入再次(间接)调用该服务。原始输入可以是您的“writecache”。

    【讨论】:

    • 这几乎没有答案。假设服务使用运行它的机器的硬盘作为写缓存,它同时失败(即写缓存脱机)和数据库服务器脱机的可能性非常低。您的建议确实有效,但您没有回答问题。
    【解决方案2】:

    我同意 Paco,但仍然存在一些情况,例如如果数据库更新过于频繁,那么您可能需要按照您的要求实施。

    这称为后写场景

    看下面的文章

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

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

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

    问候 穆巴沙尔

    【讨论】:

      猜你喜欢
      • 2013-01-23
      • 1970-01-01
      • 2013-06-14
      • 2018-11-13
      • 1970-01-01
      • 1970-01-01
      • 2014-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多