技术解读数据库如何实现“多租户”?

· 浏览次数 : 0

小编点评

本文介绍了数据库多租技术在华为云社区《【GaussTech速递】技术解读之GaussDB多租技术》中的分享。数据库多租技术旨在实现多个租户共享物理资源,从而降低硬件成本和运维成本,提高资源利用效率。文章主要讨论了数据库内核多租技术的特点和应用场景。 1. 隔离性:GaussDB多租架构采用PDB(可插拔数据库)实现数据的隔离,确保租户数据的安全和隐私。每个PDB包含独立的表、索引等对象数据,以及其他属性,如用户、角色、表空间等。 2. 资源管理:PDB资源的分配与变更由GaussDB内核管理,不依赖外部组件。每个PDB可以设置自己的资源规格,包括CPU、内存和IO。GaussDB支持多个资源计划,实现一键切换所有PDB资源规格的能力。 3. 实例发放:GaussDB内核多租技术的实例发放效率领先于其他多租技术。通过几个SQL语句即可完成PDB的创建、打开、关闭和删除操作,实现秒级实例发放。 4. 规格配置:GaussDB支持1U(1个CPU)级别的PDB规格,满足更多客户场景需求。后续计划支持1U4G的PDB规格。 5. 支持PDB关闭:对于不需要的数据库业务,GaussDB支持关闭该业务的PDB并释放资源,实现节约成本。 6. WDR报告:GaussDB在WDR报告中适配多租特性,方便DBA了解指定时间段内PDB级别的系统资源使用情况和数据库运行情况,进行相应的运维处理。 总之,GaussDB内核提供的多租技术特性,在安全隔离的前提下,具备更高的资源利用效率、更快的实例发放效率和资源变更效率。同时,将租户相关的信息集成到WDR报告中,提升了客户运维的便利性。

正文

本文分享自华为云社区《【GaussTech速递】技术解读之GaussDB多租技术》,作者:GaussDB数据库。

数据库多租技术介绍

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

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

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

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

数据库内核多租,是由数据库内核提供的多租户特性。相比于虚拟机多租和容器多租,内核多租没有虚拟化管理层、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报告中,可以提升了客户运维的便利性。因此,客户可根据自身企业的组织结构,匹配相应的多租户配置,更高效地利用现有资源,为企业节约成本。

 

点击关注,第一时间了解华为云新鲜技术~

 

与技术解读数据库如何实现“多租户”?相似的内容:

技术解读数据库如何实现“多租户”?

本文分享自华为云社区《【GaussTech速递】技术解读之GaussDB多租技术》,作者:GaussDB数据库。 数据库多租技术介绍 随着云计算时代的到来,多租户的概念也逐渐广为人知。“多租户”使得租户之间可以共享物理资源,能够帮助用户节约硬件成本和运维成本,提高资源利用效率。同时,在实现的过程中,

深入了解 GPU 互联技术——NVLINK

随着人工智能和图形处理需求的不断增长,多 GPU 并行计算已成为一种趋势。对于多 GPU 系统而言,一个关键的挑战是如何实现 GPU 之间的高速数据传输和协同工作。然而,传统的 PCIe 总线由于带宽限制和延迟问题,已无法满足 GPU 之间通信的需求。为了解决这个问题,NVIDIA 于 2018 年

如何解决过度拟合

更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流。 为何产生过度拟合 我们在做数据分析建模,或是量化策略回测的过程中,会模型在训练时过度拟合了历史数据(回测),导致在新数据上的预测(实盘)效果不佳。造成这种现象有以下几种原因: 一是这可能是因为模型过于复杂

京东云开发者|经典同态加密算法Paillier解读 - 原理、实现和应用

随着云计算和人工智能的兴起,如何安全有效地利用数据,对持有大量数字资产的企业来说至关重要。同态加密,是解决云计算和分布式机器学习中数据安全问题的关键技术,也是隐私计算中,横跨多方安全计算,联邦学习和可信执行环境多个技术分支的热门研究方向。 本文对经典同态加密算法Pailier算法及其相关技术进行介绍,重点分析了Paillier的实现原理和性能优化方案,同时对基于公钥的加密算法中的热门算法进行了横向

Vitess全局唯一ID生成的实现方案

为了标识一段数据,通常我们会为其指定一个唯一id,比如利用MySQL数据库中的自增主键。 但是当数据量非常大时,仅靠数据库的自增主键是远远不够的,并且对于分布式数据库只依赖MySQL的自增id无法满足全局唯一的需求。因此,产生了多种解决方案,如UUID,SnowFlake等。下文将介绍Vitess是如何解决这个问题的。

万字长文详述ClickHouse在京喜达实时数据的探索与实践

在引入ClickHouse过程中经历各种困难,耗费大量精力去探索并一一解决,在这里记录一下希望能够给没有接触过ClickHouse的同学提供一些方向上的指引避免多走弯路,如果文中有错误也希望多包含给出指点,欢迎大家一起讨论ClickHouse相关的话题。本文偏长但全是干货,请预留40~60分钟进行阅读。

零知识证明与同态加密:隐私计算的双剑

在数字时代,隐私保护已成为全球关注的焦点。隐私计算作为解决数据隐私问题的关键技术,其核心目标是在不泄露个人或敏感信息的前提下,实现数据的计算和分析。在这一领域,零知识证明和同态加密扮演着至关重要的角色。本文将深入探讨这两种技术如何在隐私计算中发挥作用,以及它们之间的异同。

“事后达尔文”—— 游戏业务效果评估方法实践

本文介绍了互联网业务数据效果评估的几种常见问题及方法,并基于分层抽样的逻辑优化出一套可应用于解决用户不均匀的“事后达尔文"分析法,可适用于无法ab测试或人群不均匀的ab测试等场景下的效果评估中,本文会基于实际应用案例,来给大家仔细阐述相关方法模型的思考过程,实现原理,应用结果,希望能够帮助大家,如果能对大家在各自领域中的业务效果评估有所助益的话,那就更棒了!

Kubernetes 数据存储:从理论到实践的全面指南

本文深入解析 Kubernetes (K8S) 数据存储机制,探讨其架构、管理策略及最佳实践。文章详细介绍了 K8S 数据存储的基础、架构组成、存储卷管理技巧,并通过具体案例阐述如何高效、安全地管理数据存储,同时展望了未来技术趋势。 关注【TechLeadCloud】,分享互联网架构、云服务技术的全

Thanos解码:打造企业级云原生监控解决方案

本文深入探讨了Thanos技术在云原生监控领域的应用,详细介绍了Thanos的基本概念、核心组件、安装配置步骤以及一个实战案例,帮助读者理解如何利用Thanos解决大规模监控数据的存储、查询和高可用性问题。 关注作者,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研