我有一些相关实体支持级联更新/删除(用户,用户角色,用户和角色的权限)。
应用服务器经常使用它,我需要实现对它的快速访问。为此,我将把它放到应用程序缓存中
问题是如何在对该数据执行级联操作时提供DB和缓存之间的同步?例如,如果我删除某个角色,我还需要删除所有角色权限,或者如果我删除用户,我需要删除其所有角色及其权限。
我看到了许多支持缓存中实际数据的方法,但我也看到了一些缺点。请告诉我什么是最好的解决方案。
SqlCacheDependency
机制接收通知。问题:服务器重负载怎么样?是否会延迟通知,并且DB / app服务器为“select SomeField from DataTable where id = @x
”提供许多确切的依赖关系会花费太多费用吗? CacheDependency
在缓存中级联失效。问题:逻辑加倍。 什么是好的解决方案? 谢谢!
答案 0 :(得分:0)
如何使用ORM?
我个人使用nHibernate,它附带caching并内置级联,所以你甚至不用担心(当然,还有很多其他功能可以让你的生活变得很多更轻松)。
否则,我绝对不会选择#1或#3选项,因为它们会将应用程序逻辑引入您的存储层 选项#2的巧妙实现 - 向数据库发送删除命令的应用程序不应该妨碍您的性能。