【问题标题】:Can SQL Server database time be used for synchronizing multiple clients?SQL Server 数据库时间可以用于同步多个客户端吗?
【发布时间】:2011-07-20 06:41:40
【问题描述】:

这是解决this problem 的另一种方法,而不是重复。

我希望我的 Azure 角色为 reprocess data in case of sudden failures。我考虑以下选项。

对于要处理的每个数据块,我都有一个数据库表行,我可以添加一个表示“来自处理节点的最后一次 ping 的时间”的列。因此,当一个节点抓取一个数据块进行处理时,它会将“处理”状态和那个时间设置为“当前时间”,然后节点负责更新那个时间,比如每分钟更新一次。然后定期某个节点会询问“所有处理状态和 ping 时间大于 10 分钟的块”,并将这些块视为已废弃,并以某种方式将它们排队等待重新处理。

我有一个非常严重的担忧。上述方法要求节点具有或多或少相同的时间。看来我不应该对全球时间做出假设。

但所有节点都与同一个数据库通信。如果我使用那个数据库时间——在 SQL 请求中使用像 GETUTCDATE() 这样的函数,我会做与我计划完全相同的事情,但我似乎并不关心节点时间是否同步——它们都将使用数据库时间。

如果我使用数据库时间函数,这种方法会可靠工作吗?

【问题讨论】:

    标签: sql-server database sql-server-2008 concurrency azure-sql-database


    【解决方案1】:

    作为一般规则,这种方法应该有效。如果当前时间只有一个来源,那么时间同步问题不会影响您。

    但是您必须考虑如果您的数据库服务器出现故障会发生什么。 Azure 会将您切换到另一个副本,在另一个服务器上,在另一个机架中,并且不保证此数据库服务器至少在时间方面与原始服务器同步。

    如果您必须扩展数据库,这种方法无疑会给您带来麻烦。

    我想我还是更喜欢基于队列的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      相关资源
      最近更新 更多