关于数据库同步

时间:2015-12-29 09:59:31

标签: c# sql .net

我正在使用.NET中的C#开发Windows应用程序。它运行正常。, 但是客户也想要网站的输出。,怎么可能呢? Web服务器和本地使用相同的数据库。,我想同步两个数据库是否每15秒间隔相同或更新数据时间? 请给我一个解决这个问题的方法..

1 个答案:

答案 0 :(得分:1)

这是一个很大的主题,也是一个非常重要的问题,在决定解决方案之前,你应该做很多研究。我在下面写了一些想法,但这些并不是你应该警惕的可能方法或事情的详尽清单。

第一个决定是网站和应用程序是否应该使用相同的数据库副本,或者是否应该有两个单独的数据库副本并使用复制使它们保持同步。

复制本身就是一个很大的主题,因为您需要考虑数据库的两个副本之间的数据更改中的解决方案是如何发生冲突的(例如,如果两个数据库上的相同记录都发生了更改)。

你在问题​​中说网站将有"输出",如果这意味着网站只显示只读数据(即没有编辑网站上的数据),那么复制将是更简单,因为您只需要将数据复制到网站的数据库副本。

另一种解决方案是让Web和桌面应用共享数据库的一个副本。然后问题是托管该数据库以及如何访问它的位置。目前,您可能正在桌面应用程序中使用数据库连接来访问数据库。在网络上提供数据的最少编码解决方案是将您的网站托管在客户的网络上,以便桌面应用和网站都可以访问数据库。但是,这意味着您的客户现在正在其网络上托管一个网站,该网站存在各种潜在问题(例如安全性,流量,正常运行时间等)。

您可以编写REST Web服务(例如ASP.NET WebAPI),以便从客户的网络向网站提供数据,但这又要求您托管网站(以及Web服务) )来自客户的网络。

另一种方法是将数据库放在云中,让网站和桌面应用程序从那里访问它。这消除了在客户网络上托管网站的需要。但是,您可能会发现您的桌面应用程序现在比您想要的速度慢,因为它的设计是因为期望数据在附近并且可以快速访问。如果您已经使用异步数据访问结构编写了桌面应用程序,这种结构不会出现问题,但如果不是,您可能会发现桌面应用程序速度变慢。

但是,如果数据库中的数据完全敏感,您可能会发现您的客户对云中的数据不满意。如果是这种情况那么你需要对复制解决方案保持警惕 - 你应该确保你只是将网站所需的数据复制到网站的数据库副本。

另一种解决方案是通过TCP使本地托管的数据库可用于远程托管的网站(SQL Server可以做到这一点),但是还有一些安全问题需要考虑,你需要再考虑一下你是否有客户'网络和互联网连接可靠且具有足够的弹性,可以实时为网站提供数据。

要获得正确的解决方案,您需要考虑(除其他事项外)是否将在网站和应用程序上编辑数据,无论是现在还是将来,还要考虑网站的可能用户数量现在和将来。这也是您需要将客户包括在内的讨论。