AFAIK,Memcached 不支持与数据库同步(至少是 SQL Server 和 Oracle)。我们计划将 Memcached(免费)与我们的 OLTP 数据库结合使用。
在某些业务流程中,我们进行一些繁重的验证,这需要从数据库中获取大量数据,我们无法保留这些数据的静态副本,因为我们不知道数据是否已被修改,因此我们每次都获取数据,这会减慢流程。
一种可能的解决方案是
- 在数据库上编写触发器,以在记录更改时创建/更新前缀后缀(表 PK1-PK2-PK3 列)文件
- 使用以下命令监视文件的更改
FileSystemWatcher
并使密钥(table-PK1-PK2-PK3-column)过期以获取更新的数据
问题:大约有 100,000 个用户在 10 小时内使用任意数据组合。所以我们最终会得到很多文件,例如categ1-subcateg5-subcateg-78-data100、categ1-subcateg5-subcateg-78-data250、categ2-subcateg5-subcateg-78-data100、categ1-subcateg5-subcateg-33-data100 等。
我预计至少有 500 万个文件。现在它看起来是一个可悲的解决方案:(
其他可能性是
- 从触发器中异步调用 Web 服务并传递密钥
即将过期
- 从触发器调用一个exe而不等待它完成然后这个
exe 会使密钥过期。 (我在 SQL Server 上使用 xp_cmdsell 调用 exe 的这种方法取得了一些成功,从 oracle 的触发器调用 exe 看起来有点困难)
听起来还是很可悲,不是吗?
有什么明智的建议请
(对我而言)不清楚是否强制使用 Memcached。我个人会避免它并使用它SQL依赖关系 https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldependency(v=vs.110).aspx and Oracle依赖关系 http://docs.oracle.com/cd/B19306_01/win.102/b14307/OracleDependencyClass.htm。两者都允许传递 db 命令,并在命令返回的数据发生更改时收到通知。
如果 Memcached 是必需的,您仍然可以使用这两个类来触发失效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)