在数据库领域是如何实现“多租户”的呢?

数据库多租技术介绍

随着云计算时代的到来,多租户的概念也逐渐广为人知。“多租户”使得租户之间可以共享物理资源,能够帮助用户节约硬件成本和运维成本,提高资源利用效率。同时,在实现的过程中,考虑到共享带来的安全、隔离等问题以及后续业务面临的扩展需求,“多租户”在隔离性和扩展性方面也进行了相应的设计实现。

那么,在数据库领域是如何实现“多租户”呢?

业界有虚拟机多租、容器多租、数据库内核多租等多种技术可以实现多租户。

虚拟机多租和容器多租,顾名思义就是在一台物理服务器上部署多个虚拟机或者容器,然后在虚拟机或者容器内进行数据库服务的部署。这类技术方案在安全性和隔离性方面具有天然的优势。

数据库内核多租,是由数据库内核提供的多租户特性。相比于虚拟机多租和容器多租,内核多租没有虚拟化管理层、OS(Operating System,简称操作系统)层、数据库公共层的额外开销,而且底噪小,在资源整合、资源的弹性伸缩等方面具备天然优势。数据库内核多租通过将数据库内核语义与成熟的资源隔离技术栈相整合,实现更高的Scale-Down(缩容)能力,极大地提升了数据库在计算资源方面的利用率。

GaussDB支持被部署在虚拟机或者容器内,给客户提供整体虚拟机/容器多租的解决方案,同时也提供了数据库内核多租特性,满足客户不同业务场景的需求。

  • 在客户资金充裕,且对资源的隔离性、可靠性等要求更高的场景下,可以选择虚拟器/容器多租方案;
  • 在客户投入有限,需要更大力度利用现有资源的场景下,可以选择GaussDB数据库内核提供的多租方案。

本文将对GaussDB数据库内核集中式场景下提供的多租技术进行重点介绍。

GaussDB多租架构

GaussDB多租是指在一个数据库实例中划分出多个逻辑处理单元,我们称这个逻辑单元为PDB(pluggable database),每个PDB具备物理数据库的绝大多数能力,同时相互隔离。

在数据库初始化时,会生成一个template pdb作PDB创建的模板。

集群内可以创建多个资源计划,每个资源计划下挂载多个plan directive,每个plan directive对应一个PDB,PDB通过plan directive配置自己的资源规格,包括CPU、内存、IO等。

1.png

图1 GaussDB多租架构

一个PDB归属于一个独立的业务或公司。独立的业务或公司可以连接到自己的PDB运行数据库业务。

GaussDB多租技术特点

1.隔离性

多租户架构的目的是为了让多用户或者多业务使用同一套数据库集群,PDB数据的隔离性是实现该架构的基础。

假设同一个公司的两个业务共享同一个数据库实例,业务A的相关数据可以被业务B查看,这是完全不可接受的行为。

GaussDB数据库的PDB之间数据完全隔离,实现租户数据完全独立、互不干扰,保障租户数据的安全隐私:

(1)每个PDB除了有自己的表、索引等对象数据,也有自己的用户、角色、表空间以及定时任务等对象。

(2)除了数据库对象,PDB的其它属性也完全隔离。比如:每个PDB有独立的兼容模式、线程组、GUC配置参数等。

2.png

图2 PDB之间数据完全隔离

PDB之间数据互相隔离,但用户业务开发并不需要感知是使用了一个PDB还是一个物理实例,对用户业务开发来说,使用PDB和使用物理实例的操作没有区别。

2.PDB粒度的资源管理

PDB资源的分配与变更由GaussDB内核接管,并不依赖任何外部组件。每个PDB可以设置自己的资源规格,包括CPU、内存以及IO。

GaussDB内核通过资源计划管理所有PDB的资源,每个资源计划包含了多个资源计划指令,每个资源计划指令设置了一个PDB的资源规格。

上层可以调用资源计划高级包接口,完成资源的分配与变更。系统中可以有多个资源计划,可以通过资源计划的切换,做到一键切换所有PDB资源规格的能力。

3.png

图3 PDB资源的变更和切换

每个PDB的资源使用由GaussDB内核中的资源管理模块管理。相较于将资源分配交由外部组件(虚拟机,容器等)管理,GaussDB通过实现数据库内核的自主资源分配,在保证租户资源按照配额公平使用的前提下,也可获得以下优势:

(1)提高资源利用率:租户间的后台工作整合,通过合理的调度算法,最大限度地利用系统空闲资源。

(2)内核感知资源分配,根据资源分配情况,动态调整CPU占比,内存大小以及线程池、连接池等资源,最终获得更优的整体表现。

(3)在物理机资源充足的情况下,PDB的资源变更通过SQL语句即可完成,实现资源秒级变更,业务无感知。

相比而言,目前云上虚拟机的规格变更耗费时间较长,需要先变更备机,然后主备倒换,然后进行其他变更操作,端到端时间约为:(虚拟机关机 + IaaS资源调度+新虚拟机开机+数据库拉起)X 数据库节点个数。

(4)内核中所有PDB公用一套系统资源,有效的减少了内核底噪的资源占用。

3.实例发放

GaussDB内核多租技术的实例发放效率领先于其他的多租技术。

以虚拟机多租为例,虚拟机实例的发放需要先申请一定规格的虚拟机,然后再部署GaussDB集群,需要消耗10-30分钟或者更多的时间。

而GaussDB内核多租技术,内核中管理了PDB的创建/打开/关闭/删除。在物理机上部署GaussDB的基础上,使用几个SQL语句即可完成这些操作,秒级时间内即可实现实例的发放。

4.GaussDB多租规格配置

GaussDB多租支持的PDB规格配置见下表:

可以看到,GaussDB支持1U(1个CPU)级别的PDB规格,而当前虚拟机多租和容器多租一般只能提供8U级别的商用规格。这是因为:

  • 数据库中通常存在很多后台任务以及运维任务,需要维护整个集群的正常运行。

以GaussDB为例,存在auto vacuum、慢/全量SQL收集等后台任务。

  • 数据库管控层的实例指标监控也需要连接到数据库收集信息。

例如TPS,QPS等。

这些任务都需要消耗CPU,故虚拟机/容器实例做到更小规格(例如2U)基本不太可能。而内核多租是在GaussDB进程中划分了多个逻辑实例,所有逻辑实例共享同一份后台任务,管控的指标监控连接一次就可以收集到所有PDB的数据,大大减少了数据库底噪,因此内核多租可以很好的支持1U逻辑实例的发放。

另外,GaussDB后续会继续优化PDB规格。比如,后续计划支持1U4G的PDB规格,以满足更多客户场景的需求。

5.支持PDB关闭

对于不需要一直运行的数据库业务,GaussDB支持关闭该业务的PDB并释放资源。关闭PDB非常简单,内核中只需要执行语句:ALTER PLUGGABLE DATABASE [pdbname] CLOSE语句即可。

PDB关闭即意味着业务无法连接到这个逻辑实例,用户可以释放PDB的CPU、内存、IO资源,对不使用的资源不计费,实现节约成本。

6.WDR报告中PDB相关增强

GaussDB在WDR(Workload Diagnosis Report 负载诊断报告)工具中适配了多租特性,可在WDR报告中查看PDB信息,以及PDB级别的SQL Statistics等性能数据视图。

(1)WDR报告中的PDB信息章节

5.png

(2)WDR报告SQL统计信息章节

如下图所示,细化的统计信息中添加了“DB Name列”,PDB归属信息会显示在该列。

6.png

(3)SQL Detail和Object Stats等章节中也添加了PDB信息,在此不一一列举。

添加了PDB信息的WDR报告,可方便DBA了解指定时间段内PDB级别的系统资源使用情况以及数据库运行情况,进行相应的运维处理。

总结

GaussDB内核提供的多租技术特性,在安全隔离的前提下,具备更高的资源利用效率,更快的实例发放效率和资源变更效率。同时将租户相关的信息集成到WDR报告中,可以提升了客户运维的便利性。因此,客户可根据自身企业的组织结构,匹配相应的多租户配置,更高效地利用现有资源,为企业节约成本。

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

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

相关文章

【单片机毕业设计选题24031】-基于STM32的智能手环设计

系统功能: 使用12864OLED液晶屏显示当前的步数,温度值,心率和报警值,单位是心率/分钟设置步长,测量里程;可以设置温度心率的上下限报警值,设置、加、减;用红外传感器XL01实现心率的测量&#x…

华为云x86架构下部署mysql

华为云x86架构下部署mysql 1. 配置X86架构ESC2. 查看本系统中有没有安装mariadb相关的组件,有则卸载3. 安装mysql4. 启动mysql5. 登录MySQL,修改密码,开放访问权限 1. 配置X86架构ESC 2. 查看本系统中有没有安装mariadb相关的组件&#xff0c…

拥抱数字化未来,如何以费控驱动业务发展?

管理费用是企业运营中仅次于人力成本的第二大可控成本,一般会占到企业年度收入的5%—10%,但多数企业存在费用疏于管理、费用管理制度流于纸面难落地、费用浪费严重等问题。 如果不进行科学管理,有专家表示,估计企业每年至少有10%的…

Java家教系统小程序APP公众号h5源码

让学习更高效,更便捷 🌟 引言:家教新选择,小程序来助力 在快节奏的现代生活中,家长们越来越注重孩子的教育问题。然而,如何为孩子找到一位合适的家教老师,成为了许多家长头疼的问题。现在&…

Flutter笔记(一)- 安装和配置Flutter

一、下载Flutter 访问网址:https://docs.flutter.dev/get-started/install?hlzh-cn 根据电脑所使用的操作系统的平台进行选择。笔者电脑的操作系统为Windows,因此选择如图1-1的Windows图片: 图1-1 Flutter网站(一) …

controller不同的后端路径对应vue前端传递数据发送请求的方式

目录 案例一: 为什么使用post发送请求,参数依旧会被拼接带url上呢?这应该就是param 与data传参的区别。即param传参数参数会被拼接到url后,data会以请求体传递 补充:后端controller 参数上如果没写任何注解&#xff0c…

Vue3抽屉(Drawer)

效果如下图:在线预览 APIs 参数说明类型默认值必传width宽度,在 placement 为 right 或 left 时使用string | number378falseheight高度,在 placement 为 top 或 bottom 时使用string | number378falsetitle标题string | slotundefinedfalse…

sheng的学习笔记-hive框架原理

需要学习的前置知识:hadoop 可参考 sheng的学习笔记-hadoop-CSDN博客 相关网址 官网:http://hive.apache.org 文档:https://cwiki.apache.org/confluence/display/Hive/GettingStarted https://cwiki.apache.org/confluence/display/Hive/…

FPGA SATA高速存储设计

今天来讲一篇如何在fpga上实现sata ip,然后利用sata ip实现读写sata 盘的目的,如果需要再速度和容量上增加,那么仅仅需要增加sata ip个数就能够实现增加sata盘,如果仅仅实现data的读写整体来说sata ip设计比较简单,下面…

华为开发者调试工具使用介绍(MDC)

MDC的开发过程的三大工具:MMC、MDS、Mind Studio,这三个工具完成了开发过程中的配置文件编写、代码编写以及AI模型的开发三个任务。除了开发,MDC还准备了两个调试工具,用于使用过程中数据的查看等。这一些调试工具分别对映射MDC中…

Claude走向开放

Claude的愿景一直是创建能够与人们协同工作并显著提升他们工作流程的人工智能系统。朝着这一方向迈进,Claude.ai的专业版和团队版用户现在可以将他们的聊天组织到项目中,将精选的知识和聊天活动整合到一个地方,并且可以让团队成员查看他们与C…

Redis发布、订阅模式(Pub/Sub)详解

Redis发布、订阅模式(PUB-SUB)详解 Redis的发布订阅(Pub/Sub)机制是一种消息通信模式,用于消息的广播。它允许多个客户端订阅(Subscribe)特定的频道(Channel)&#xff0c…

【unity笔记】八、Unity人物动画介绍

一、效果预览 本内容仅介绍为unity场景中的任务添加简单的动画效果。 二、小试牛刀 2.1 插件准备 在unity 中导入人物模型。常使用的免费人物模型和动画模型有Robot Kyle,Unity-Chan! Model,Basic Motions FREE。 其中Robot Kyle仅支持URP渲染。如…

喂饭级AI神器!免代码一键绘制图表,文本数据秒变惊艳视觉盛宴!

由于目前的AI生成图表工具存在以下几个方面的问题: 大多AI图表平台是纯英文,对国内用户来说不够友好;部分平台在生成图表前仍需选择图表类型、配置项,操作繁琐;他们仍需一份规整的数据表格,需要人为对数据…

盲源信道分离—FastICA算法性能仿真

本案例中使用Matlab软件对FastICA算法的声音分离性能进行了仿真,分别对简单波形的混合信号、不同类型声音的混合信号、同一类型的混合信号这三种情况进行仿真,主要从分离信号的波形形状、串音误差两方面对分离性能进行衡量,仿真结果显示快速I…

APP 自动化测试框架如何设计?

自动化测试框架是为了增强测试效率和准确性而设计的工具。它可以帮助开发人员和测试人员在软件开发周期中自动执行各种测试任务。在本文中,我们将从零开始详细介绍如何设计一个自动化测试框架。 1. 确定测试需求: 在设计测试框架之前,首先需…

AMSR-E/Aqua 第 3 级全球地表土壤水分月平均值 V005 (AMSRE_AVRMO)

AMSR-E/Aqua level 3 global monthly Surface Soil Moisture Averages V005 (AMSRE_AVRMO) at GES DISC AMSR-E/Aqua level 3 global monthly Surface Soil Moisture Standard Deviation V005 (AMSRE_STDMO) at GES DISC 简介 GES DISC 的 AMSR-E/Aqua 第 3 级全球地表土壤水…

springboot + Vue前后端项目(第十九记)

项目实战第十九记 写在前面1. redis安装(windows安装)1.1 获取软件链接地址:1.2 启动redis1.3 测试是否启动成功1.4 通过 Another Redis DeskTop软件可视化查看redis 2. SpringBoot集成redis2.1 引入依赖2.2 注入RedisTemplate2.3 使用redis2.4 redis更新2.5 redis使…

Charles 忽略IP授权 Allow 弹窗

当有新的设备连接到 Charles 时,会出现如下弹框确认是否允许,如果希望允许所有客户端连接不再有提示,可以通过添加模糊IP规则来实现。 配置方法:Proxy > Access Control Settings 中添加 0.0.0.0/0 和 ::/0 即可,…

从0到1实现LLM学习笔记附录B(GPT-4o翻译版)

来源:https://github.com/rasbt/LLMs-from-scratch?tabreadme-ov-file https://www.manning.com/books/build-a-large-language-model-from-scratch