【问题标题】:best practice on multi-client sql access architecture [closed]多客户端 sql 访问架构的最佳实践 [关闭]
【发布时间】:2018-04-14 23:35:58
【问题描述】:
我现在正在考虑规划一个简单的多客户端设置,其中每个本地 .net 客户端实例都应该能够连接到 SQL 数据库。
但是,我关心的是架构。如果设置增加到几百个客户端连接,那么最好的架构是什么?
整个设置将保持在一个封闭的网络中。
A:在客户端和 SQL db 之间实现一个处理程序服务,以便以后更好地平衡负载?
B:直接将客户端连接到数据库?
非常期待阅读您的想法和建议。
【问题讨论】:
标签:
c#
sql
.net
linq
architecture
【解决方案1】:
我真的不愿意直接公开数据库,这可能会使任何数据库更改都需要更新客户端。我会在两者之间放置一个服务(REST、SOAP 等等),然后只公开您需要的操作和对象。然后,如果您发现需要对某些数据进行非规范化以提高性能,则无需更改服务定义和客户端。
这也意味着您可以在服务器上拥有逻辑(存储过程除外),如果您需要修复或改进某些内容,更新服务器总是比更新多个客户端更容易。缓存也会更好地工作,并有助于加载数据库。
您可能会发现自己需要从数据库以外的其他地方获取数据,例如,如果您需要良好的全文搜索,一种常见的方法是使用 Lucence 进行搜索并检索从关系数据库中找到的项目。也许您需要从其他一些服务或应用程序中获取额外的数据。同样,服务器可以完成所有这些操作,而无需客户端知道或关心。
您的数据库连接也少得多,它们应该是低延迟的,因为服务和数据库可以在同一个子网上。我不知道你的连接性会有多好,但是像 REST with HTTP 这样的东西可能会比原始数据库查询更宽容。
所以我会去客户端 -> 服务器 -> 数据库。