一、基本使用
下载工具地址:https://help.aliyun.com/document_detail/261163.html
1.连接数据库
lindorm-cli -url <jdbc url> -username <用户名> -password <密码>
2.创建库表
create database test;
use test;
create table tb (id varchar, name varchar, address varchar, primary key(id, name)) ;
3.插入数据
upsert into tb (id, name, address) values ('001', 'jack', 'hz');
4.查询数据
select * from tb;
二、索引
1.二级索引
-- 创建主表
create table shop_item_relation (
shop_id varchar,
item_id varchar,
status varchar,
constraint pk primary key(shop_id, item_id)) ;
-- 对第二列主键建索引,冗余所有列
create index idxs1 on shop_item_relation (item_id) 'INDEX_COVERED_TYPE'='COVERED_ALL_COLUMNS_IN_SCHEMA';
-- 基于索引表进行查询,因为对item_id构建索引,当指定item_id 进行查询会对应命中索引表
select * from shop_item_relation where item_id = 'item2';
2.搜索索引
- 创建搜索索引,并使用ik分词器
CREATE SEARCH INDEX idx ON dt(c1, c2, c3(type=text, analyzer=ik));
- 多维组合查询。c1, c2, c3列的随机组合,快速返回查询数据
SELECT * FROM dt WHERE c1=?;
SELECT * FROM dt WHERE c2=? AND c3=?;
- 分词查询。c3列为分词字段,可以通过等值查询相关性高的结果集。例如查询c3列中包含阿里巴巴、阿里或者巴巴的数据。
SELECT * FROM dt WHERE c3='阿里巴巴';
- 聚合分析。支持COUNT、SUM、MIN、MAX、AVG等聚合函数。
- 排序分页。支持任意索引列的排序(ORDER BY语句)。
搜索索引工作原理:
-
数据写入的流程如下:
1.数据写入至Lindorm宽表引擎,原始数据记录在宽表WAL中,写入结果返回客户端。
2.数据同步服务LTS实时监听宽表WAL,筛选出宽表WAL中带有SearchIndex的表,并将筛选的数据写入至搜索引擎。
3.搜索引擎收到数据后实时构建倒排索引。 -
数据查询的流程如下:
1.查询操作发送至Lindorm宽表引擎,计算层自动进行查询编译,基于优化器选择合适的SearchIndex。
2.查询重定向至搜索引擎,查询满足条件的数据。
3.汇总搜索引擎的数据,如果需要会自动回查宽表中的数据进行补齐,最后查询结果返回客户端。
总结:
如果您当前的业务架构中使用了HBase、MySQL或者MongoDB,同时也在使用搜索引擎Elasticsearch或者Solr。那么可以通过SearchIndex的一体化解决方案替换多个系统组合的架构。