我在问这个问题,在ASP.NET ...Memcached的社交网络应用
http://forums.asp.net/t/1584731.aspx
...但想在这里问它。我敢肯定,之前让我想通为什么推倒重来这个问题已经解决了......
短篇小说,我建立与社交功能使用的memcached作为数据库缓存层的Web应用程序。为了简化问题,假设我们有一个基本的设置,在这里我们有一个个人表和一个friendConnection表,其中个人包含个人信息,而friendConnection有两个外键,如果他们之间有好友相互联系,使用表或SQL,但问题是相似的)
我的缓存过期的逻辑很简单:只要放一个表时,过期的所有相关的,目前存在于缓存表的SELECT语句。然而,这种逻辑在性能方面是非常糟糕的,因为人们不断地交友,缓存永远不会持续超过几秒钟。
一个更复杂的逻辑可能会使所有包含当前引用好友的选择语句过期,但是这将需要获得与friendConnection表相关的所有选择语句并检查它们是否具有相关性,这也会成为一个性能负担。
首先,我的问题是否有意义?
其次,人们通常如何解决这个问题?
这是一个有趣的想法。我想我看到的问题是,没有将对象放入memcached的通用模式。例如,在你的解决方案中,我没有把序列化的对象放入缓存中,我正在抛出这个可能用户ID的自定义附加列表(另外,你如何使用这种技术执行删除操作?)。但在其他情况下,我可能只是把基本对象。对于每种类型的对象,逻辑都是不同的。那有意义吗? – 2010-08-01 19:52:27
回复:您的回复:评论:我相信我明白你在说什么,这是非常重要的:对于非关系型数据存储“结构”数据来支持你想运行的查询,而不是精益组织物体。感谢你的突破。出于好奇,你将如何使用SQL完成最初的任务?或者这就是为什么人们回避社交类型应用程序的关系数据存储? – 2010-08-02 00:24:14