当前位置:网站首页>来了!GaussDB(for Cassandra)新特性亮相
来了!GaussDB(for Cassandra)新特性亮相
2022-07-07 16:38:00 【华为云】
今天,华为云GaussDB(for Cassandra)携Lucene引擎全新解决方案来啦!
当前,互联网、大数据飞速发展,数据量呈爆发式增长,在高并发、高可用、高扩展的业务需求推动下,NoSQL数据库成为了越来越多业务场景的刚需。但在查询方面,传统的NoSQL却有一定的局限性,严格来说,像开源MongoDB、Cassandra、Hbase等都不具备海量数据的多维查询、文本检索、统计分析等能力。多数企业仍然在寻求一套更完美的NoSQL解决方案。
华为云原生多模数据库GaussDB NoSQL拥有强大的生态体系,支持键值、宽表、文档、时序四种引擎接口。其中,宽表引擎接口GaussDB(for Cassandra)现已发布Lucene二级索引功能,既具备NoSQL的优势,又能支持多种复杂查询场景,全面提升用户在海量数据场景下的查询体验,凭实力宠粉!相信大家一定有很多疑问,GaussDB(for Cassandra)是什么?二级索引如何使用?Lucene二级索引又有哪些区别?别着急,接下来让我们一一解读。

什么是GaussDB(for Cassandra)?
GaussDB(for Cassandra)是一款华为自研、采用计算存储分离架构的分布式云数据库,在高性能、高可用、高可靠、高安全、可弹性扩缩容的基础上,提供了一键部署、备份恢复、监控告警等服务能力;并高度兼容开源Cassandra接口,提供高读写性能。当前已经广泛应用于IoT、气象、互联网、游戏等诸多领域。
什么是二级索引?
我们先来了解下索引的概念。索引是为了加快数据检索速度而创建的一种存储结构,是一种以空间换时间的设计思想。作用可以理解为书的目录,通过目录可快速定位到所需要的内容。
在Cassandra中,Primary Key就是索引(也被称为一级索引),在查询的时候,根据Primary Key可以直接检索到对应的记录。而二级索引又称辅助索引,是为了帮助定位到一级索引,然后再根据一级索引找到对应记录。我们平时使用CREATE INDEX语句建立的就是二级索引。
当前Cassandra二级索引的痛点有哪些?
原生Cassandra中二级索引的实现其实是创建了一张隐式的表,该表的Primary Key是创建索引的列,值为对应的Primary Key,实现相对简单,因此不可避免地带来了一些约束条件:
1.第一主键只能用“=”查询;
2.第二主键可以使用“=、>、<、>=、<=”;
3.索引列只支持“=”查询;
4.删除、更新太过频繁的列不适合建立索引;
5.High-cardinality列不适合做索引;
基于以上约束,Cassandra二级索引能提供的查询功能非常有限。
Why Lucene?
Lucene是当下最火的开源全文检索引擎工具,具有以下特点:
1.稳定、索引性能高;
2.是高效、准确、高性能的搜索算法;
3.具备丰富的查询类型:支持短语查询、通配符查询、近似查询、范围查询等;
4.有强大的开源社区支持,可维护性好;
因此,用集成Lucene引擎来补充Cassandra查询能力的弱点是最佳选择,毕竟谁又会拒绝一款性能稳定、持续成长、又更新迭代的搜索引擎呢?
Lucene引擎强大的倒排索引和列式存储能力,赋予了GaussDB(for Cassandra)高效的多维查询、文本检索、统计分析等能力,在使用体验上和原生二级索引相似,但同时拥有了更为丰富的语法支持。
使用Lucene二级索引后,我的查询发生了哪些变化?
更加灵活的查询、过滤方式:
所有查询均可不带PK或者带部分PK,并且索引列支持 “>、<、in”等操作符,用户不需要再局限于只使用“=”。
强大的文本检索能力:
文本检索能力正是Lucene最擅长的,使用起来十分方便,只需要通过关键词like即可实现。
你可以这样:
SELECT * FROM example WHERE field LIKE 'test%'; // 前缀查询也可以这样:
SELECT * FROM example WHERE field LIKE 'start*end'; // 正则匹配还可以这样:
SELECT * FROM example WHERE field LIKE '%+lucene +index%'; // 全文搜索功能,性能高效,稳定支持超万亿规格的大数据量统计:
select count(*) from example where pk > 1 and expr(lucene_index, 'count'); 多种删除方式:
支持single单行删除、partition分区删除、range范围删除,全方位覆盖各种删除场景。
DELETE FROM example WHERE pk1='a' AND field=1; // single单行删除DELETE FROM example WHERE pk1='a' AND pk2=5000; // partition分区删除DELETE FROM example WHERE pk1='a' AND pk2=3000 AND ck1=2 AND ck2>'a' AND ck2<'c'; // range范围删除支持扩展json查询接口,轻松应对各种复杂查询场景:
扩展的json查询接口提供了丰富的查询语法,用法更多样化。以下是关键字列表:
filter | 在查询语句中json查询的关键字 |
term | 查询时判断某个document是否包含某个具体的值,不会对被查询的值进行分词查询 |
match | 将被询值进行分词,进行全文检索 |
range | 查询指定某个字段在某个特定的范围(范围查询子关键字:"eq"/"gte"/"gt"/"lte"/"lt") |
bool | 必须和 "must"、"should"、"must not" 一起组合出复杂的查询 |
must | bool类型的子查询,类型为list,封装"term"、"match"、"range" 查询 |
should | bool类型的子查询,类型为list,封装"term"、"match"、"range" 查询 |
must not | bool类型的子查询,类型为list,封装"term"、"match"、"range" 查询 |
举个栗子:
SELECT * FROM example WHERE EXPR(index_field, '{"filter": {"bool": {"should": [{"bool": {"should": [{"bool": {"must": [{"bool": {"should": [{"range": {"ck1": {"lt": 2}, "ck1": {"gte": 4}}}]}}, {"bool": {"should": [{"range": {"field1": {"lt": 2}, "field1": {"gt": 3}}}]}}]}}, {"bool": {"should": [{"term": {"pk1": "a", "pk1": "b", "pk1": "c"}}]}}]}}, {"bool": {"must": [{"range": {"field2": {"gte":5, "lte": 15}, "pk2": {"gt": 2000}}}]}}]}}}')通过条件组合加嵌套,您可以DIY符合自身业务的sql语句,并且最高支持200层json嵌套,再复杂的场景也能处理!
华为云GaussDB(for Cassandra)搭载Lucene引擎,通过Lucene二级索引将搜索能力下沉至底层,从根本上解放了应用层查询,兼具多维查询、文本检索、统计分析等多种能力,可以完美地弥补NoSQL弱查询功能的短板,让企业从容应对海量数据的复杂查询场景。还等什么,速来体验吧!
附录
本文作者:华为云高斯Cassandra团队
杭州西安深圳简历投递:[email protected]
更多技术文章,请关注高斯Cassandra官方博客:https://bbs.huaweicloud.com/community/usersnew/id_1563519101830986
高斯Cassandra官方首页:https://www.huaweicloud.com/product/gaussdbforcassandra.html
边栏推荐
- Usage of PHP interview questions foreach ($arr as $value) and foreach ($arr as $value)
- Debian10 compile and install MySQL
- [network attack and defense principle and technology] Chapter 4: network scanning technology
- 元宇宙带来的创意性改变
- Wireshark分析抓包数据*.cap
- 云景网络科技面试题【杭州多测师】【杭州多测师_王sir】
- Learn to make dynamic line chart in 3 minutes!
- 通过 Play Integrity API 的 nonce 字段提高应用安全性
- 五种网络IO模型
- Chapter 1 Introduction to CRM core business
猜你喜欢

Mui side navigation anchor positioning JS special effect

C语言中匿名的最高境界

Learn to make dynamic line chart in 3 minutes!
![[principles and technologies of network attack and Defense] Chapter 5: denial of service attack](/img/18/ac8b4c0dba4dd972df119d2f670416.png)
[principles and technologies of network attack and Defense] Chapter 5: denial of service attack

SD_DATA_RECEIVE_SHIFT_REGISTER
![[tpm2.0 principle and Application guide] Chapter 5, 7 and 8](/img/38/93fd986916193803bbd90805f832fa.png)
[tpm2.0 principle and Application guide] Chapter 5, 7 and 8

JS pull down the curtain JS special effect display layer

讨论 | AR 应用落地前,要做好哪些准备?

AntiSamy:防 XSS 攻击的一种解决方案使用教程

Do you really understand sticky bag and half bag? 3 minutes to understand it
随机推荐
通过 Play Integrity API 的 nonce 字段提高应用安全性
What are the financial products in 2022? What are suitable for beginners?
Chapter 3 business function development (user access project)
idea彻底卸载安装及配置笔记
The report of the state of world food security and nutrition was released: the number of hungry people in the world increased to 828million in 2021
String type, constant type and container type of go language
Live broadcast software construction, canvas Text Bold
低代码助力企业数字化转型会让程序员失业?
2022年理财产品的一般收益率是多少?
『HarmonyOS』DevEco的下载安装与开发环境搭建
【C语言】字符串函数
Five network IO models
磁盘存储链式的B树与B+树
现货白银分析中的一些要点
Some key points in the analysis of spot Silver
同消费互联网的较为短暂的产业链不同,产业互联网的产业链是相当漫长的
[principle and technology of network attack and Defense] Chapter 6: Trojan horse
Discuss | what preparations should be made before ar application is launched?
[principles and technologies of network attack and Defense] Chapter 5: denial of service attack
Disk storage chain B-tree and b+ tree