key value存储到底有什么优势?

news2024/11/24 10:44:26

昨天被问到Key value存储到底有什么优势,当然脑子也没太转过来。正好昨天学习了B树和LSM树的差别,并了解到LSM树底层是可以用sstable来实现的。sstable包含一个数据块列表和一个索引块,数据块存储有序键镇对,索引块存储所有数据块的范围。当时想当然的回答了一下LSM树更适合写优化的场景,而B树则更适合读优化的场景。

后来仔细想想,回答的完全偏了。参考对于“键值存储”的理解 一文,这里再记录一下吧,也给自己增加一些更深刻的概念。

首先,说一下传统的二维表结构,是由多个行和多个固定的列形成的一个二维矩阵。由于这个二维矩阵是固定的表格的形式,这意味着表格里面的每个值都需要给定一个内容,如果这个值没有,就需要赋值NULL。

如果我们业务模型是一个类似工业时序场景,数据并不是那种固定的二维表格形式,而是像下面这种方式入库,那么我们的表结构应该怎么设计呢?
在这里插入图片描述
如果我们设计为一张二维表格,那么如果这里的指标非常多,这张二维表格就会变得很宽,同时里面的数据会有很多的NULL值,这样会浪费大量的空间,因为存储时需要将没有数据的内容置为NULL(置为NULL也是需要消耗存储空间的)。当这样的数据量变的很大时,性能下降就会变的非常明显了。

那么key value存储是什么样的呢,我们以HBase为例(因为以为正好使用过HBase)。HBase的存储结构是这样的:

  • 每一行有一个唯一的key值(即下图中的RowKeyN)。
  • 每一行可以有多个Column Family(列族),每个Column Family下面又可以包含多个列。每个列由的数据由元数据(列名)、数据(列值)、时间戳(可能会有)组成。
    在这里插入图片描述

那么这种key value的存储结构它的好处是什么呢?

  1. 模式灵活。 因为不像关系模型中的二维表格是固定的模式,它是一种弱结构化数据,非常的灵活。一方面节点了空间,另一方面可以满足快速增加字段的需求。想想如果是关系模型的话,表里面有很多数据,然后要增加一个字段,所有的行都需要增加这个字段并且赋予一个NULL值或默认值。
  2. 点查询性能高。 key value存储里面的数据一般都是按key有序存储的,因此如果按给定的key进行点查询,将是非常快,这就类似于关系模型中的索引的功能。我们一般把key value数据库里面的这种表称为聚集索引(主索引),在这个表基础上增加的索引称为二级索引。
  3. 易扩展性。 包括HBase、TiDB、CRDB等数据库底层存储都是采用key value存储,他们都是分布式的产品。key value存储的简单性,使得它更容易进行拆分,进行分布式的存储。最基本的,我们根据key的范围,把数据分散在不同的节点上,以Region为单位进行存放,进而实现分布式存储和计算。
  4. 高可用性。 目前,业务很多基于kv存储的分布式数据库,为了保证高可用,结合Raft或Paxos等一致性协议,在写key value分片数据的时候会同时写多份,使用多数派的概念,更容易实现高可用性。而传统的关系数据库如Oracle、MySQL等,都是通过redolog或binlog日志流复制的方式来实现高可用性。

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

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

相关文章

navicate安装教程

Navicat是一款数据库管理工具,它支持多种数据库类型,包括MySQL、MariaDB、Oracle、SQL Server等。Navicat具有直观的图形用户界面和易于使用的功能,可以让用户轻松地管理和操作数据库。 首先,Navicat提供了一种简单的方法来连接到…

Linux gcc和make学习

文章目录 GCCgcc的安装gcc的工作流程 makefilemakefile的规则工作原理自动生成makefile的变量自定义变量预定义变量自动变量 模式匹配函数wildcard函数patsubst函数 伪声明 GCC gcc全程是(GNU compiler collection CNU编译器套件),是由GNU开发…

【汇编语言学习笔记】一、基础知识

引言 汇编语言是直接在硬件之上工作的编程语言,首先要了解硬件系统的结构,才能有效的应用汇编语言对其编程。 1.1机器语言 机器语言是机器指令的集合。 机器指令展开来讲就是一台机器可以正确执行的命令。 1.2汇编语言 汇编语言的主体是汇编指令。 …

2023年中国特高压绝缘子市场规模及特高压投资完成额统计[图]

绝缘子指一般由固体绝缘材料制成,安装在不同点位的导体之间或导体与接地构件之间,是同时起到电气绝缘和机械支撑作用的器件,绝缘子可分为瓷绝缘子、玻璃绝缘子与复合绝缘子。特高压绝缘子指用于交流1,000kV、直流800kV及以上电压等级的绝缘子…

基于SSM框架的安全教育平台

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

QT CmakeLists配置python

这是exe目录,要放到这里,要放到这里,要放到这里。 find_package(PythonLibs 3.6 REQUIRED) include_directories(${PYTHON_INCLUDE_DIRS})set(PY python/libs/) set(PY_LIBS ${PY}_tkinter ${PY}python3 ${PY}python36 ${PY}python36_d) targ…

1805_emacs org-mode的归档处理

全部学习汇总:GreyZhang/g_org: my learning trip for org-mode (github.com) 我使用org-mode其实很多年了,但是使用的org-mode功能非常少而且技术自然也是很浮于表面。很多org-mode本身的功能我了解不多,更谈不上能够掌握。就比如说通过org维…

【DRAM存储器十五】DDR介绍-关键技术之DLL和prefetch

👉个人主页:highman110 👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容 参考资料:《镁光DDR数据手册》 目录 DLL 预取 DDR SDRAM的几个新增时…

Centos下编译ffmpeg动态库

文章目录 一、下载ffmpeg安装包二、编译ffmpeg三、安装yasm 一、下载ffmpeg安装包 下载包 wget http://www.ffmpeg.org/releases/ffmpeg-4.4.tar.gz解压 tar -zxvf ffmpeg-4.4.tar.gz二、编译ffmpeg 进入解压的目录 cd ffmpeg-4.4编译动态库 ./configure --enable-shared…

MyBatisPlus之基本CRUD、常用注解

文章目录 前言一、MyBatisPlus简介1.简介2.特性 二、基本CRUD1.依赖2.搭建基本结构3.BaseMapper4.使用插入删除(1)通过id删除记录(2)通过id批量删除记录(3)通过map条件删除记录 修改查询(1&…

python 爬虫与协同过滤的新闻推荐系统 计算机竞赛

1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 python 爬虫与协同过滤的新闻推荐系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:4分 该项目较为新颖&…

opencv跨平台arm交叉编译之ubuntu

目录 1. 安装交叉编译工具链2. 安装依赖3. 配置工具链3.1 新建build目录3.2 安装cmake-gui3.3 工具链配置界面进行配置3.3.1 终端输入以下命令3.3.2 点击Configure,弹出编译方式选择对话框:3.3.3 点击Next3.3.4 点击Finish3.3.5 点击Configure。3.3.6 Ge…

SAP PP cs62 提示 输入更改号 - BOM 有历史需求

以上是业务操作人员的 账户 但是IT aLL 这边是warning 不是error 遂去查OSS suim 找 C_STUE_NOH权限对象 赋予权限后 解决了

交通物流模型 | T-GCN:用于交通流预测的时序图卷积网络

交通物流模型 | T-GCN:用于交通流预测的时序图卷积网络 为了同时捕获空间和时间依赖性,本文提出了一种新的基于神经网络的交通流预测方法——时间图卷积网络(T-GCN)模型,该模型将图卷积网络(GCN)和门控循环单元(GRU)相结合。具体来说,GCN用于学习复杂拓扑结构以获取空间相关…

SystemVerilog Assertions应用指南 第一章(1.22章节 and运算符)

1.22“and”构造 进制运算符“and”可以用来逻辑地组合两个序列。当两个序列都成功时整个属性才成功。两个序列必须具有相同的起始点,但是可以有不同的结束点。检验的起始点是第一个序列的成功时的起始点,而检验的结束点是使得属性最终成功的另一个序列成功时的点。 序…

接口自动化测试_L2

目录: 接口请求体-文件 文件上传接口场景使用 requests 如何上传接口请求体-form表单 ​​​​​​​什么是 FORM 请求如何使用?接口请求体-xml​​​​​​​xml响应断言 ​​​​​​​​​​​​​​什么是 XMLXML 断言XPath 断言XML 解析cookie处理…

网络安全渗透测试工具AWVS14.6.2的安装与使用(激活)

AWVS介绍 Acunetix Web Vulnerability Scanner(AWVS)是一款用于检测网站和Web应用程序中安全漏洞的自动化工具。它的主要功能包括: 漏洞扫描:AWVS能够自动扫描目标网站和Web应用程序,以发现各种安全漏洞,如…

水质在线监测解决方案:数据采集终端的应用

​ 随着社会的发展,河流、湖泊等水环境的保护日益受到关注。但是传统的人工采样检测水质的方法低效且监测数据不连续,无法实时全面掌握水质动态。采用水质在线监测系统,可以实时监测水质参数,并将数据通过无线网络实时传输,以便水务部门监控水质变化,并快速采取应对措施,保护水…

网工配置命令基础总结(2)----VRRP配置

目录 1.配置VRRP主备备份 2.配置VRRP负载分担 3.配置VRRP域BFD联动实现快速切换 VRRP 虚拟路由冗余协议 VRRP(Virtual Router Redundancy Protocol)通过把几台路由设备联合组成一台虚拟的路由设备,将虚拟网关设备的 IP 地址作为用户的默认…

推荐一款正在用的配音软件(免费)~

最近在做账号,遇到的最大的难题就是,口播的能力一般,用电脑收声以后,总有许多语气词,发音不标准或吞字的情况,而且念稿也是个非常消耗时间的事儿。身边的朋友给我推荐了悦音配音这款AI配音软件,…