Lindorm全文索引技术介绍

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
云数据库 Tair(兼容Redis),内存型 2GB
简介: 随着云原生、5G/IOT时代的到来,数据已经成为企业的重要资产,企业客户除了要求数据库能够“存得起”数据外,更加期望数据可以“看得见”,本文将介绍云原生多模数据库Lindorm的全文索引特性,基于Lucene构建倒排索引和列式存储,提供高效的多维查询、文本检索、统计分析能力,让数据更加可见。

用户福利

阿里云最新发布业界首款云原生多模数据库Lindorm,新用户可享9.9元/3个月优惠,技术交流钉钉群:35977898,更多内容请参考链接

背景

作为面向大数据场景的半结构化、结构化存储系统,Lindorm已经在阿里发展了近十年,并始终保持着快速的能力更新和技术升级,其在功能、性能、稳定性等方面的诸多创新历经了长时间的大规模实践考验,被全面应用于阿里集团、蚂蚁集团、菜鸟、大文娱等各个业务板块,成为目前为止公司内部数据体量最大、覆盖业务最广的数据库产品。

image.png

Lindorm作为云原生多模数据库,目前支持宽表、时序、搜索、文件等多种数据模型,各模型间数据互融互通,一处写入处处可读,以适应用户在不同场景下的需求,使应用开发变得更加敏捷、高效。更全面的Lindorm介绍,可参考:存的起,看得见—云原生多模数据库Lindorm技术解析

image.png

Lindorm一直致力于"让企业数据存的起,看得见",除了提供海量数据的低成本冷热存储,Lindorm也提供了丰富的索引支持,让数据能够实时可见,接下来我们将讲述Lindorm为满足企业客户的多样化查询需求而开放的全文索引功能。

数据查询的痛点

image.png

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提供了强一致的全局二级索引,目前已经广泛应用在各个业务场景中。

image.png

除了这些通用查询外,随着业务发展,更多的查询需求随之而来:

  • 随机多维查询
  • 通配符模糊查询
  • 文本检索
  • 排序统计
  • 深度翻页
  • ......

主键查询和二级索引已经无法满足这样的需求,那如何在原有数据库基础上支撑这些需求呢?

image.png

业界数据库在面对这样的问题时,通常有两种做法:
1.DB内核内置搜索引擎(Lucene),提供全文索引能力。例如:MongoDB Atlas Search,Couchbase Search等。

2.DB+独立的搜索引擎,两个系统相互融合提供全文索引的能力。例如:AWS的DynamoDB与CloudSearch,Azure的ComosDB与Search,Greenplum GPText,以及Datastax推出的Cassandra Search。

Lindorm作为一款多模数据库,支持宽表、时序、搜索、文件四种模型,模型之间数据相互贯通,借助搜索引擎可以天然为宽表提供全文索引的能力,这也与业界的通用实现不谋而合。

全文索引示例

image.png

针对上面的表数据,我们可以对表中的多个列建立一个全文索引:姓名(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等,满足海量数据下的高效检索需求。

image.png

LindormSearch的数据持久化存储在LindormStore中,通过自动Sharding的方式分散到多台SearchServer中,每一个分片拥有多个副本,支持一写多读,提升查询聚合的效率,同时这些副本之间共享存储,有效消除副本之间的存储冗余。

宽表与搜索的融合

通过融合搜索引擎,借助Lucene的倒排索引和列式存储能力,我们为宽表提供了全文索引功能,在使用体验上类似二级索引,同时有更为丰富的语法支持,例如:分词、高亮、统计聚合等。
image.png

CQL访问

CQL全称Cassandra Query Language,是Cassandra社区提供的一套类SQL语言,熟悉SQL操作的开发人员可以很轻松的使用CQL。除了原生API访问全文索引外,Lindorm同样也提供CQL访问全文索引的能力,借助CQL可以实现对索引的管理操作,通过DML语句可以实现对宽表数据的读写,内部会自动路由到全文索引。

image.png

典型场景

全文索引提供丰富的查询能力,配合宽表引擎,可以广泛应用在移动出行、电商/网站、系统分析、时空时序场景。

案例一:订单详情

image.png

案例二:用户画像

image.png

最后

体验全文索引,请参考指导文档:Lindorm全文索引,更多的技术交流,可以通过钉钉扫描二维码入群,可参考专家服务

undefined

目录
相关文章
|
3月前
|
运维 关系型数据库 分布式数据库
PolarDB产品使用问题之分区表如何实现全文索引
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
自然语言处理 关系型数据库 数据库
技术经验解读:【转】PostgreSQL的FTI(TSearch)与中文全文索引的实践
技术经验解读:【转】PostgreSQL的FTI(TSearch)与中文全文索引的实践
43 0
|
存储 SQL 自然语言处理
如何使用AnalyticDB PostgreSQL 版实现“一站式全文检索”业务
本文从阿里云用户使用云原生数据仓库AnalyticDB PostgreSQL版(以下简称ADB PG)的实际体验出发,介绍ADB PG如何实现“一站式全文检索”业务,并详细阐述ADB PG使用的优势技术,最后提供对应业务案例分析。
32293 33
|
关系型数据库 PostgreSQL 索引
PostgreSQL技术大讲堂 - 第30讲:多表连接方式
从零开始学PostgreSQL技术大讲堂 - 第30讲:多表连接方式
308 2
|
存储 SQL 搜索推荐
01全文检索技术介绍
01全文检索技术介绍
72 0
|
存储 消息中间件 数据库
从索引实现上来看看你用的 TDengine 为什么这么快!
不同的索引区别在哪里?时序数据库又应该如何选择索引方式实现科学的数据结构?本文将以 TDengine 为例为大家展开分析。
126 0
|
存储 SQL NoSQL
NoSQL“小钢炮”,Lindorm时空引擎Ganos轨迹处理实测
Lindorm作为一款阿里云推出的云原生超融合多模数据库,包含了流引擎、宽表引擎、对象引擎、搜索引擎等。最新发布的Lindorm已经深度融合了达摩院空天数据库引擎Ganos(Lindorm Ganos),可以一站式的解决海量轨迹场景的存储和各类查询需求,本文通过对Lindorm Ganos在常用的时空场景进行测试,用过程和实际的数据展示Lindorm Ganos的具备的能力和特性。
NoSQL“小钢炮”,Lindorm时空引擎Ganos轨迹处理实测
|
存储 缓存 负载均衡
从DynamoDB 2022 Paper回看Lindorm的一些设计
一向低调的AWS终于在2022年发了一篇关于DynamoDB的论文——《 Amazon DynamoDB: A Scalable, Predictably Performant, and Fully Managed NoSQL Database Service》。
从DynamoDB 2022 Paper回看Lindorm的一些设计
|
存储 关系型数据库 MySQL
ClickHouse 集成表的引擎说明
ClickHouse 集成表的引擎说明
277 0
ClickHouse 集成表的引擎说明
|
存储 搜索推荐 分布式数据库
深度解析Lindorm全文索引(SearchIndex)特性
索引是加速数据库查询的重要手段,Lindorm除了提供高性能的二级索引外,同时支持全文索引(SearchIndex),主要面向复杂的多维查询场景,并能够覆盖模糊查询、聚合分析、排序、分页等场景。本篇文章将从技术层面详细介绍Lindorm SearchIndex的具体实现。
1556 0
深度解析Lindorm全文索引(SearchIndex)特性