我正在设计一个针对“ AlwaysOn可用性组” 数据库的API(WCF nettcp内联网Web服务,而不是公共Web api)。 AlwaysOn设置为同步提交模式。我建议我应该出于性能目的使用辅助副本。有一种直接定位只读 db的方法(客户端的连接字符串必须将应用程序意图指定为“只读”。)以从主副本中卸载工作负载。所以我在想...真的有一种设计模式可以处理这种情况吗?
我们正在谈论理论上一个数据库的两个连接字符串( read-write 和 read-only )。一个简单的规则是:API应该以targtet为主写,以次要读,但是生活并不那么简单。
例如:如果客户端调用DeleteItem
并在GetAllItems
之后立即调用,即使在同步模式下,由于只读 db没有足够的时间来更新(有时尚无法读取数据,我们正在谈论的是毫秒。我对其进行了测试)。因为API是决定使用哪个连接字符串的API,所以它将对DeleteItem
操作使用读写,然后对{{1 }}操作。
所以我的问题是我应该如何处理活动的辅助数据库?
我应该让API决定是否使用只读db减轻工作量吗?
API的客户环境是否应该有明确决定的选项?就像“嗨,API,我想要所有物品,但使用只读连接字符串!” ?
是否有设计模式,如何处理这种情况?
感谢所有帮助