1

我目前有一个读取繁重的移动应用程序(90% 读取,10% 写入),它通过 php 调用和单个 MySQL db 与单个 Web 服务器进行通信。db 存储用户配置文件信息和用户发送和接收的消息。我们每秒收到几条消息添加到数据库中。

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

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

有没有办法做到这一点?Couchbase Views 是答案吗?还是我完全用 Couchbase 找错了树?

4

1 回答 1

0

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

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

一种方法是在 mysql 中使用触发器来删除给定的密钥——另一种方法是从应用程序层使其无效。

ps:完全披露:我是 Couchbase 的一员

于 2012-05-18T15:39:58.257 回答