过滤存储在Couchbase中的数据

时间:2012-05-15 04:03:07

标签: php mysql nosql memcached couchbase

我目前有一个阅读量大的移动应用程序(90%读取,10%写入),通过php调用和单个MySQL数据库与单个Web服务器进行通信。 db存储用户配置文件信息以及用户发送和接收的消息。我们每秒都会向db添加一些消息。

我正在进行横向扩展,负载平衡等。因此,我们将在Web服务器集群前面有一个负载均衡器,然后我计划在MySQL集群之上放置一层Couchbase节点这样我们就可以快速访问用户个人资料信息和消息信息。我们将在Couchbase中记忆所有用户信息,但之后我想在Couchbase中记忆最新的24小时消息,因为这是大多数读取活动将要发生的时间范围。

对于存储在memcache中的消息数据,我希望能够根据消息的字段中的各种数据过滤消息,如国家,城市,时间等。我知道Couchbase使用KV方法,所以我无法查询使用像MySQL一样的where子句。

有办法做到这一点吗? Couchbase是否能够找到答案?或者我是否完全用Couchbase咆哮错误的树?

1 个答案:

答案 0 :(得分:0)

您正在寻找Couchbase Server 2.0及更高版本中的视图。如果放入Couchbase的数据是JSON,您可以使用这些视图对放入Couchbase群集的数据执行查询。

请注意,您可以使用将日期时间作为数组发布的视图(一种常用技术),甚至可以将其用于限制查看时间段,以便您可以将所有数据存储在Couchbase中而不需要把它放在另一个系统中。如果您还有其他原因,那么您可以将这些项目放入缓存后24小时过期。然后,如果您正在使用其中一个支持它的客户端,您将能够在缓存中获取并触摸文档,以延长到期时间(如果需要)。唯一的缺点是你需要提出一种在更新时使文件无效的方法。

一种方法是使用mysql中的触发器删除给定的键 - 另一种方法是从应用程序层中使其无效。

p.s。:完全披露:我是Couchbase人之一