首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缓存相关数据

问缓存相关数据
EN

Stack Overflow用户
提问于 2011-08-14 20:10:01
回答 1查看 135关注 0票数 0

我有一些支持级联更新/删除(用户、用户角色、用户权限和角色权限)的相关实体。

应用服务器经常使用它,我需要实现对它的快速访问。为此,我将把它放到应用程序缓存中。

问题是在对数据执行级联操作时,如何在DB和缓存之间提供同步?例如,如果我删除某个角色,我还需要删除所有的角色权限,或者如果我删除一个用户,我需要删除它的所有角色和他们的权限。

我看到了许多在缓存中支持实际数据的方法,但我也看到了一些缺点。请告诉我什么是最好的解决方案。

  1. 所有级联操作都是在数据库中使用触发器进行的。应用程序通过SqlCacheDependency机制接收通知。问题:当服务器负载过重时,情况如何?通知是否会被延迟,对于DB/app服务器来说,提供"select SomeField from DataTable where id = @x“这样的精确依赖会不会花费太大?
  2. 所有级联操作都是在应用程序的业务层进行的。每次数据库更新/删除操作之后都会执行缓存失效操作。问题:逻辑加倍,网络流量高(很多更新而不是一个)
  3. 数据库中的级联操作,使用CacheDependency实现缓存中的级联失效。问题:逻辑加倍。

什么是好的解决办法?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2011-08-14 20:51:35

用ORM怎么样?

就我个人而言,我使用nHibernate,它附带了缓存和级联内置,所以您甚至不必担心这一点(当然,还有许多其他特性可以使您的生活更加轻松)。

否则,我肯定不会使用选项1或3,因为它们将应用程序逻辑引入存储层。

选项2的巧妙实现--向DB发送删除命令的应用程序--不应妨碍您的性能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7059421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档