首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Couchbase -我什么时候应该使用N1QL vs视图?

Couchbase -我什么时候应该使用N1QL vs视图?
EN

Stack Overflow用户
提问于 2015-02-13 13:23:33
回答 3查看 2.6K关注 0票数 10

我在学习Couchbase,现在是3.x版

我的疑问是,何时应该使用N1QL查询和视图查询?

而且,它们之间有性能差异吗?

注:我有一个情况:

为我的旅行应用程序提供两种文档类型的Bucket路由City

路由文档保存关于旅行路径的信息以及其中一部分的 city it数组,然后另一个文档保存城市的信息(每个城市都有自己的文档)。示例:

代码语言:javascript
运行
复制
//Bucket : "Traveling App"

{
  "type" : "route"
  "name" : "The Great Adventure",
  "cities" : ["234", "h4345", "h42da"]
}

{
  "type" : "city",
  "name" : "Little Town",
  "UID"  : "234"
}

当我查询某个旅行路线时,应该执行N1QL查询还是View查询?

因为我必须首先打开路由文档,所以获取城市数组,而不是获取每个City文档。

我认为这种架构是最好的,因为有些路线可以有很少的城市,而其他的可以有很多城市。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-16 11:29:05

对于您的数据,N1QL看起来很有希望。尽管如此,正如另一张海报所指出的,在开发人员预览中,它是值得探索的。您可以使用自己嵌套traveling_app以获得所有城市文档“嵌套”的每条路径:

在键r.name上从traveling_app r NEST traveling_app c中选择r.cities,c;

要获得特定路线的城市名称,可以使用该路线的城市作为密钥加入traveling_app:

选择c.name作为city_name,从traveling_app r加入traveling_app c ON KEYS r.cities,其中r.name = "The Great“;

无论一条路线有多少个城市,这些查询都将运行相同。

票数 5
EN

Stack Overflow用户

发布于 2016-01-27 10:22:59

例句:如果你想找出一个城市所有可能的路线,你需要一个视图,这个视图在你查询之前总是被预先计算并准备好。

如果您通过索引进行相同的查询,它将导致更长的响应时间--在这里可以找到更多的文档:http://developer.couchbase.com/documentation/server/4.0/architecture/gsi-versus-views.html

票数 1
EN

Stack Overflow用户

发布于 2015-02-13 23:06:05

N1QL提供了获得正确路由所需的所有功能。N1QL可以取消数组的嵌套,过滤要查找的路由,然后加入这两种类型的文档。所以,N1QL是该走的路。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28500633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档