Routing 如何使用CouchDB作为主数据库组织路由?

Routing 如何使用CouchDB作为主数据库组织路由?,routing,couchdb,ibm-cloud,cloudant,Routing,Couchdb,Ibm Cloud,Cloudant,你能告诉我,如何使用CouchDB作为主数据库来组织路由吗 我有大约10个数据库,具有不同的内容类型,例如公司,工作,主题和博客 数据库之间的架构或多或少相同。所有文档包括以下字段: { url: "actual-path", redirects: [ "old-path", "another-old-path" ] } 来自客户机的每个请求,我都通过请求的url查询每个数据库。一旦我得到一份文件,我就要做200或301,否则就是404 这种方法的问题是,每次加载页

你能告诉我,如何使用CouchDB作为主数据库来组织路由吗

我有大约10个数据库,具有不同的内容类型,例如
公司
工作
主题
博客

数据库之间的架构或多或少相同。所有文档包括以下字段:

{
  url: "actual-path",
  redirects: [
    "old-path",
    "another-old-path"
  ]
}
来自客户机的每个请求,我都通过请求的url查询每个数据库。一旦我得到一份文件,我就要做200或301,否则就是404

这种方法的问题是,每次加载页面时,我至少需要向数据库发出10个请求。有了这些服务,我需要支付一个门槛——这是非常昂贵的

有没有更好的组织方式?我有两种想法:

  • 制作一个中间服务器,将所有重定向索引到Redis的某处

  • Replicate只是重定向到CouchDB中的分离表中,并仅查询该表。我不确定这是否可能


  • 为什么不将所有内容放在同一个数据库中,并使用某个键(例如:type、collection、table)将它们分开呢?这将把查询减少到1,因为我们对不同的数据库有不同的权限。您的任一解决方案都可以工作。我喜欢在Redis中保留这些重定向的快速查找版本的建议,特别是因为您在每个请求中都使用这些信息。您还可以让一个进程订阅ChangesAPI,以保持Redis中的信息更新。为什么不将所有内容放在同一个数据库中,并使用特定的键(例如:类型、集合、表)将它们分开?这将把查询减少到1,因为我们对不同的数据库有不同的权限。您的任一解决方案都可以工作。我喜欢在Redis中保留这些重定向的快速查找版本的建议,特别是因为您在每个请求中都使用这些信息。您还可以让一个进程订阅ChangesAPI,以保持Redis中的信息更新。