CouchBase服务器用例:不可能使用新数据的网格?

CouchBase服务器用例:不可能使用新数据的网格?,couchbase,couchbase-view,nosql,Couchbase,Couchbase View,Nosql,我们面临着一个使用CouchBase服务器似乎“不可能”解决的常见用例。。。。 基本上,在我们的web应用程序中,我们需要实现显示新数据的网格(提供所有最新/更新的文档!) 例如:用户在一个专门的编辑页面中创建一个新的“订单”,然后转到带有网格的“所有订单”页面,希望看到刚刚创建的记录 我们如何才能做到这一点 由于网格绑定到视图,其索引可能已过时 另外,使用“stale=false”,新索引不能包含最后的数据,因为它可能仍在“磁盘写入”队列中 由于性能问题,我们无法使用“PersistTo.X

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

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

我们如何才能做到这一点

  • 由于网格绑定到视图,其索引可能已过时
  • 另外,使用“stale=false”,新索引不能包含最后的数据,因为它可能仍在“磁盘写入”队列中
  • 由于性能问题,我们无法使用“PersistTo.XXX”强制对存储进行磁盘写入 (该体系结构是多租户的,我们必须每分钟处理数百次写入操作。 实际上,我们的couchbase群集每秒执行2500次内存缓存操作,但每秒执行3次磁盘写入操作!!!)
有溶液吗?对于这种需求,NoSql DB是一个好的出路吗? (我们希望避免混合解决方案RDBMS+NoSql。。。 也许是对网格新鲜度的妥协,或者是一个复杂的“自制脏文件列表”机制?)


提前感谢您……

首先,如果您能提供更多信息,以便我们了解您的磁盘写入量如此低的原因,那就太好了。第二,您决定使用Couchbase是因为您想要还是因为它适合您的数据和访问模式?RDBMS解决方案对您来说不是更好吗

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

这种结构意味着,当您想要为一个用户显示所有订单时,您只需对文档上保存的所有ID执行简单的多重获取,请注意,您必须在应用程序层根据您想要的属性对它们进行排序,但这很简单


祝你好运

如果一秒钟只有3次磁盘写入,则可能出现严重错误。您使用的机器规格是什么?您存储了多少数据,有多少数据保存在ram中?