1

我们面临着一个常见的用例,这似乎“不可能”用 CouchBase 服务器解决......基本上在我们的网络应用程序中,我们需要实现显示 FRESH 数据的网格(所有最新/更新的文档都存在!)

EX:用户在专门的编辑页面中创建一个新的“订单”,然后进入带有网格的“所有订单”页面,并希望看到刚刚创建的记录。

我们怎样才能做到这一点?

  • 由于网格绑定到 VIEW,因此其索引可能已过时。
  • 同样使用“stale=false”,新索引不能包含最后的数据,因为它可能仍在“磁盘写入”队列中
  • 由于性能问题,我们不能使用“PersistTo.XXX”强制磁盘写入 Store(架构是多租户的,我们必须处理数百个写入操作/分钟。实际上我们的 couchbase 集群执行 ~2500 MemCached ops/秒但〜3磁盘写入操作/秒!!!)

有什么解决办法吗?对于这种需求,NoSql DB 是不是一个不错的出路?(我们想避免混合解决方案 RDBMS+NoSql...也许是对网格新鲜度的妥协或复杂的“自制脏文档列表”机制?)

先感谢您....

4

1 回答 1

1

首先,如果您能提供更多信息会很好,这样我们就可以看看为什么您的磁盘写入如此之低。其次,您决定使用 Couchbase 是因为您想要还是因为它适合您的数据和访问模式?RDBMS 解决方案不是更适合您吗?

关于您对用户创建新订单的解释,我个人不会使用视图来捕获此数据,在用户文档上我将有两个属性,已处理订单和待处理订单。当用户向他们的购物篮添加一些东西时,您可以将产品的 id 添加到待处理订单数组中,当交易完成后,可以将其移动到已处理的订单中。

这种结构意味着当您想要显示用户的所有订单时,您只需对文档中保存的所有 id 执行简单的多获取操作,请注意,您必须在应用程序层根据您的任何属性对它们进行排序想要,但那将是微不足道的!

祝你好运!

于 2014-04-08T19:34:34.170 回答