从一到无穷大 #36 Lindorm 宽表:东西互联,南北互联,AI一体

news2024/10/1 9:17:48

在这里插入图片描述本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。

文章目录

  • 引言
  • 索引
    • 列存索引
    • 全文索引
    • 向量索引
    • 二级索引
  • AI赋能
    • 时序
    • 宽表
  • LTS(Lindorm Tunnel Service)
  • 总结

引言

从Lindorm的发展上我们可以看到其在技术架构上明确的构想。

即单模型独立提供基础服务,多模型间数据互联(南北互联),对外提供导入导出服务(东西互联),AI赋能 。宽表作为Lindorm的基本盘,把这些核心理念发挥到了淋漓尽致。

索引

Lindorm宽表支持四种索引:列存索引,全文索引,向量索引,二级索引

列存索引

列存索引核心思路为对每个行存的SSTable生成一个Parquet文件。
请添加图片描述
目的有两个:

  1. 减少从一小部分列中读取数据时的读取放大,用户可以为指标较少的查询指定为访问列索引文件,首先会根据该查询的车辆 ID 和时间范围过滤SSTables,然后使用对应的Parquet文件检索目标列,因为行存中全部列的Value是拼接在一个MergeValue中的,所以少量指标读取Parquet做I/O 操作更少。
  2. 增强宽表中分析计算能力,不仅节省IO,列存中往往包含摘要,查询时间范围较长时有显著性能提升

全文索引

请添加图片描述
全文检索在Lindorm上发挥了多模的价值点,主要面向复杂的多维查询场景,能够覆盖分词、模糊查询、聚合分析、排序翻页等场景。

技术上不难理解,搜索引擎上和时序一样都支持全量的倒排索引(时间线爆炸时一般是稀疏的),对于二级索引无法完成的复杂检索可以轻松支持,而这一切不需要额外开发,只需要通过LTS服务将索引指定列写入到搜索引擎就可以了,架构大幅简化。

向量索引

目前Lindorm的向量索引是基于Tair做的,但是在2024下半年开始Lindorm已经在公有云上线了向量引擎,这其实也宽表的向量存储是一定要在内部闭环的,

二级索引

这里直接把官网的介绍拿过来:

Lindorm二级索引支持为单表建多个索引,每个索引在物理上映射为一张数据表,与主表相互独立,每个索引有不同的存储策略(如采用不同的压缩算法、冷热分离策略)等属性。写主表时,Lindorm会自动更新所有索引表,并确保主表和索引表数据的一致性。读数据时,您只需针对主表发起查询,Lindorm会根据WHERE条件和SCHEMA自动选择合适的索引(包括主表)执行查询操作(支持HINT来干预优化器行为)。

基本特性如下:

  1. 支持单个主表建多个索引。
  2. 支持组合索引(单列和多列)。
  3. 支持冗余索引,全冗余索引可自动冗余主表新增的列。
  4. 查询优化:根据WHERE语句自动选择索引,支持HINT来干预优化器的选择。
  5. Online Schema Change:索引变更不影响主表的正常读写,可以随时新增、删除、更新索引。
  6. 支持数据有效期(简称:TTL):索引表自动继承主表的TTL设置,主表和索引表数据同时过期。
  7. 支持动态列:支持写入动态列和冗余动态列。
  8. 支持自定义数据版本:自定义时间戳后自动写入数据。

冗余索引支持多种能力:

  1. 冗余指定的列:显式指定要冗余主表的哪些列。
  2. 冗余主表Schema中的所有列:当需要全冗余索引时,不需要在CREATE INDEX中将主表的每一列都显式添加进来,而是通过一个常量来描述冗余所有列,当主表新增列时,全冗余索引表会自动冗余这个新增列,无需重建索引。也无需担心新增列的查询会导致回查主表了。
  3. 冗余动态列:Lindorm支持固定Schema和SchemaLess。通过DYNAMIC冗余模式,索引表能够自动冗余主表中的所有动态列,也会冗余主表Schema中的所有列。

AI赋能

Lindorm目前的AI引擎只服务于时序和宽表。

时序

对于时序 Lindorm 聚焦于Time Series ForecastingAnomaly Detection for Time Series,业界诸如IotDB也在时序内部用AI做Time Series Annotation

AI引擎模型训练,推理路径如下:
请添加图片描述
没有工程实现难点,核心步骤为:

  1. Lindorm ML和TSDB节点通过底层的分布式文件系统和Zookeeper共享模型数据和元数据的管理。
  2. 各种异常检测和时序预测算法由TSDB节点上的Lindorm ML Plugin统一管理
  3. 利用 TSDB 数据的分布式存储和算子下推技术,Lindorm ML 可以实现批量、分布式并行和近实时数据训练优化

在进入训练运算符 TrainingOp 之前,流水线执行引擎分两步处理数据:

  1. SeriesScanOp: 运算符提取相关特征
  2. PreProcessingOp: 运算符执行必要的数据预处理。

宽表

Lindorm ML支持一站式模型导入,训练,推理,那支持这些功能就一点也不奇怪了。

特征提取FEATURE_EXTRACTION使用Embedding模型从数据(文本或图像等)中提取特征向量。
文生图TEXT_TO_IMAGE文本生成图像类AIGC任务。
语义检索SEMANTIC_RETRIEVAL在指定数据表中根据描述文本检索语义相似的文本。
基础问答QUESTION_ANSWERING使用大语言模型进行问答。
检索问答RETRIEVAL_QA使用指定数据表中的知识库结合大语言模型构建一个检索增强生成(Retrieval Augmented Generation,RAG)应用。

比如说支持RAG功能,一站式RAG能力业内标准做法是这样的:

  1. 构建行业知识库: 这部分表示从行业的相关文档中提取信息,然后将其组织成一个结构化的知识库。这一步骤通常包括文档预处理、信息抽取和知识表示等环节。
  2. 对输入进行预处理: 在这一步骤中,原始用户输入被转换为适合后续处理的形式。可能包括语言标准化、分词、去除停用词等操作。然后用经过处理的原始输入在已经构建的知识库中进行信息检索。
  3. 检索结果: 这是从行业知识库中检索出的相关片段及其相关性的列表。计算相关性,并根据定义好的权重获取片段。
  4. 检索片段输入: 经过检索后得到的相关片段会被整合进用户的原始输入中,形成一个新的Prompt。这个新的提示包含了来自知识库的上下文信息,有助于LLM更好地理解和生成响应。
  5. 通过大模型生成结果: 在这个阶段,经过预处理和增强的输入被传递给LLM,由其生成最终的输出结果。

这个过程至少涉及到:

  1. 模型上传
  2. 向量生成
  3. 向量存储
  4. 向量检索
  5. 多路召回,ReRanking
  6. LLM回答

在公开资料中我没有看到宽表是如何存储和检索向量数据的,虽然现在支持向量引擎,但是目前看AI能力的出现比向量引擎早多了。

LTS(Lindorm Tunnel Service)

我很喜欢这个名字,且认为一个强大的数据传输服务是多模数据库持续演进,发掘更多价值的核心模块。

在这里插入图片描述

目前看最新版本对外支持的功能有三个:

  1. HBase与Lindorm之间的全,增量数据同步
  2. MaxCompute/Hive -> Lindorm
  3. 数据订阅
  4. 备份恢复(猜测是流水备份)
  5. 主备容灾

阿里这里抽象做的确实很好,这些功能其实非常类似,即 pull/push 消费流,代码上是完全可以统一的。

官网中LTS的购买页也可以看到至少目前的向量检索和向量存储不是基于LTS做的。

官网给了一个case,从Mysql中通过LTS将数据导入Lindorm,并允许外部系统订阅消费流。
在这里插入图片描述

总结

Lindorm各个模态的功能至少从介绍来看非常完善(宽表竟然还支持纠删码),而且大多数模态的思考和技术决策没有明显问题,基本上是属于把我能想到的事情都做了七七八八。

从[5]版本说明看,宽表19年,时序在21年已经在公有云服务,按照研发一年来算,至少18年就已经开始布局了。

对组织来讲可以认为是一个非常健康的王牌产品,这可以认为得益于长期的投入,阿里云稳定的基本盘带来的外部客户,和海量的内部业务的磨炼。

业务很重要,这可以解释为什么CosmosDB,Lindorm作为多模数据库(X-Stor其实做的也不错)领域领头羊但是支持的模态却基本完全不同。本质在于公司内部对应部门拥有哪些业务部门的支持,在2024年想拥有一种完全新的领域和业务线并不容易,尤其是我司这种6大BG都有基础架构组的情况,更多的是去吞并其他业务。

另外想聊聊近期比较火的数据智能话题,其实也就是数据库集成广义的AI能力,我的评价是虽然远不到“迈入数据智能新纪元”的地步,但是确实在小客户场景下有实际价值。想要有更多的故事长远来看需要改变对于普罗大众对于Pass的观念,定位更接近于Saas。

我司 Elasticsearch Service 做的就很好,因为并不是简单的做了RAG,而是对向量检索和全文检索做多路召回,显著的增强了查询的准确性,这对于人力不足的团队来说有很大实际价值,微信读书的AI问书功能就是很好的例子。

时序的异常检测和时序预测重要,但不是以目前的经验来看不是竞标的决定性因素。

至于在宽表上做检索问答和基础问答,我理解不是大客户的核心竞争力,因为人家可以自己做,而且使用公有云会考虑数据安全性问题,不会明文存储的。但是无疑对小客户是有吸引力的,当然是在基础性能,功能,成本达标的基础上。

所以清晰的知道团队处于那个阶段,清楚的知道追求的是营收还是人效比尤为重要,毕竟团队正收益才能持续发展,而且急躁也没用,复杂性是固有的,数据库内核开发,工作时间长效率低,工作时间短效率高,不会因为短时间发奋图强项目的进度总体就能往前赶多少,反而容易因为疲惫丧失好奇和创新,毕竟脑子和屁股,手一样重要。考虑运营提效,测试提效,考虑做事的核心价值,该冲就冲,该躺就躺,想到这里,倒也不觉得纠结了

引用:

  1. Cassandra Documentation Function
  2. Lindorm 宽表引擎
  3. Ch06-HBase 之 StoreFile
  4. HBASE中HFILE的物理存储结构
  5. Lindorm 版本说明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2182000.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面向MQTT基础物联网网络的Age-of-Information感知的保留消息策略

论文标题: 英文:AoI-aware Retained Message Policy in MQTT-based IoT Networks中文:面向MQTT基础物联网网络的Age-of-Information感知的保留消息策略 作者信息: Youngjun Kim 和 Yeunwoong Kyung工作单位:Youngju…

Unity3D播放GIF图片使用Animation来制作动画

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、下载GIF动图,用PS制作导出帧动画图片👉二、使用Animation制作动画👉三、脚本控制动画播放👉壁纸分享👉总结👉前言 unity播放gif图片,本身是不支持的,但是可以使用其他方法来实现, 1.有一种使用System…

短链接生成-短链接-短网址-短链接生成接口-短链接转换接口-短网址URL生成-短链接地址-短网址-短域名-短链接【快证api】

短网址接口是指用于将长网址缩短为短网址的应用程序编程接口(API)。以下是关于短网址接口的详细介绍: 一、短网址接口的功能 短网址接口的主要功能是将冗长的网址缩短为简洁的短网址,便于在社交媒体、邮件、短信等渠道中分享和传…

Redis: 主从复制原理

主从复制原理剖析 1 )配置 通过下面的从节点的配置项可以开启主从之间的复制功能slaveof 192.16.10.101 6379这里的复制包含全量复制和增量复制 2 )主节点的主从配置信息解析 查看主从之间的信息,在主节点上 $ info replication 打印出来的…

系统实施方案(word2024原件参考模板)

软件实施方案 二、 项目介绍 三、 项目实施 四、 项目实施计划 五、 人员培训 六、 项目验收 七、 售后服务 八、 项目保障措施 软件开发全套资料获取:(本文末个人名片也可直接获取) 软件产品,特别是行业解决方案软件产品不同于一…

【RockyLinux 9.4】安装新版 QQ for Linux(不再是 QQ2008 那种老款了!)

总览 还记得两年之前的时候,当初用的还是那种 QQ2008 一样的 LinuxQQ 啥也干不了,还不如 QQ2008 最近寻思自己装个服务器玩,想下载一个 QQ 用来文件传输,没想到现在的 QQ Linux 这么棒! 一、下载 1.下载网址 https…

C语言练手项目之通讯录

1.前言 使用我上期发布的泛型list去制作一个通讯录,实在是太So Easy了!!!(上期代码有改动,可通过我主页介绍的个人git仓库查看!!!) 2.代码截图 1.contact.h 2.main.c 3.contact.c 4.运行结果 3.结语 如果我的文章帮助到你,看到这里不妨点个小赞,加个收藏呗,你的点赞和收藏是我…

2024年9月总结及随笔之丢卡

1. 回头看 日更坚持了639天。 读《软件开发安全之道:概率、设计与实施》更新完成读《软件设计的要素》开更并更新完成读《构建可扩展分布式系统:方法与实践》开更并更新完成读《数据湖仓》开更并持续更新 2023年至2024年9月底累计码字1555996字&#…

Linux-基础篇-磁盘分区,挂载

Linux 分区 原理介绍 Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux 中每个分区都是用来组成整个文件系统的一部分。 Linux 采用了一种叫 “ 载入 ” 的处理方法,…

【Linux-基础IO】如何理解Linux下一切皆文件磁盘的介绍

目录 如何理解Linux系统上一切皆文件 1.物理角度认识磁盘 2.对磁盘的存储进行逻辑抽象 磁盘寻址 3.磁盘中的寄存器 如何理解Linux系统上一切皆文件 计算机中包含大量外设,操作系统想要管理好这些外设,就必须对这些外设进行先描述再组织&#xff0c…

Emergency Stop (ES)

文章目录 1. 介绍2. Feature List3. 紧急停止信号触发方式3.1 Port触发紧急停止信号3.2 SMU事件触发紧急停止信号3.3 软件触发紧急停止信号 4. 应用场景4.1 Port4.2 MSC 1. 介绍 Emergency Stop (ES)是Ifx System Control Units (SCU)六大模块之一。详细信息可以参考Infineon-…

【牛客刷题记录】【JAVA】二分查找

(1) 二分查找 链接 二分查找需要序列是有序的,否则二分查找会失效。原理就是如果找的值比mid小,那么[mid,R]的内容就不需要再查找了,反之如果大于mid位置的值,则在[L,mid]内的值也不需要再查找。同时将L/R的值进行修改。注意循环…

计算机毕业设计 基于深度学习的短视频内容理解与推荐系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

景联文科技入选《2024中国AI大模型产业图谱2.0版》数据集代表厂商

近日,大数据产业领域头部媒体数据猿携手上海大数据联盟联合发布了备受瞩目的《2024中国AI大模型产业图谱2.0版》。以大数据与AI为代表的智能技术为主要视角,聚焦全产业链,为业内提供更为专业直观的行业指导。 景联文科技凭借高质量数据集&…

第十一届蓝桥杯嵌入式省赛程序设计题解析(基于HAL库)(大学组)

一.题目分析 (1).题目 (2).题目分析 1.计时分析 只要遇到Vmin,就将计时时间重置为0,直到遇到Vmax结束计时 2.按键功能分析 a.B1显示和功能页面相互切换 b.B2每次按下Vmax加0.1,加到3.3V&a…

怀孕之天赋共享:其实人身体没变,完全是天赋共享

关于怀孕天赋共享,有人说,是不是怀孕导致身体变化? 并没有。下面这个就是案例。你总不能说,小孩生下来身体立即改变吧?

【大模型系列篇】动手部署实践国产文生图模型-腾讯混元DiT

首个中英双语DiT架构,混元-DiT,高性能细粒度中文理解-多分辨率扩散Transformer模型。 腾讯提出的混元DiT,是一个基于Diffusion transformer的文本到图像生成模型,此模型具有中英文细粒度理解能力。为了构建混元DiT,精心…

plt绘画三维曲面

目录 前言实战 前言 如果想绘画三维曲面,需导入Axes3D 模块,具体语法可参考: from mpl_toolkits.mplot3d import Axes3D问题的关键是需要三维坐标对象与figure相关联,这里可以使用如下两种方法,亲测可用!…

安卓使用memtester进行内存压力测试

memteser简介 memtester 是一个用于测试内存可靠性的工具。 它可以对计算机的内存进行压力测试,以检测内存中的错误,例如位翻转、随机存取错误等。memtester 可以在不同的操作系统上运行,并且可以针对不同大小的内存进行测试。 下载源码 m…

企业微信hook协议接口,群发,标签,客户管理。

服务提供了丰富的API和SDK,可以在企微的功能之上进行应用开发和功能扩展 自建应用可以调用企微hook或协议提供的接口来实现数据交互,可以直接调用hook或协议接口提供的功能来进行消息的发送与接收、用户管理、应用管理等操作,通过接口可以实…