我有一些相关的实体支持级联修正方面/缺失(用户,用户角色,用户和角色的权限)。
应用服务器经常使用它,我需要实现快速访问。为此,我将它放到应用程序缓存中。
问题是如何在数据执行级联操作时提供数据库和高速缓存之间的同步?例如,如果我放弃某个角色,我还需要删除所有角色权限,或者如果我放弃用户,则需要删除其所有角色和权限。
我看到了许多方法来支持缓存中的实际数据,但我也看到了一些缺点。请告诉我什么是最佳解决方案。缓存相关数据
- 所有级联操作都是在数据库中使用触发器进行的。该应用程序通过
SqlCacheDependency
机制接收通知。问题:服务器负载过重怎么办?数据库/应用程序服务器会提供很多精确的依赖关系,例如“select SomeField from DataTable where id = @x
”,会延迟通知吗? - 所有级联操作都是在应用程序的业务层进行的。每个数据库更新/删除操作之后都是高速缓存失效操作。问题:增加了一倍逻辑和高网络流量(许多更新,而不是一个)
- 在DB级联操作,在高速缓存中的级联废票使用
CacheDependency
。问题是:逻辑加倍。
有什么好的解决办法? 谢谢!
> 2)所有级联操作都在应用程序的业务层作出>>我的意思是数据接取层 – Jim
确实实体框架提供了这样的功能,因此它会自动做级联的变化呢? – sll