今天,華為云GaussDB(for Cassandra)攜__Lucene引擎全新解決方案__來啦!
當(dāng)前,互聯(lián)網(wǎng)、大數(shù)據(jù)飛速發(fā)展,數(shù)據(jù)量呈爆發(fā)式增長,在高并發(fā)、高可用、高擴(kuò)展性的業(yè)務(wù)需求推動(dòng)下,NoSQL數(shù)據(jù)庫成為了越來越多場(chǎng)景的剛需。但在查詢方面,傳統(tǒng)的NoSQL卻有一定的局限性,嚴(yán)格來說,像開源MongoDB、Cassandra、Hbase等都不具備海量數(shù)據(jù)的多維查詢、文本檢索、統(tǒng)計(jì)分析等能力。多數(shù)企業(yè)仍然在尋求一套更完美的NoSQL解決方案。
華為云原生多模數(shù)據(jù)庫GaussDB NoSQL擁有強(qiáng)大的生態(tài)體系,支持鍵值、寬表、文檔、時(shí)序四種引擎接口。其中,寬表引擎接口GaussDB(for Cassandra)現(xiàn)已發(fā)布Lucene二級(jí)索引功能,既具備NoSQL的優(yōu)勢(shì),又能支持多種復(fù)雜查詢場(chǎng)景,全面提升用戶在海量數(shù)據(jù)場(chǎng)景下的查詢體驗(yàn),憑實(shí)力寵粉!相信大家一定有很多疑問,GaussDB(for Cassandra)是什么?二級(jí)索引如何使用?Lucene二級(jí)索引又有哪些區(qū)別?別著急,接下來讓我們一一解讀。
什么是GaussDB(for Cassandra)?
GaussDB(for Cassandra)是一款基于華為自研、采用計(jì)算存儲(chǔ)分離架構(gòu)的分布式云數(shù)據(jù)庫,在高性能、高可用、高可靠、高安全、可彈性伸縮的基礎(chǔ)上,提供了一鍵部署、備份恢復(fù)、監(jiān)控報(bào)警等服務(wù)能力;并高度兼容開源Cassandra接口,提供高讀寫性能。當(dāng)前已經(jīng)廣泛應(yīng)用于IoT、氣象、互聯(lián)網(wǎng)、游戲等諸多領(lǐng)域。
什么是二級(jí)索引?
我們先來了解下索引的概念。索引是為了加快數(shù)據(jù)檢索速度而創(chuàng)建的一種存儲(chǔ)結(jié)構(gòu),是一種以空間換時(shí)間的設(shè)計(jì)思想。作用可以理解為書的目錄,通過目錄可快速定位到所需要的內(nèi)容。
在Cassandra中,Primary Key就是索引(也被稱為一級(jí)索引),在查詢的時(shí)候,根據(jù)Primary Key可以直接檢索到對(duì)應(yīng)的記錄。而二級(jí)索引又稱輔助索引,是為了幫助定位到一級(jí)索引,然后再根據(jù)一級(jí)索引找到對(duì)應(yīng)記錄。我們平時(shí)使用CREATE INDEX語句建立的就是二級(jí)索引。
當(dāng)前Cassandra二級(jí)索引的痛點(diǎn)有哪些?
原生Cassandra中二級(jí)索引的實(shí)現(xiàn)其實(shí)是創(chuàng)建了一張隱式的表,該表的Primary Key是創(chuàng)建索引的列,值為對(duì)應(yīng)的Primary Key,實(shí)現(xiàn)相對(duì)簡單,因此不可避免地帶來了一些約束條件:
1.第一主鍵只能用“=”查詢;
2.第二主鍵可以使用“=、>、<、>=、<=”;
3.索引列只支持“=”查詢;
4.刪除、更新太過頻繁的列不適合建立索引;
5.High-cardinality列不適合做索引;
基于以上約束,Cassandra二級(jí)索引能提供的查詢功能非常有限。
Why Lucene?
Lucene是當(dāng)下最火的開源全文檢索引擎工具,具有以下特點(diǎn):
1.穩(wěn)定、索引性能高;
2.是高效、準(zhǔn)確、高性能的搜索算法;
3.具備豐富的查詢類型:支持短語查詢、通配符查詢、近似查詢、范圍查詢等;
4.有強(qiáng)大的開源社區(qū)支持,可維護(hù)性好;
因此,用集成Lucene引擎來補(bǔ)充Cassandra查詢能力的弱點(diǎn)是最佳選擇,畢竟誰又會(huì)拒絕一款性能穩(wěn)定、持續(xù)成長、又更新迭代的搜索引擎呢?
Lucene引擎強(qiáng)大的倒排索引和列式存儲(chǔ)能力,賦予了GaussDB(for Cassandra)高效的多維查詢、文本檢索、統(tǒng)計(jì)分析等能力,在使用體驗(yàn)上和原生二級(jí)索引相似,但同時(shí)擁有了更為豐富的語法支持。
使用Lucene二級(jí)索引后,我的查詢發(fā)生了哪些變化?
更加靈活的查詢、過濾方式:
所有查詢均可不帶PK或者帶部分PK,并且索引列支持 “>、<、in”等操作符,用戶不需要再局限于只使用“=”。
強(qiáng)大的文本檢索能力:
文本檢索能力正是Lucene最擅長的,使用起來十分方便,只需要通過關(guān)鍵詞like即可實(shí)現(xiàn)。
你可以這樣:
SELECT \\* FROM example WHERE field LIKE 'test%'; // 前綴查詢
也可以這樣:
SELECT \\* FROM example WHERE field LIKE 'start\\*end'; // 正則匹配
還可以這樣:
SELECT \\* FROM example WHERE field LIKE '%\\+lucene \\+index%'; // 全文搜索功能,性能高效,穩(wěn)定
支持超萬億規(guī)格的大數(shù)據(jù)量統(tǒng)計(jì):
SELECT count\\(\\*\\) FROM example WHERE field1>\\-1 AND EXPR\\(field2, 'count'\\);
多種刪除方式:
支持single單行刪除、partition分區(qū)刪除、range范圍刪除,全方位覆蓋各種刪除場(chǎng)景。
DELETE FROM example WHERE pk1='a' AND field=1; // single單行刪除
DELETE FROM example WHERE pk1='a' AND pk2=5000; // partition分區(qū)刪除
DELETE FROM example WHERE pk1='a' AND pk2=3000 AND ck1=2 AND ck2>'a' AND ck2<'c'; // range范圍刪除
支持?jǐn)U展json查詢接口,輕松應(yīng)對(duì)各種復(fù)雜查詢場(chǎng)景:
擴(kuò)展的json查詢接口提供了豐富的查詢語法,用法更多樣化。以下是關(guān)鍵字列表:
filter
在查詢語句中json查詢的關(guān)鍵字
term
查詢時(shí)判斷某個(gè)document是否包含某個(gè)具體的值,不會(huì)對(duì)被查詢的值進(jìn)行分詞查詢
match
將被詢值進(jìn)行分詞,進(jìn)行全文檢索
range
查詢指定某個(gè)字段在某個(gè)特定的范圍(范圍查詢子關(guān)鍵字:"eq"/"gte"/"gt"/"lte"/"lt")
bool
必須和 "must"、"should"、"must not" 一起組合出復(fù)雜的查詢
must
bool類型的子查詢,類型為list,封裝"term"、"match"、"range" 查詢
should
bool類型的子查詢,類型為list,封裝"term"、"match"、"range" 查詢
must not
bool類型的子查詢,類型為list,封裝"term"、"match"、"range" 查詢
舉個(gè)栗子:
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符合自身業(yè)務(wù)的sql語句,并且最高支持200層json嵌套,再復(fù)雜的場(chǎng)景也能處理!
華為云GaussDB(for Cassandra)搭載Lucene引擎,通過Lucene二級(jí)索引將搜索能力下沉至底層,從根本上解放了應(yīng)用層查詢,兼具多維查詢、文本檢索、統(tǒng)計(jì)分析等多種能力,可以完美地彌補(bǔ)NoSql弱查詢功能的短板,讓企業(yè)從容應(yīng)對(duì)海量數(shù)據(jù)的復(fù)雜查詢場(chǎng)景。還等什么,速來體驗(yàn)吧!
審核編輯:湯梓紅
-
開源
+關(guān)注
關(guān)注
3文章
3533瀏覽量
43294 -
Lucene
+關(guān)注
關(guān)注
0文章
6瀏覽量
7728 -
華為云
+關(guān)注
關(guān)注
3文章
2753瀏覽量
18008
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
安泰電壓放大器在雪崩光電二級(jí)管輻射特性研究中的應(yīng)用

創(chuàng)建唯一索引的SQL命令和技巧
CDCE62005第二級(jí)PLL無法鎖住的原因?如何解決?
一級(jí)和二級(jí)浪涌保護(hù)器的區(qū)別與選型指南

二級(jí)配電箱的作用介紹
物聯(lián)網(wǎng)系統(tǒng)中如何增強(qiáng)GNSS的信號(hào)_GNSS二級(jí)放大電路研發(fā)測(cè)試方案

一級(jí)、二級(jí)和三級(jí)配電箱的區(qū)別
INA128兩級(jí)放大,第二級(jí)放大測(cè)不出來的原因?如何解決?
THS3001級(jí)聯(lián)組成放大電路,實(shí)際接通后第二級(jí)有明顯發(fā)熱,為什么?
OPA2333二級(jí)放大是否可以實(shí)現(xiàn)萬倍放大?
一級(jí)浪涌保護(hù)器和二級(jí)浪涌保護(hù)器怎么區(qū)分
二級(jí)浪涌保護(hù)器型號(hào)如何選擇
ClickHouse內(nèi)幕(3)基于索引的查詢優(yōu)化

HarmonyOS開發(fā)案例:【卡片二級(jí)聯(lián)動(dòng)】

評(píng)論