当前位置: 首页 > news >正文

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

在这里插入图片描述

数据存储模型

专栏内容

  • 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
如有错误或者疏漏欢迎指出,互相学习。

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

相关文章:

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

数据存储模型 ​专栏内容: postgresql内核源码分析手写数据库toadb并发编程toadb开源库 个人主页:我的主页 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 概述 在数据库的发展过程中,关…...

K8S用户管理体系介绍

1 K8S账户体系介绍 在k8s中,有两类用户,service account和user,我们可以通过创建role或clusterrole,再将账户和role或clusterrole进行绑定来给账号赋予权限,实现权限控制,两类账户的作用如下。 server acc…...

实现chatGPT 聊天样式

效果图 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Chat Example</title&g…...

day9 STM32 I2C总线通信

I2C总线简介 I2C总线介绍 I2C&#xff08;Inter-Integrated Circuit&#xff09;总线&#xff08;也称IIC或I2C&#xff09;是由PHILIPS公司开发的两线式串行总线&#xff0c;用于连接微控制器及其外围设备&#xff0c;是微电子通信控制领域广泛采用的一种总线标准。 它是同步通…...

终极Shell:Zsh(CentOS7 安装 zsh 及 配置 Oh my zsh)

CentOS7 安装 zsh 及 配置 Oh my zsh 我们在通过Shell操作linux终端时&#xff0c;配置、颜色区分、命令提示大都达不到我们预期的效果或者操作较为繁琐。 今天就来介绍一款终极一个及其好用的类Linux系统中的终端软件,江湖称之为马车中的跑车,跑车中的飞行车,史称『终极 Shell…...

Redis的数据持久化

前言 本文主要介绍Redis的三种持久化方式、AOF持久化策略等 什么是持久化 持久化是指将数据在内存中的状态保存到非易失性介质&#xff08;如硬盘、固态硬盘等&#xff09;上的过程。在计算机中&#xff0c;内存中的数据属于易失性数据&#xff0c;一旦断电或重启系统&#…...

CSS 选择器

前言 基础选择器 以下是几种常见的基础选择器。 标签选择器&#xff1a;通过HTML标签名称选择元素。 例如&#xff1a; p {color: red; } 上述样式规则将选择所有<p>标签 &#xff0c;并将其文字颜色设置为红色。 类选择器&#xff1a;通过类名选择元素。使用类选择…...

上位机工作总结(2023.03-2023.08)

1.工作总结 不知不觉&#xff0c;已经从C#转为Qt开发快半年了。这半年内&#xff0c;也是学习了很多C相关的开发技能&#xff0c;同时自己的技术栈也是进一步丰富&#xff0c;以后跑路就更容易啦&#xff0c;哈哈&#xff01;自己之前就有Winform和一些简单的Qt项目实践&#…...

APSIM模型参数优化 批量模拟丨气象数据准备、物候发育和光合生产、物质分配与产量模拟、土壤水分平衡算法、土壤碳氮平衡模块、农田管理模块等

随着数字农业和智慧农业的发展&#xff0c;基于过程的农业生产系统模型在模拟作物对气候变化的响应与适应、农田管理优化、作物品种和株型筛选、农田固碳和温室气体排放等领域扮演着越来越重要的作用。APSIM (Agricultural Production Systems sIMulator)模型是世界知名的作物生…...

Azure防火墙

文章目录 什么是Azure防火墙如何部署和配置创建虚拟网络创建虚拟机创建防火墙创建路由表&#xff0c;关联子网、路由配置防火墙策略配置应用程序规则配置网络规则配置 DNAT 规则 更改 Srv-Work 网络接口的主要和辅助 DNS 地址测试防火墙 什么是Azure防火墙 Azure防火墙是一种用…...

【LeetCode】剑指 Offer Ⅱ 第4章:链表(9道题) -- Java Version

题库链接&#xff1a;https://leetcode.cn/problem-list/e8X3pBZi/ 类型题目解决方案双指针剑指 Offer II 021. 删除链表的倒数第 N 个结点双指针 哨兵 ⭐剑指 Offer II 022. 链表中环的入口节点&#xff08;环形链表&#xff09;双指针&#xff1a;二次相遇 ⭐剑指 Offer I…...

Android SDK 上手指南|| 第三章 IDE:Android Studio速览

第三章 IDE&#xff1a;Android Studio速览 Android Studio是Google官方提供的IDE&#xff0c;它是基于IntelliJ IDEA开发而来&#xff0c;用来替代Eclipse。不过目前它还属于早期版本&#xff0c;目前的版本是0.4.2&#xff0c;每个3个月发布一个版本&#xff0c;最近的版本…...

Vue--》打造个性化医疗服务的医院预约系统(七)完结篇

今天开始使用 vue3 + ts 搭建一个医院预约系统的前台页面,因为文章会将项目的每一个地方代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的GithHub上,大家可以自行去进行下载运行,希望本文章对有帮助的朋友们能多多关…...

点亮一颗LED灯

TOC LED0 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能APB2的外设时钟GPIO_InitTypeDef GPIO_Initstructure;GPIO_Initstructure.GPIO_Mode GPIO_Mode_Out_PP;//通用推挽输出GPIO_Initstructure.GPIO_Pin GPIO_Pin_5;GPIO_Initstructure.GPIO_Speed GPIO_S…...

SSH远程直连--------------Docker容器

文章目录 1. 下载docker镜像2. 安装ssh服务3. 本地局域网测试4. 安装cpolar5. 配置公网访问地址6. SSH公网远程连接测试7.固定连接公网地址8. SSH固定地址连接测试 在某些特殊需求下,我们想ssh直接远程连接docker 容器,下面我们介绍结合cpolar工具实现ssh远程直接连接docker容器…...

Python/Spring Cloud Alibaba开发--前端复习笔记(1)———— html5和css3.html基础

Python/Spring Cloud Alibaba开发–前端复习笔记&#xff08;1&#xff09;———— html5和css3.html基础 1)概述和基本结构 超文本标记语言。超文本指超链接&#xff0c;标记指的是标签。 基本结构&#xff1a; <!DOCTYPE html> 文档声明 <html lang”en”>…...

open cv学习 (十一)视频处理

视频处理 demo1 import cv2 # 打开笔记本内置摄像头 capture cv2.VideoCapture(0) # 笔记本内置摄像头被打开 while capture.isOpened():# 从摄像头中实时读取视频retval, image capture.read()# 在窗口中实时显示读取到的视频cv2.imshow("Video", image)# 等到用…...

函数栈帧理解

本文是从汇编角度来展示的函数调用&#xff0c;而且是在vs2013下根据调试展开的探究&#xff0c;其它平台在一些指令上会有点不同&#xff0c;指令不多&#xff0c;简单记忆一下即可&#xff0c;在我前些年的学习中&#xff0c;学的这几句汇编指令对我调试找错误起了不小的作用…...

【SA8295P 源码分析】70 - QAM8295P 原理图参考设计 之 DP、eDP 接口硬件原理分析

【SA8295P 源码分析】70 - QAM8295P 原理图参考设计 之 DP、eDP 接口硬件原理分析 一、DP 接口(Display Port)介绍二、高通参考硬件原理图分析2.1 高通 Display 接口框图介绍2.2 DP接口 Pin 定义介绍2.3 高通参考设计:DP2、DP3 硬件原理图2.4 高通参考设计:eDP0、eDP1 硬件…...

【CSS动画02--卡片旋转3D】

CSS动画02--卡片旋转3D 介绍代码HTMLCSS css动画02--旋转卡片3D 介绍 当鼠标移动到中间的卡片上会有随着中间的Y轴进行360的旋转&#xff0c;以下是几张图片的介绍&#xff0c;上面是鄙人自己录得一个供大家参考的小视频&#x1f92d; 代码 HTML <!DOCTYPE html>…...

PUMA560轨迹规划踩坑记:DH参数选错,你的仿真结果还准吗?

PUMA560轨迹规划实战&#xff1a;从DH参数陷阱到精准运动控制 第一次在MATLAB中看到PUMA560机械臂的末端执行器画出诡异的"8"字轨迹时&#xff0c;我盯着屏幕足足愣了三分钟。按照教科书上的标准DH参数编写的代码&#xff0c;理论上应该生成完美的直线运动&#xff0…...

Llama-3.2V-11B-cot从零部署:Docker镜像运行与端口映射详解

Llama-3.2V-11B-cot从零部署&#xff1a;Docker镜像运行与端口映射详解 1. 项目概述 Llama-3.2V-11B-cot是基于Meta Llama-3.2V-11B-cot多模态大模型开发的高性能视觉推理工具。它针对双卡4090环境进行了深度优化&#xff0c;特别适合想要体验Llama多模态大模型但缺乏专业部署…...

SmartBMS:革新性开源智能电池管理系统技术解析

SmartBMS&#xff1a;革新性开源智能电池管理系统技术解析 【免费下载链接】SmartBMS Open source Smart Battery Management System 项目地址: https://gitcode.com/gh_mirrors/smar/SmartBMS 破解锂电池管理行业痛点&#xff1a;从安全隐患到性能瓶颈 在新能源技术飞…...

DML实战:价格弹性预测的经济学与机器学习融合之道

1. 价格弹性预测&#xff1a;经济学与机器学习的碰撞 第一次听说价格弹性还能用机器学习预测时&#xff0c;我的反应和大多数经济学背景的同事一样&#xff1a;"这不就是个回归问题吗&#xff1f;"直到亲眼看到某电商平台用DML模型把促销预算节省了23%&#xff0c;才…...

Deformable-DETR环境配置避坑:如何正确设置CUDA_HOME解决ms_deformable_im2col_cuda报错

Deformable-DETR环境配置实战&#xff1a;从CUDA路径排查到高效编译 当你第一次尝试运行Deformable-DETR这个强大的目标检测框架时&#xff0c;是否也遇到了那个令人头疼的报错&#xff1a;"error in ms_deformable_im2col_cuda: no kernel image is available for execut…...

SRAM vs ReRAM vs Flash:一张表看懂不同存内计算芯片的优缺点与选型指南

SRAM vs ReRAM vs Flash&#xff1a;存内计算芯片技术选型全景指南 在AI算力需求爆炸式增长的今天&#xff0c;传统冯诺依曼架构的"内存墙"瓶颈日益凸显。存内计算技术通过将计算单元嵌入存储阵列&#xff0c;彻底打破了数据搬运的能耗桎梏。根据最新行业报告&#x…...

Mplus实战:如何用随机截距交叉滞后模型(RI-CLPM)分析心理学纵向数据?

Mplus实战&#xff1a;随机截距交叉滞后模型&#xff08;RI-CLPM&#xff09;在心理学纵向研究中的深度应用 心理学研究中&#xff0c;我们常常需要探索变量间的动态相互作用——比如焦虑和睡眠问题如何相互影响&#xff1f;传统交叉滞后模型&#xff08;CLPM&#xff09;虽然广…...

深入解析:高级 Android 开发工程师职位与面试全攻略

引言:移动互联网时代的核心力量 在当今移动互联网蓬勃发展的时代,智能手机已成为人们日常生活中不可或缺的一部分。作为连接用户与数字服务的桥梁,移动应用扮演着至关重要的角色。而在移动应用的生态中,Android 系统凭借其开放性和庞大的用户基础,占据了全球移动操作系统…...

Python子解释器隔离全解密(从PyThreadState到_PyInterpreterState):20年源码级剖析,首次公开CPython内部隔离边界图谱

第一章&#xff1a;Python子解释器隔离的演进脉络与核心挑战Python长期以来依赖全局解释器锁&#xff08;GIL&#xff09;保障线程安全&#xff0c;但这也限制了真正的并行执行能力。为突破这一瓶颈&#xff0c;CPython自3.12起正式引入子解释器&#xff08;subinterpreters&am…...

企业级流程建模前端架构:基于Vite+Vue3的低代码解决方案

企业级流程建模前端架构&#xff1a;基于ViteVue3的低代码解决方案 【免费下载链接】vite-vue-bpmn-process 基于 Vite TypeScript Vue3 NaiveUI Bpmn.js 的流程编辑器&#xff08;前端部分&#xff09;。支持高度自定义&#x1f680;&#x1f680;&#x1f680;。Vue 2 版本…...