Lindorm全文索引技术介绍

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
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

目录
相关文章
|
26天前
|
存储 SQL 分布式计算
大数据-139 - ClickHouse 集群 表引擎详解4 - MergeTree 实测案例 ReplacingMergeTree SummingMergeTree
大数据-139 - ClickHouse 集群 表引擎详解4 - MergeTree 实测案例 ReplacingMergeTree SummingMergeTree
28 0
|
4月前
|
运维 关系型数据库 分布式数据库
PolarDB产品使用问题之分区表如何实现全文索引
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
6月前
|
SQL 容灾 关系型数据库
[版本更新] PolarDB-X V2.4 列存引擎开源正式发布
[版本更新] PolarDB-X V2.4 列存引擎开源正式发布!
[版本更新] PolarDB-X V2.4 列存引擎开源正式发布
|
6月前
|
存储 关系型数据库 分布式数据库
PolarDB-X HTAP新特性 ~ 列存索引
随着数据爆炸式的增长,传统的OLTP和OLAP解决方案基于简单的读写分离或ETL模型,将在线库的数据以T+1的方式抽取到数据仓库中进行计算,这种方案存在存储成本高、实时性差、链路和维护成本高等缺陷。 为应对数据爆炸式增长的挑战,PolarDB分布式版本基于对象存储设计了一套列存索引(Clustered Columnar Index,CCI)功能,支持将行存数据实时同步到列存存储上
76143 148
|
6月前
|
存储 SQL 关系型数据库
ClickHouse(08)ClickHouse表引擎概况
ClickHouse支持四种主要表引擎系列:MergeTree家族,适用于大数据插入并按主键排序;日志引擎系列,适合小数据量写入,如StripeLog、Log和TinyLog;集成表引擎,如ODBC、JDBC,用于与外部系统集成;特殊引擎,包括分布式、内存、随机数生成等,满足特定需求。MergeTree系列提供数据副本和分区,日志系列不支持索引和突变操作。详细解析见相关文章链接。
92 0
|
数据挖掘 数据管理 测试技术
火山引擎:ClickHouse增强计划之“Upsert”
火山引擎:ClickHouse增强计划之“Upsert”
火山引擎:ClickHouse增强计划之“Upsert”
|
存储 算法 数据挖掘
火山引擎:ClickHouse增强计划之“多表关联查询”
火山引擎:ClickHouse增强计划之“多表关联查询”
|
存储 并行计算 Cloud Native
PolarDB 开源版通过 brin 实现千分之一的存储空间, 高效率检索时序数据
PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的 价值产出, 将数据变成生产力. 本文将介绍PolarDB 开源版通过 brin 实现千分之一的存储空间, 高效率检索时序数据
208 0
|
存储 缓存 负载均衡
从DynamoDB 2022 Paper回看Lindorm的一些设计
一向低调的AWS终于在2022年发了一篇关于DynamoDB的论文——《 Amazon DynamoDB: A Scalable, Predictably Performant, and Fully Managed NoSQL Database Service》。
从DynamoDB 2022 Paper回看Lindorm的一些设计
|
6月前
|
关系型数据库 分布式数据库 PolarDB
PolarDB 开源版通过 brin 实现千分之一的存储空间, 高效率检索时序数据
背景PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的 价值产出, 将数据变成生产力.本文将介绍PolarDB 开源版通过 brin 实现千分之一的存储空间, 高效率检...
127 0