使用/多个数据库/ Sql Server进行数据库相关缓存

时间:2010-10-06 21:40:21

标签: .net asp.net sql-server database caching

我正在一个环境中,单个Web应用程序(在Web场中运行)根据用户选择动态连接到不同的SQL Server数据库(可能在不同的服务器上)(这部分是不可协商的,除非您可以给我100,000美元和/或某种时间来改变设备。

我想缓存应用程序中数据库中的一些常用数据,例如“settings”,并且正在寻找与SqlCacheDependency类或相关数据库缓存相关的最佳实践解决方案(不反对SQL通知或轮询的自定义实现;通知优先于轮询)。

到目前为止,我正在考虑使用一组SqlCacheDependency对象(每个数据库一个),可以通过连接字符串名称或相关键引用。因此,当连接更改为不同的数据库时,可以通过< databasekey> +< datakey>的键来请求/填充缓存。并使用适当的SqlCacheDependency对象(可能由缓存管理包装器处理)。

这方面的任何想法,建议或经验?

或者只是更好地接受命中并始终进入数据库?

2 个答案:

答案 0 :(得分:0)

您可以在数据访问代码中使用带有二级缓存的nhibernate或hibernate。对于缓存部分,您可以使用memcached或velocity(appfabric)。

答案 1 :(得分:0)

在我看来,您不应该在Web应用程序中存储来自不同数据库的所有设置。 更好的方法是仅存储当前正在使用的数据库的设置。

您告诉过,在某些时候,用户选择数据库并创建连接,打开它,读取数据等等。 这是仅为此数据库读取设置并在应用程序中使用它们的好地方。 同时,您可以调整SqlCacheDependency,以便在当前数据库中的设置发生更改时收到通知。

当用户选择另一个数据库时,您只需删除当前设置并从新选择的数据库中加载另一个数据库。

在我看来,这更容易实现。