Couchbase 中的视图是什么
what is view in couchbase
我试图了解 couchbase 视图的确切用途,我已经阅读了文档中的一些资料,但 'view' 概念并不能很好地解决我的问题。
Couchbase 中的视图是否类似于 RDBMS 中的视图?
https://docs.couchbase.com/server/6.0/learn/views/views-basics.html
A view performs the following on the Couchbase unstructured (or
semi-structured) data:
Extract specific fields and information from the data files.
Produce a view index of the selected information.
view 和 index 如何在这里工作,似乎有单独的 index for view。那么如果文档更新,两个索引都会更新吗?
https://docs.couchbase.com/server/6.0/learn/views/views-store-data.html
In addition, the indexing of data is also affected by the view system
and the settings used when the view is accessed.
有帮助post:
Views in Couchbase
您可以将 Couchbase Map/Reduce 视图视为类似于物化视图,是的。除了您使用 JavaScript 函数(映射函数和可选的 reduce 函数)创建它们之外。
例如:
function(doc, meta)
{
emit(doc.name, [doc.city]);
}
这将查看每个文档,并保存每个文档的视图,其中仅包含城市,并且具有名称键。
例如,假设您有两个文档;
[
key 1 {
"name" : "matt",
"city" : "new york",
"salary" : "100",
"bio" : "lorem ipsum dolor ... "
},
key 2 {
"name" : "emma",
"city" : "columbus",
"salary" : "120",
"bio" : "foo bar baz ... "
}
]
然后,当您 'query' 此视图时,您将获得:
[
key "matt" {
"city" : "new york"
},
key "emma" {
"city" : "columbus"
}
]
这是一张非常简单的地图。您还可以使用像 _count、_sum、_stats 或您自己自定义的 reduce 函数。
此视图的结果与每个节点上的数据一起存储(并在数据更新时更新)。但是,您可能应该远离 Couchbase 视图,因为:
- 视图与每个节点上的数据一起存储。所以在读取的时候,必须从每个节点拉取数据,合并,再拉取。 “Scatter/gather”
- JavaScript map/reduce 并未提供您可能需要的所有查询功能。例如,你不能做 'joins' 这样的事情。
- Couchbase 有 SQL++ (aka N1QL),它更简洁、声明性更强,并使用全局索引(而不是 scatter/gather),因此它可能会更快并减少重新平衡等过程中的压力
- 自 Couchbase Server 7.0 起已弃用(并且在 Couchbase Capella 中根本不可用)
我试图了解 couchbase 视图的确切用途,我已经阅读了文档中的一些资料,但 'view' 概念并不能很好地解决我的问题。 Couchbase 中的视图是否类似于 RDBMS 中的视图?
https://docs.couchbase.com/server/6.0/learn/views/views-basics.html
A view performs the following on the Couchbase unstructured (or semi-structured) data:
Extract specific fields and information from the data files.
Produce a view index of the selected information.
view 和 index 如何在这里工作,似乎有单独的 index for view。那么如果文档更新,两个索引都会更新吗?
https://docs.couchbase.com/server/6.0/learn/views/views-store-data.html
In addition, the indexing of data is also affected by the view system and the settings used when the view is accessed.
有帮助post: Views in Couchbase
您可以将 Couchbase Map/Reduce 视图视为类似于物化视图,是的。除了您使用 JavaScript 函数(映射函数和可选的 reduce 函数)创建它们之外。
例如:
function(doc, meta)
{
emit(doc.name, [doc.city]);
}
这将查看每个文档,并保存每个文档的视图,其中仅包含城市,并且具有名称键。
例如,假设您有两个文档;
[
key 1 {
"name" : "matt",
"city" : "new york",
"salary" : "100",
"bio" : "lorem ipsum dolor ... "
},
key 2 {
"name" : "emma",
"city" : "columbus",
"salary" : "120",
"bio" : "foo bar baz ... "
}
]
然后,当您 'query' 此视图时,您将获得:
[
key "matt" {
"city" : "new york"
},
key "emma" {
"city" : "columbus"
}
]
这是一张非常简单的地图。您还可以使用像 _count、_sum、_stats 或您自己自定义的 reduce 函数。
此视图的结果与每个节点上的数据一起存储(并在数据更新时更新)。但是,您可能应该远离 Couchbase 视图,因为:
- 视图与每个节点上的数据一起存储。所以在读取的时候,必须从每个节点拉取数据,合并,再拉取。 “Scatter/gather”
- JavaScript map/reduce 并未提供您可能需要的所有查询功能。例如,你不能做 'joins' 这样的事情。
- Couchbase 有 SQL++ (aka N1QL),它更简洁、声明性更强,并使用全局索引(而不是 scatter/gather),因此它可能会更快并减少重新平衡等过程中的压力
- 自 Couchbase Server 7.0 起已弃用(并且在 Couchbase Capella 中根本不可用)