【发布时间】:2012-01-05 14:22:49
【问题描述】:
我有一个摆动桌面应用程序,它安装在局域网内的许多桌面上。我有一个 mysql 数据库,所有这些都可以与之交谈。每天下午 5 点,每个应用程序中都会有一个线程唤醒并尝试将文件备份到远程服务器。我想阻止所有桌面应用程序做同样的事情。
我当时的想法是:
在下午 5 点醒来后,所有应用程序都会尝试在 MYSQL 表中写入一行。他们会写同样的信息。只有 1 会成功,其他会得到重复行异常。谁成功了,就继续运行备份程序。
我的问题是:
这是正确的做事方式吗?有没有更好(更简单)的方法? 我知道我们也可以使用套接字来做到这一点。但我不想走那条路……编码太多,我还需要确保所有系统都可以先相互通信(ping)
会不会支持mysql之类的功能。我的数据库是 INNO DB。所以我认为确实如此。通常,我在 LAN 中有大约 20-30 个用户。这会导致数据库处理的巨大开销吗?
【问题讨论】:
-
为什么不使用未安装在桌面上的专用备份系统?
-
只有一个客户端应该做备份?您要备份存储在桌面上的数据还是存储在服务器上的数据?
-
@Gandalf - 实际上很难做到。这是我们最初想到的一个好主意,但在备份期间有一些用户参与。如果专用用户不启动应用程序,则无法进行备份。
-
“在每个应用程序中尝试将文件备份到远程服务器”。 “in each”,听起来每个客户都会做备份。 “到远程服务器”听起来像是将存储在服务器中。这个问题写得很好。
-
@Puce - 备份数据应该存储在远程服务器上 - 实际上是 Amazon S3。所有客户端都可以访问相同的数据库和文件(在共享文件夹上)。因此,如果备份同时在所有用户的桌面上运行,那么他们基本上会一次又一次地备份相同的文件。