COUCHBASE 5.5:查询和索引特性概述
Last updated
Was this helpful?
Last updated
Was this helpful?
JOIN是SQL中的基本操作之一。因此,N1QL实现了第一个版本的INNER JOIN(内部连接)和左外部连接(LEFT OUTER JOIN)。
此外,N1QL还添加了NEST和UNNEST操作来处理数组,这是JSON中常用的数据结构。到目前为止,联接表达式仅限于 child-to-parent 或 parent-to-child 文档。
在Couchbase 5.5中,可以对任何复杂表达式进行连接,就像SQL joins 一样。并且还添加了对RIGHT OUTER joins(右外部连接)的支持。
到目前为止,连接执行使用了名为块嵌套循环连接(Block Nested Loop Join)的方法。当外部表中的文档数量有限时,该算法可以很好地工作。当文档的数量很高时(例如:reporting queries(报告查询)),查询延迟可能会很高。
在Couchbase 5.5中,我们引入散列连接(Hash join),以改进使用大量文档的连接查询的性能。关于“ANSI join in N1QL”章节中会描述关于join语言和性能改进的细节。
改进查询性能的一种常见方法是创建涵盖查询(covers the query)的索引。对于需要分组(group)和聚合(aggregation)的查询,即使查询被索引覆盖,我们也将获取所有合格的文档键(document keys)、查询服务的索引键(index keys),然后对该数据进行分组(group)和聚合(aggregation)。这个过程多次复制数据,从索引器,通过网络,到索引器客户端,再到查询服务。如果扫描结果很大,我们最终会使用 backfill 将结果写入文件并在以后读取。
在为查询选择索引之后,Couchbase 5.5自动评估索引器评估分组和聚合的可能性。如果可行,扫描请求将包括对索引器中的分组和聚合的附加请求。Couchbase 5.5的索引服务现在可以执行运行时分组和聚合。这意味着,索引器可以扫描、分组和聚合索引器中的数据,消除多个数据复制操作,并提高这些查询的延迟和吞吐量。
”索引分组和聚合”章节中详细描述了这一过程。
在Couchbase中,总是使用文档键的一致散列(consistent hash)值将数据分区到存储在多个节点中的存储桶中。
但是,对于索引器(indexer),您必须使用CREATE INDEX
上的WHERE
子句对它们进行手动分区。这种手动分区管理起来很麻烦,需要仔细编写查询以匹配WHERE子句中的一个谓词。
在Couchbase 5.5中,可以使用散列策略对索引进行分区。散列分区索引(hash partitioned index)将通过在一个大型文档集合上轻松创建多个索引来增加索引容量。对于查询处理,对于具有哈希键上相等谓词的简单查询,您可以在这些多个索引上获得工作负载的统一分布。对于包括我们上面讨论的分组和聚合在内的复杂查询,扫描、部分聚合是并行完成的,从而提高查询延迟。
“索引分区”章节将详细描述此特性。
N1QL审查(N1QL Auditing)帮助客户通过审查系统上执行的每个N1QL语句来实现像HIPPA、GDPR这样的法规遵从性。您可以将审查配置为审查特定的或所有的用户 和/或(and/or) 角色、特定的或所有的语句。“N1QL审查”章节将详细解释该特性及其用例。
Couchbase 5.5支持对TLS(传输层安全性)中使用的公钥证书使用证书颁发机构签名的证书。“对X.509的N1QL支持”章节描述了N1QL的此特性。
ALTER INDEX可以帮助您将索引从一个节点移动到另一个节点,改变索引的副本数量,从而提高索引的可管理性。有关详细信息,请参阅ALTER INDEX文档。
索引扫描效率高、速度快。当索引扫描请求返回大量合格的键时,查询服务可能无法以相同的速度使用。为了避免索引器中积压的这些索引扫描结果,查询服务(实际上是查询服务中的索引客户端)获取其余结果并将其写入临时文件。一旦查询完成,这些backfill文件将被清除。这些文件Linux的位置总是在/ tmp,在Windows上是TEMPDIR。在Couchbase 5.5中,可以更改创建backfill文件的目录的位置,并设置可以使用的最大存储的量。有关详细信息,请参阅查询Temp磁盘路径文档。
Couchbase 5.0增加了visual explain,通过查看每个查询操作符上的概要统计信息,可以轻松理解查询计划和调试性能问题。
此外,您现在可以通过为每次运行设置不同的查询特定的参数、超时、分析参数来运行准备语句。
最后,可以很容易将查询工作台的结果复制到Excel或任何其他需要表格输出的工具。下图显示了表格输出,然后单击查询结果旁边的复制图标。
简单地粘贴到Excel或谷歌表中。它会像魔术一样复制:
[What’s new in Couchbase 5.5?
](https://developer.couchbase.com/documentation/server/5.5/introduction/whats-new.html)
下面的图片应该说明了一切!