【问题标题】:filtering data stored in Couchbase过滤存储在 Couchbase 中的数据
【发布时间】:2012-05-22 13:36:38
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: php mysql nosql memcached couchbase


    【解决方案1】:

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

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

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

    p.s.:全面披露:我是 Couchbase 的一员

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-06
      • 2017-07-01
      • 1970-01-01
      • 2011-01-25
      • 2016-07-02
      相关资源
      最近更新 更多