我在学习Couchbase,现在是3.x版
我的疑问是,何时应该使用N1QL查询和视图查询?
而且,它们之间有性能差异吗?
注:我有一个情况:
为我的旅行应用程序提供两种文档类型的Bucket:路由和City
路由文档保存关于旅行路径的信息以及其中一部分的 city it数组,然后另一个文档保存城市的信息(每个城市都有自己的文档)。示例:
//Bucket : "Traveling App"
{
"type" : "route"
"name" : "The Great Adventure",
"cities" : ["234", "h4345", "h42da"]
}
{
"type" : "city",
"name" : "Little Town",
"UID" : "234"
}
当我查询某个旅行路线时,应该执行N1QL查询还是View查询?
因为我必须首先打开路由文档,所以获取城市数组,而不是获取每个City文档。
我认为这种架构是最好的,因为有些路线可以有很少的城市,而其他的可以有很多城市。
发布于 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“;
无论一条路线有多少个城市,这些查询都将运行相同。
发布于 2016-01-27 10:22:59
例句:如果你想找出一个城市所有可能的路线,你需要一个视图,这个视图在你查询之前总是被预先计算并准备好。
如果您通过索引进行相同的查询,它将导致更长的响应时间--在这里可以找到更多的文档:http://developer.couchbase.com/documentation/server/4.0/architecture/gsi-versus-views.html。
发布于 2015-02-13 23:06:05
N1QL提供了获得正确路由所需的所有功能。N1QL可以取消数组的嵌套,过滤要查找的路由,然后加入这两种类型的文档。所以,N1QL是该走的路。
https://stackoverflow.com/questions/28500633
复制相似问题