我有一台带有db(sql server)的服务器,在客户端机器上,每台服务器都有本地数据库(sql服务器)和一个C#桌面应用程序。
现在我有多个客户端运行应用程序来显示记录并标记记录,如图所示,服务器db不断变化。客户端通过无线网络与服务器通信,有时可以丢弃。
它是一个事件考勤系统。在事件开始之前,我们已在服务器db中预先注册了guest虚拟机,因此在本地db中也是在活动当天,人们会参加活动,但如果没有在服务器数据库中注册,则无法绕过(因此新人员只会添加到服务器数据库中)。客户只是放置在活动地点门口的笔记本,每个客人都用他/她的卡扫描(一旦他在服务器上注册,他就会获得)。客户端扫描卡从服务器获取该卡的信息并标记他的出勤。每次他进来都会这样做。(每次都有出勤)
所以问题是:
案例1:我现在正在做的是,在客户端,应用程序首先查找服务器可用性,如果发现从服务器db获取数据并在服务器db上标记为回读(不涉及本地数据库)。当连接失败时,应用程序连接到本地数据库并在那里搜索记录并在本地数据库中标记为已读。可以通过确定手动同步本地数据库(本地数据库上读取的标记将发送到服务器数据库,服务器中的新记录将被提取到本地数据库)。
案例2:可能的情况是,我从不寻找服务器而只查找每个记录的本地数据库,并将标记保存为读取到本地数据库中。手动同步操作可以通过编写存储过程和在服务器数据库和本地数据库上运行的作业来自动执行,只要数据库在任何一方发生更改,就会在两者之间执行同步。
在性能和可靠性方面哪种方法更好。或者你有第三个案例?