使用者福利
阿裡雲最新釋出業界首款雲原生多模資料庫Lindorm,新使用者可享9.9元/3個月優惠,技術交流釘釘群:35977898,更多内容請
參考連結。
背景
作為面向大資料場景的半結構化、結構化存儲系統,Lindorm已經在阿裡發展了近十年,并始終保持着快速的能力更新和技術更新,其在功能、性能、穩定性等方面的諸多創新曆經了長時間的大規模實踐考驗,被全面應用于阿裡集團、螞蟻集團、菜鳥、大文娛等各個業務闆塊,成為目前為止公司内部資料體量最大、覆寫業務最廣的資料庫産品。

Lindorm作為雲原生多模資料庫,目前支援寬表、時序、搜尋、檔案等多種資料模型,各模型間資料互融互通,一處寫入處處可讀,以适應使用者在不同場景下的需求,使應用開發變得更加靈活、高效。更全面的Lindorm介紹,可參考:
存的起,看得見—雲原生多模資料庫Lindorm技術解析Lindorm一直緻力于"讓企業資料存的起,看得見",除了提供海量資料的低成本冷熱存儲,Lindorm也提供了豐富的索引支援,讓資料能夠實時可見,接下來我們将講述Lindorm為滿足企業客戶的多樣化查詢需求而開放的全文索引功能。
資料查詢的痛點
Lindorm Table引擎相容HBase、Phoenix(SQL)、Cassandra(CQL)等開源标準接口,它的資料模型是一種松散的寬表結構,通過唯一鍵Rowkey确定一條資料,并且支援多個列族,每個列族的多個列集中存儲。這樣的資料模型,适合的查詢場景主要有兩種:
1.主鍵查詢
SELECT * FROM table WHERE PK = ?;
2.字首範圍查詢
SELECT * FROM table WHERE PK >= ? AND PK <= ? LIMIT 10;
而面對非主鍵條件的查詢,一種方式是通過掃描主表來過濾出需要的資料,這會耗費過多的服務資源,造成系統的不穩定,另外一種方式是通過雙寫來維護多張表,但這會增加應用開發的複雜性,并且無法保證資料的一緻性和寫入效率。為此,Lindorm提供了強一緻的全局二級索引,目前已經廣泛應用在各個業務場景中。
除了這些通用查詢外,随着業務發展,更多的查詢需求随之而來:
- 随機多元查詢
- 通配符模糊查詢
- 文字檢索
- 排序統計
- 深度翻頁
- ......
主鍵查詢和二級索引已經無法滿足這樣的需求,那如何在原有資料庫基礎上支撐這些需求呢?
業界資料庫在面對這樣的問題時,通常有兩種做法:
1.DB核心内置搜尋引擎(Lucene),提供全文索引能力。例如:MongoDB Atlas Search,Couchbase Search等。
2.DB+獨立的搜尋引擎,兩個系統互相融合提供全文索引的能力。例如:AWS的DynamoDB與CloudSearch,Azure的ComosDB與Search,Greenplum GPText,以及Datastax推出的Cassandra Search。
Lindorm作為一款多模資料庫,支援寬表、時序、搜尋、檔案四種模型,模型之間資料互相貫通,借助搜尋引擎可以天然為寬表提供全文索引的能力,這也與業界的通用實作不謀而合。
全文索引示例
針對上面的表資料,我們可以對表中的多個列建立一個全文索引:姓名(name)、年齡(age)、性别(sex)、城市(city)、位址(address)。
CREATE SEARCH INDEX index_name ON table_name WITH COLUMNS name, age, sex, city, address(text);
建立完索引後,可以同時支援下面的多種查詢需求:
模糊查詢:SELECT * FROM table_name WHERE name LIKE ‘小%’
多元查詢排序:SELECT * FROM table_name WHERE city='杭州' AND age>=18 ORDER BY age ASC
多元查詢翻頁:SELECT * FROM table_name WHERE name='小劉' AND sex=false OFFSET 100 LIMIT 10 ORDER BY age DESC
文字檢索:SELECT * FROM table_name WHERE address CONTAINS ‘西湖區’
技術實作與功能介紹
Lindorm Search 搜尋引擎
Lindorm搜尋引擎是面向海量資料設計的分布式系統,相容開源Solr标準接口,同時可無縫作為寬表、時序引擎的索引存儲,加速檢索查詢。其整體架構與寬表引擎一緻,基于資料自動分區+分區多副本+Lucene的結構設計,具備全文檢索、聚合計算、複雜多元查詢等能力,支援水準擴充、一寫多讀、跨機房容災、TTL等,滿足海量資料下的高效檢索需求。
LindormSearch的資料持久化存儲在LindormStore中,通過自動Sharding的方式分散到多台SearchServer中,每一個分片擁有多個副本,支援一寫多讀,提升查詢聚合的效率,同時這些副本之間共享存儲,有效消除副本之間的存儲備援。
寬表與搜尋的融合
通過融合搜尋引擎,借助Lucene的反向索引和列式存儲能力,我們為寬表提供了全文索引功能,在使用體驗上類似二級索引,同時有更為豐富的文法支援,例如:分詞、高亮、統計聚合等。
CQL通路
CQL全稱Cassandra Query Language,是Cassandra社群提供的一套類SQL語言,熟悉SQL操作的開發人員可以很輕松的使用CQL。除了原生API通路全文索引外,Lindorm同樣也提供CQL通路全文索引的能力,借助CQL可以實作對索引的管理操作,通過DML語句可以實作對寬表資料的讀寫,内部會自動路由到全文索引。
典型場景
全文索引提供豐富的查詢能力,配合寬表引擎,可以廣泛應用在移動出行、電商/網站、系統分析、時空時序場景。
案例一:訂單詳情
案例二:使用者畫像
最後
體驗全文索引,請參考指導文檔:
Lindorm全文索引,更多的技術交流,可以通過釘釘掃描二維碼入群,可參考
專家服務