丰富的数据库前端 - 如何正确处理低质量的网络?

时间:2009-11-27 11:04:22

标签: database

我的数据库编程经验非常有限,我访问数据库的应用程序很简单:)。到现在为止:(。我需要创建一个中型桌面应用程序(它叫做富客户端?),它将使用网络上的数据库在多个用户之间共享数据。很可能我将使用C#和MSSQL / MySQL / SQLite。

我已经进行了一些驱动器测试,并发现在低质量网络上数据库访问并不是那么顺利。在一个公司的局域网中,通过网络和服务器传输的大量数据处于持续负载状态,因此通常情况下,简单的INSERT或SELECT SQL查询将花费1-2分钟甚至因超时/网络错误而失败。

处理此类情况是否是最佳做法?当然,我可以将我的应用程序拆分为GUI线程和数据库线程,因此网络问题不会导致冻结的GUI。但是如何处理大量网络错误?过于频繁地向用户显示它们并不是很好:(。我正在考虑在我的应用程序运行的每台计算机上自动创建数据库的本地副本:首先更新本地数据库并在后台同步它,简单地重试网络错误。如果网络存在很大的滞后/问题,这将允许应用程序运行事件。

任何提示和流行语我能看到什么?也许这是我不知道的一些最佳实践:)

2 个答案:

答案 0 :(得分:2)

很抱歉这不是您要找的答案,但您提到简单的插入/更新可能需要1-2分钟,甚至会因超时/网络错误而失败。

这对我来说听起来可能存在另一个问题,而不是网络本身。如果您在公司网络上工作,那么这种行为就必须有疯狂的流量。在继续之前,我会竭尽全力改善网络。你可以将ping的结果发布到数据库框吗?

如果您打算围绕这种类型的网络构建应用程序,它将显着改变最终产品,甚至可能导致其他客户的产品质量低劣。

根据应用程序的性质,可能会考虑在启动时实现异步持久性队列和缓存数据,甚至将db的副本嵌入到应用程序中。

答案 1 :(得分:1)

即使异步行为/队列/缓存/将数据库复制到每个本地实例等都有助于解决症状,但问题仍将存在。如果网络真的那么糟糕,那么我会用他们的I.T.解决它。部门或项目经理,从事物的一方到合同中建立一些绩效要求。