couchbase介绍与实践(二)

在上一篇文章里 couchbase介绍与实践(一)中,介绍了couchbase与其他NOSQL的比较以及安装方式,接下来说下couchbase里比较重要的概念,索引。

索引

索引在couchbase中十分重要,不像关系型数据库那样,没有索引最多就是查询慢点,在couchbase里不建立索引,连查询操作都做不了。索引主要分成两类,分别是全局二级索引和本地索引。

全局二级索引(Global Secondary Index)

全局二级索引多用于庞大的网络节点,快速执行交互式的处理。

本地索引(Local Index)

本地索引多用于本节点上复杂的逻辑和预处理程序,速度较快,但是在集群有多节点的情况下速度会下降。

一开始我也是一头雾水,因为关系型数据库上是没有这样的概念的,但是结合这张图以及描述,我的理解是这样的:本地索引相当于把索引信息放在每一个节点,当需要查询时,会将每个节点上获取该节点上的索引去查询,最后再将结果汇总在一起。而全局二级索引相当于把索引信息放在一个节点,每次查询只用去查询该节点即可。因此在网络节点多的时候全局二级索引更快。

创建索引

CREATE INDEX index_name ON named_keyspace_ref ( expression1 [ , expression2 ] * )
    WHERE filter_expressions
    [ USING GSI | VIEW ]
    [ WITH { "nodes": [ "node_name" ], "defer_build":true|false , "num_replica": num_replica_num } ];
复制代码

index_name 索引名称 命名规则是A-Z a-z 0-9 # _
named_keyspace_ref 桶的名称 可以定义namespace加keyspace的组合

namespace-name : keyspace-name
复制代码

expression1, expression2, ... , expressionX 用到的参数

USING GSI | VIEW 索引类型 默认是GSI

WITH "nodes":["node_name"] 指定索引保存在哪个节点,若不指定则随机存放

"defer_build":true | false 延迟构建

"num_replica": num_replica_num 索引副本数

例子

CREATE INDEX abv_idx ON `beer-sample`(abv);
复制代码

对beer-sample桶上的abv字段建立了一个叫abv_idx的索引,接下来就可以进行查询

SELECT min(abv), max(abv) FROM `beer-sample`;
复制代码

转载于:https://juejin.im/post/5ad74b76f265da5048287495

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值