【问题标题】:Keeping in sync with database与数据库保持同步
【发布时间】:2010-09-14 06:52:00
【问题描述】:

我们开发的解决方案使用数据库 (sqlserver 2005) 来实现持久性,因此,所有更新的数据都保存到数据库中,而不是发送到程序中。

我有一个前端(桌面),目前它一直在轮询数据库以获取可能随时发生在某些关键数据上的更新,我并不真正喜欢数据库轮询和浪费 CPU 周期的工作,这些工作正在无用地重做.

我们的经理似乎不介意我们轮询数据库。数据量小(少于100条记录),间隔高(1分钟),但我是编码员。我愿意。是否有更好的方法来完成使内存中的数据与数据库中的数据尽可能同步的任务?该系统使用C# 3.5开发。

【问题讨论】:

  • 有多少应用程序实例在任何时候运行?数据从何而来?更多信息会有所帮助
  • 当您说池化时,我假设您的意思是“轮询”?

标签: c# sql-server .net-3.5


【解决方案1】:

由于您使用的是 SQL2005,因此您可以使用SqlDependency 来收到更改通知。请注意,您可以通过 System.Web.Caching.Cache 轻松使用它,尽管它的命名空间运行 just fine in a WinForms app

【讨论】:

    【解决方案2】:

    首先想到的是触发器与消息队列的结合。

    【讨论】:

      【解决方案3】:

      对于您的情况,这可能有点矫枉过正,但看看Microsoft Sync Framework 可能会很有趣

      【讨论】:

        【解决方案4】:

        SQL 通知服务将允许您根据多种协议将数据库回调到应用程序。一种实现方法是让通知服务在可访问的网络共享上创建(或修改)文件,并让您的桌面应用程序使用 FileSystemWatcher 做出反应。

        有关通知服务的更多信息,请访问:http://technet.microsoft.com/en-us/library/aa226909(SQL.80).aspx

        请注意,这可能是解决螺母类型问题的大锤方法。

        【讨论】:

        • 定义螺母类型问题?那么,什么是更合适的方法呢?
        【解决方案5】:
        【解决方案6】:

        这也可能是矫枉过正,但也许你可以实现某种缓存机制。也就是说,当数据写入数据库时​​,你可以同时缓存它,当你试图从数据库中取回数据时,首先检查缓存。

        【讨论】:

          猜你喜欢
          • 2010-10-29
          • 1970-01-01
          • 2011-07-14
          • 1970-01-01
          • 2017-09-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多