【深入浅出】阿里自研开源搜索引擎Havenask变更表结构

本文涉及的产品
推荐全链路深度定制开发平台,高级版 1个月
简介: 本文介绍了Havenask的表结构变更,包括表结构简介、全量构建流程和变更表结构三个部分。表结构由schema配置,字段类型包括INT、FLOAT、STRING等,索引有倒排、正排和摘要索引。全量表变更会触发全量构建,完成后自动切换,但直写表不支持直接变更。变更过程涉及使用hape命令更新schema并触发全量build。最后还有全量构建的流程图和具体操作步骤。

一、表结构简介

Havenask的表结构由schema文件进行配置,主要包括字段配置和索引配置。

1、Schema配置

字段类型: https://havenask.net/#/doc/v1-1-0/sql/indexes/field-type

  • INT8UINT8INT16UINT16INT32UINT32INT64UINT64FLOATDOUBLESTRINGTEXTRAW


索引类型: https://havenask.net/#/doc/sql/indexes/intro

  • 倒排索引:NUMBER, STRING, TEXT, PACK, EXPACK, SPATIAL, RANGE, DATE, PRIMARYKEY64/PRIMARYKEY128
  • 正排索引:ATTRIBUTE
  • 摘要: SUMMARY


2、变更表结构

  • 全量表:变更后触发全量,构建完成后自动切换(v1.1.0开始支持)
  • 直写表:暂不支持直接变更表结构
  • 字段类型包括整型、浮点型、字符串、文本和RAW类型等。索引则包括三类,分别是倒排索引、正排索引和摘要索引。当前版本支持全量表变更表结构,然后触发全量build,构建完成后自动切换。需要注意的是,直写表暂不支持直接变更表结构,还需重新建表。

 

二、全量构建流程

用户通过HapeCatalog中提交表相关信息,BSCatalog中获取变更的表信息并触发全量build,构建完成后,将状态写回Catalog suez admin。从Catalog中获取最新build好的索引版本信息,生成target,逐级下发到searcher。然后searcher进行索引切换,完成一次全量表的索引构建和切换的过程。


全量表构建和切换的流程如下图所示:

image.png


 

三、变更表结构

1、过程概述

有关hape命令变更表结构的详细介绍可参考havenask官网文档中的详细解释(链接:https://havenask.net/#/doc/sql/petool/command)。

首先,准备集群创建全量表;然后,查询变更前的表结构;接下来,变更表结构,如添加一个字段,全量构建完成后切换上线;最后,查询表结构变更之后的表内容。


2、全量表变更过程演示

准备集群:

  • hape start havenask
  • hape create table -t in0 -p 1 -s /ha3_install/example/cases/normal/in0_schema.json -f /ha3_install/example/cases/normal/test.data
  • hape gs table/hape gs bs


查询:

  • /ha3_install/sql_query.py --query "select * from in0"


变更表结构:

  • hape update table-schema -t in0 -p 1 -s /ha3_install/example/cases/normal/in0_schema2.json -f /ha3_install/example/cases/normal/test2.data
  • hape gs table/hape gs bs


查询:

  • /ha3_install/sql_query.py --query "select * from in0"


3、具体步骤

  • 首先,创建一个havenask运行容器,容器名为havenask_schema_test,进入运行容器。进入容器后,拉起一个havenask集群,接下来,创建一张全量表,其相关命令可以参考链接(https://developer.aliyun.com/article/1495436?groupCode=havenask),将表名改为in0。在创建全量表期间,我们可以通过havenask gs bs命令查看当前的build service状态,可以看到buildInfo以及build service任务的状态。一段时间后,可以用hape gs bs命令查看全量构建状态,可以看到带有full关键字的任务均已经处理完成,并且buildInfo中也产生了当前版本的信息,这说明全量已经构建好完成。


  • 查询query可以看到查询正常,且当前schema有一个hits字段。然后,更改schema,触发全量build。最后,在索引切换上线之后查询其是否生效。创建一个用于测试的目录,该目录需要被havenask容器访问,因此可以在home目录。
    因为havenask默认挂载了home目录,目录名称为test_data。将ha3_install目录下example当中的schema以及测试数据拷贝到这个目录,可以添加写入数据的权限,确保可以修改。


  • 首先,修改schema,可以增加一个hits2字段保存;然后,修改全量的数据,将hits2改为hits10倍,把hits的其中一篇doc也改成123;接下来,更新schema,相关的hape命令与建表非常类似,只需要把create table 改成update table-schema即可,并将schema路径改为修改后的schema文件,将测试数据也改成修改后的测试数据文件,详细的命令可以参考hape命令中update的更新全量表schema;更新schema后,会触发新的一轮全量build,可以通过hape gs bs查看新版本的全量build状态,可以看到新版本的全量状态 current当中有了版本的信息,这表示该全量已经构建完成。


  • 再次查询,可以看到新增的hits2和修改的数据均已生效。


四、结尾

具体Havenask变更表结构的演示视频可以通过链接查看,欢迎各位开发者使用。


视频链接:https://developer.aliyun.com/live/253691?spm=a2c6h.14164896.0.0.786b47c54kOhxO&scm=20140722.S_community@@%E8%A7%86%E9%A2%91@@253691._.ID_253691-RL_havenask%E5%85%A5%E9%97%A8%E8%AF%BE%E7%A8%8B%E7%AC%AC5%E8%8A%82%E5%8F%98%E6%9B%B4%E8%A1%A8%E7%BB%93%E6%9E%84-LOC_search~UND~community~UND~item-OR_ser-V_3-P0_0


关注我们:

Havenask 开源官网:https://havenask.net/

Havenask-Github 开源项目地址:https://github.com/alibaba/havenask

阿里云 OpenSearch 官网:https://www.aliyun.com/product/opensearch

钉钉扫码加入 Havenask 开源官方技术交流群:

1715594790746.png

目录
相关文章
|
1月前
|
SQL 存储 DataWorks
DataWorks数据同步功能支持全量更新和增量更新两种方式
【4月更文挑战第3天】DataWorks数据同步功能支持全量更新和增量更新两种方式
39 3
|
2月前
|
分布式计算 关系型数据库 数据处理
Dataphin常见问题之没有建表的权限如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
3月前
|
SQL 数据管理 关系型数据库
DMS问题之表结构变更创建不了partition如何解决
DMS(Data Management Service)是阿里云提供的一站式数据管理服务,支持数据开发、维护、治理等多种功能;本合集着重于介绍DMS的功能特点、操作流程和最佳实践,帮助用户高效进行数据管理和维护。
55 8
|
13天前
|
运维 DataWorks 关系型数据库
DataWorks产品使用合集之DataWorks还有就是对于mysql中的表已经存在数据了,第一次全量后面增量同步的步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
28 2
|
2月前
|
分布式计算 DataWorks 关系型数据库
DataWorks常见问题之删除odps中表的历史分区失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
2月前
|
存储 Oracle 关系型数据库
Flink CDC产品常见问题之tidb-HUDI的整库同步失败如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
|
2月前
|
分布式计算 DataWorks Java
DataWorks常见问题之数据集成导出分区表的全量数据如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
48 0
|
2月前
|
SQL 存储 分布式计算
DataWorks常见问题之能否把元数据的库名表名同步
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
41 3
|
5月前
|
DataWorks 定位技术 数据库
DataWorks数据地图中没手工同步就可以查到修改后的表名,但是业务流程中【表结构】还是没有变化?
DataWorks数据地图中没手工同步就可以查到修改后的表名,但是业务流程中【表结构】还是没有变化?
35 1
|
6月前
|
消息中间件 Kafka 数据库
这个错误通常表示Flink CDC在执行快照时,无法从数据库历史主题中获取到正确的数据
这个错误通常表示Flink CDC在执行快照时,无法从数据库历史主题中获取到正确的数据
34 1