人工智能大模型加速数据库存储模型发展 行列混合存储下的破局

在这里插入图片描述

数据存储模型

专栏内容

  • postgresql内核源码分析
  • 手写数据库toadb
  • 并发编程
  • toadb开源库

个人主页:我的主页
座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物.

概述

在数据库的发展过程中,关系型数据库是一个里程碑式的阶段,现在关系型数据仍然占据着重要地位。
在关系型数据中,每张表都是一个关系,每行数据就是关系的一条记录,在存储时每行数据存储在连续的位置,行与行也是连续存放;
这样方便一次能拿到一整条记录。

处理业务类型

随着互联网的兴起,存储容量的提升和计算能力的飞越,我们的生活中不断增加了越来越多的被智能设备,产生了无尽的信息。
这样的信息规模已经超越了某一单体的能力限制,它们被不断分类,对于数据库处理模型,常常分为:

  • 在线事务处理模型(OLTP), 主要以事务一致性,关系型数据为主;
  • 在线分析处理模型(OLAP), 主要以分析统计为主,更多的是从大量数据中提取某几个维度的数据;

但是这样的划分,还远远不能满足信息爆炸带来的需求,它不是非黑即白的界线明晰的分类,还有大量同时存在OLTP和OLAP的特点的数据和业务,此时就需要一种混合性数据库存储模型。

数据存储模型原理

是什么

通过SQL插入的数据,在数据库中实际也是要存到磁盘上的,此时还要考虑我们写入的效率,读取的效率,如何产生的IO次数更少,那以什么格式组织这些数据,才能达到这样的目标呢?

我们使用的文件系统,都是以块为单位进行读写物理存储设备,常用的块大小有2k, 4k等;那么数据库为了提升性能,也选择以块为单位来组织数据,每次按块进行读写数据文件。
每个数据块内又分为:块头信息域,数据域的起始偏移,数据域,在数据域中按逻辑表的行进行连续存储。

当然行数据,又分为定长或变长两种不同的组织方式;定长,就是每种数据类型固定了长度,这样一行数据的长度也是确定的;变长类型,就是像字符,文本等长度是可变的,那么存储时需要记录长度。
它们最大的区别在于更新时,定长是可以直接覆盖更新的,而变长就需要追加更新。

为什么存储模型这么重要

因为我们的存储到数据库中的数据都是持久化到磁盘中,当我们查询时,再从磁盘中读出,
虽然我们数据库和操作系统层面都已经做了缓存,当数据量大时还是会产生大量的磁盘IO,而且数据库大多数情况下都是随机访问,缓存并不保证全部命中。

相较与内存速度来讲,磁盘速度是极底的,但是内存往往是有限的,所以存储模型至关重要,通过将随机写转换为顺序写,少的IO就可以精确找到数据,减少遍历,这些都可以做到减少IO次数,提升性能。

数据存储模型类型

NSM模型

故名思义,就是按行数据排列的数组形式, 数据的物理结构和他们的逻辑结构是一样的,也就是我们常说的行存储模型,这也是大多数关系型数据库采用的存储模型。

物理存储结构

磁盘是由一个一个数据块组成的,因此连续的数据也分在了连续的数据块。
每个数据块中又分块头信息,记录块中数据的起始偏移,每行数据分为 行的数据偏移item,从块头后面连续存储, 以及真正的行数据,它从块的末尾开始向头部方向连续存储,这是为了方便空闲空间的管理。

表数据与物理存储结构对应 如下图所示 :

物理存储结构

应用场景

  • 它的优势在于对关联数据的查询非常快,比如根据身份证号就可以一次读出姓名,住址等一系列信息。
    在此基础上对于复杂的嵌套join就非常有优势,因为它的各列数据都在一起。

不适合场景

  • 对于只查找部分列属性数据的业务,就会增加IO的成本,它需要全行数据的读出。对于按3NF设计,还是一张大宽表,都避免不了缓存效率的降低。

DSM模型

分解的存储模型,也就是将一行中的各字段存储到不同的数据单元中,当需要某列数据时,只从磁盘加载部分数据,如果需要整行数据,那就加载全量数据,然后进行行组装。

可以是每一列都分别存储,也可以根据业务需要不规则的划分,比如有三列经常会相时查询,那这三列可以一起存储,剩余的列分别存储。

物理存储结构

常见的格式有:

  • PAX
  • RCFile(record columnar file)
  • Apache ORC
  • Parquet (An Open Columnar Storage for Hadoop)

它们中更多偏向分析型列式存储,可以处理大量的时序,流式数据,也有一些偏向于行列的混合型,每种格式都有成熟的产品应用。

应用场景

它们的场景更多偏向分析型,如hdoop系列的,使用ORC, Parquet。

混合型数据存储模型

为了综合以上NSM和DSM各自的优势,互补长短,目前一些数据库已经采用了一些混合的存储模型。

常见混合模型实践

  • 数据冗余型

在存储数据时,干脆两种格式同时进行存储,一种按行进行存储,一种按列分别存储,这样避免了转换带的复杂度,用空间来换取性能;在优化引擎中可以选择更适合的路径;

  • 数据转换型

因为行存必须带来IO的放大,也以实际存储采用列式存储,在使用时进行组装成逻辑行数据;这种模型的难点在于,如何准确的找到逻辑行中的各字段,大多都采用PAX中提到的分组的方式。

难点

在大数据处理中,已经不局限于关系型数据,更多的是非关系型,如文本,json数据,如何将它们转换成列数据,可以快速查找,这将是混合型存储模型面临的一项挑战。

最近兴起的向量数据量,向量与大模型维度是对应的,底层数据库存储就需要将各类型数据进行分别存储。

结尾

非常感谢大家的支持,在浏览的同时别忘了留下您宝贵的评论,如果觉得值得鼓励,请点赞,收藏,我会更加努力!

作者邮箱:study@senllang.onaliyun.com
如有错误或者疏漏欢迎指出,互相学习。

注:未经同意,不得转载!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于STM32的天然气煤气检测报警仿真设计(仿真+程序+讲解)

基于STM32的天然气煤气检测报警仿真设计 演示视频1.主要功能2.仿真3. 程序4. 资料清单&下载链接 仿真图proteus 8.9 程序编译器:keil 5 编程语言:C语言 设计编号:C0081 演示视频 基于STM32的天然气煤气可燃气体检测报警仿真设计 1.主要…

【C++入门到精通】C++入门 —— 继承(基类、派生类和多态性)

阅读导航 前言一、继承的概念及定义1. 继承的概念2.继承的定义⭕定义格式⭕继承关系和访问限定符⭕继承基类成员访问方式的变化 二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员七、复杂的菱形继承及菱形虚拟继承⭕单…

解决 go mod tidy 加载模块超时

如果go mod tidy 加载模块超时 解决方法 修改GOPROXY: 查看go环境相关信息: go envgo env -w GOPROXYhttps://goproxy.cn

若依Cloud集成Flowable6.7.2

项目简介 基于若依Cloud的Jove-Fast微服务项目,集成工作流flowable(接上篇文章) 若依Cloud集成积木报表 项目地址:https://gitee.com/wxjstudy/jove-fast 后端 新建模块 目录结构如下: 引入依赖 前提:引入依赖之前先配置好maven的setting.xml &…

jmeter递增压测线程组配置

jmeter递增压测线程组配置 新建线程组线程组参数详解及填写其他指标设置 新建线程组 操作位置如图: 线程组参数详解及填写 其他指标设置 其他指标设置可参考另一篇文章: 链接: jmeter 在linux服务器中执行性能测试、监听服务器资源指标

skywalking服务部署

一、前言 Apache SkyWalking 是一个开源的分布式跟踪、监控和诊断系统,旨在帮助用户监控和诊断分布式应用程序、微服务架构和云原生应用的性能和健康状况。它提供了可视化的分析工具,帮助开发人员和运维团队深入了解应用程序的性能、调用链和异常情况 …

基于YOLOv8模型和DarkFace数据集的黑夜人脸检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要:基于YOLOv8模型和DarkFace数据集的黑夜人脸检测系统可用于日常生活中检测与定位黑夜下的人脸,利用深度学习算法可实现图片、视频、摄像头等方式的目标检测,另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目…

词向量及文本向量

文章目录 引言1. 文本向量化2. one-hot编码3. 词向量-word2vec3.1 词向量-基于语言模型 4 词向量 - word2vec基于窗口4.1 词向量-如何训练 5. Huffman树6. 负采样-negative sampling7. Glove基于共现矩阵7.1 Glove词向量7.2 Glove对比word2vec 8. 词向量训练总结9. 词向量应用9…

《剑指Offer》模块4 栈和队列

栈和队列 1. 用两个栈实现队列 原题链接 补充&#xff1a;copy(a,b) 把a赋值给b class MyQueue { public:/** Initialize your data structure here. */stack<int> stk, cache;MyQueue() {}/** Push element x to the back of queue. */void push(int x) {stk.push(x)…

UWB高精度人员定位系统源码,微服务+java+ spring boot+ vue+ mysql技术开发

工业物联网感知预警体系&#xff0c;大中小企业工业数字化转型需求的工业互联网平台 工厂人员定位系统是指能够对工厂中的人员、车辆、设备等进行定位&#xff0c;实现对人员和车辆的实时监控与调度的系统&#xff0c;是智慧工厂建设中必不可少的一环。由于工厂的工作环境比较…

基于微信小程序的餐厅预订系统的设计与实现(论文+源码)_kaic

摘 要 随着消费升级&#xff0c;越来越多的年轻人已经开始不再看重餐饮等行业的服务&#xff0c;而是追求一种轻松自在的用餐、购物环境。因此&#xff0c;无人餐厅、无人便利店、无人超市等一些科技消费场所应势而生。餐饮企业用工荒已成为不争的事实。服务员行业的低保障、低…

癌症预测新利器:弹性逻辑回归让健康更可控!

一、引言 癌症是全球范围内健康领域的重大挑战&#xff0c;早期预测和诊断对于提高治疗效果和生存率至关重要。在过去的几十年里&#xff0c;随着医学和数据科学的快速发展&#xff0c;基于机器学习和统计方法的癌症风险预测成为研究的热点。其中&#xff0c;弹性逻辑回归作为一…

注解和class对象和mysql

注解 override 通常是用在方法上的注解表示该方法是有重写的 interface 表示一个注解类 比如 public interface override{} 这就表示是override是一个注解类 target 修饰注解的注解表示元注解 deprecated 修饰某个元素表示该元素已经过时了 1.不代表该元素不能用了&…

【中危】Apache XML Graphics Batik<1.17 存在SSRF漏洞 (CVE-2022-44729)

zhi.oscs1024.com​​​​​ 漏洞类型SSRF发现时间2023-08-23漏洞等级中危MPS编号MPS-2022-63578CVE编号CVE-2022-44729漏洞影响广度极小 漏洞危害 OSCS 描述Apache XML Graphics Batik 是一个开源的、用于处理可缩放矢量图形(SVG)格式图像的工具库。 受影响版本中&#xff0…

足球- EDA的历史数据分析并可视化

足球- EDA的历史数据分析并可视化 背景数据介绍探索数据时需要遵循的一些方向:数据处理导入库数据探索 数据可视化赛事分析主客场比分相关性分析时间序列分析 总结 背景 该数据集包括从1872年第一场正式比赛到2023年的44&#xff0c;341场国际足球比赛的结果。比赛范围从FIFA世…

机器学习实战之模型的解释性:Scikit-Learn的SHAP和LIME库

概要 机器学习模型的“黑箱”困境 机器学习模型的崛起让我们惊叹不已&#xff01;不论是预测房价、识别图片中的猫狗&#xff0c;还是推荐给你喜欢的音乐&#xff0c;这些模型都表现得非常出色。但是&#xff0c;有没有想过&#xff0c;这些模型到底是如何做出这些决策的呢&a…

打破数据孤岛!时序数据库 TDengine 与创意物联感知平台完成兼容性互认

新型物联网实现良好建设的第一要务就是打破信息孤岛&#xff0c;将数据汇聚在平台统一处理&#xff0c;实现数据共享&#xff0c;放大物联终端的行业价值&#xff0c;实现系统开放性&#xff0c;以此营造丰富的行业应用环境。在此背景下&#xff0c;物联感知平台应运而生&#…

联合注入步骤

使用场景&#xff1a; 有回显&#xff0c;可以看到某些字段的回显信息 像下面的有具体的回显信息 一、判断注入位点 在原始的id&#xff08;参数&#xff09;的输入后面添加额外的条件 如果and 11 有结果&#xff0c;and10没有结果输出&#xff0c; 就说明我们添加的额外条件…

iOS App签名与重签名:从开发者证书到重新安装运行

前文回顾&#xff1a; iOS脱壳技术&#xff08;二&#xff09;&#xff1a;深入探讨dumpdecrypted工具的高级使用方法 iOS逆向&#xff1a;越狱及相关概念的介绍 在本文中&#xff0c;我们将详细介绍iOS应用的签名过程&#xff0c;包括开发者证书的种类、证书与App ID、Provisi…

CleanMyMac2024永久版Mac清理工具

Mac电脑作为相对封闭的一个系统&#xff0c;它会中毒吗&#xff1f;如果有一天Mac电脑产生了疑似中毒或者遭到恶意不知名攻击的现象&#xff0c;那又应该如何从容应对呢&#xff1f;这些问题都是小编使用Mac系统一段时间后产生的疑惑&#xff0c;通过一番搜索研究&#xff0c;小…