gpt4 book ai didi

couchdb - couchdb View 会复制吗?

转载 作者:行者123 更新时间:2023-12-02 16:40:03 25 4
gpt4 key购买 nike

我指的不是存储在 _design 文档中的 View 源(这些文档是复制的,因为它们只是文档)。我的意思是 View 结果(计算出的 btree)也复制,或者只是复制常规文档(这就是我现在的理解)。

有问题的场景是:
流量激增,我想启动一个临时服务器,并将数据集的一部分复制到该新服务器上。这些(要复制的)文档的 View 已经在旧服务器上计算过,因此不需要在新服务器上重新计算...所以我希望这些旧的计算结果与文档的部分一起传输。

另一种场景是使用后端集群来计算复杂的 View ,然后将这些结果复制到一组实际受到用户请求影响的前端服务器上。

最佳答案

正如蒂尔所说,结果无法复制。更详细地说,您实际上不希望它们被复制。您应该记住的一般 CouchDB 范例是每个安装都被视为一个独立的节点 - 这就是 _id、_rev 和序列号如此重要的原因。这允许每个节点在不考虑任何其他节点的情况下工作:如果其中一个节点出现故障,所有其他节点将继续运行而无需担心。

当然,这引入了您可能不习惯的有关一致性的新注意事项。例如,如果您有多个 Web 服务器,每个服务器上都有自己的 CouchDB 节点,并且这些节点在它们之间运行复制以使每个实例保持最新状态,那么节点之间就会存在滞后。下面是一个示例流程:

  1. 用户将更改写入网络服务器 A。
  2. 用户向 Web 服务器 B 发出读取请求,因为您的负载均衡器认为 B 是更好的选择。用户得到他们的结果。
  3. Web 服务器 A 通过复制将更新后的文档发送到 Web 服务器 B。

正如您所看到的,用户获得了文档的先前版本,因为 Web 服务器 B 还不知道更改。这可以被击败...

  • 坚持 session ,以便所有读取和写入都转到同一服务器。这可能最终会破坏您的负载均衡器。
  • 将 CouchDB 节点从 Web 服务器移至它们自己的盒子上。如果您同意这一点,那么您可能想看看 couchdb-lounge 项目 ( http://tilgovi.github.com/couchdb-lounge/ )。
  • 您的用户真的关心他们是否得到过时的结果吗?在您的用例中,您的用户可能不会注意到他们的结果是否没有反射(reflect)他们刚刚所做的更改。确保您真正从这项工作中获得显着的值(value)。

干杯。

关于couchdb - couchdb View 会复制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3091806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com