mppdbLibra

article/2025/9/27 12:55:23

1:三种数据库架构、特征、应用

数据库架构中shared-nothing等三个之间的优缺点)
1.shared-everything
一般是针对单个主机,完全透明共享CPU/MEMORY/IO,并行处理能力是最差的,典型的代表是SMP技术
2.Shared-Disk:
各个处理单元使用自己的私有 CPU和Memory,共享磁盘系统。典型的代表Oracle RAC, 它是数据共享,可通过增加节点来提高并行处理的能力,扩展能力较好。其类似于SMP(对称多处理)模式,但是当存储器接口达到饱和的时候,增加节点并不能获得更高的性能?。
3.Shared-Nothing:
各个处理单元都有自己私有的CPU/内存/硬盘等,不存在共享资源,类似于MPP(大规模并行处理)模式,各处理单元之间通过协议通信,并行处理和扩展能力更好。典型代表Greenplum、Vertica,各节点相互独立,各自处理自己的数据,处理后的结果可能向上层汇总或在节点间流转。

2:数据库锁机制:

表级锁模式

ACCESS SHARE只与“ACCESS EXCLUSIVE” 锁模式冲突;查询命令(Select command)将会在它查询的表上获取”Access Shared” 锁,一般地,任何一个对表上的只读查询操作都将获取这种类型的锁。

ROW SHARE与”Exclusive’和”Access Exclusive”锁模式冲突;”Select for update”和”Select for share”命令将获得这种类型锁,并且所有被引用但没有 FOR UPDATE 的表上会加上”Access shared locks”锁。

ROW EXCLUSIVE
与 “Share,Shared roexclusive,Exclusive,Access exclusive”模式冲突;“Update,Delete,Insert”命令会在目标表上获得这种类型的锁,并且在其它被引用的表上加上”Access shared”锁,一般地,更改表数据的命令都将在这张表上获得”Row exclusive”锁。

SHARE UPDATE EXCLUSIVE
”Share update exclusive,Share,Share row ,exclusive,exclusive,Access exclusive”模式冲突,这种模式保护一张表不被并发的模式更改和VACUUM;
“Vacuum(without full), Analyze ”和 “Create index concurrently”命令会获得这种类型锁。

SHARE
与“Row exclusive,Shared update exclusive,Share row exclusive ,Exclusive,Access exclusive”锁模式冲突,这种模式保护一张表数据不被并发的更改;
“Create index”命令会获得这种锁模式。

SHARE ROW EXCLUSIVE与“Row exclusive,Share update exclusive,Shared,Shared row exclusive,Exclusive,Access Exclusive”锁模式冲突;任何Postgresql 命令不会自动获得这种锁。

EXCLUSIVE
与” ROW SHARE, ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE, ACCESS EXCLUSIVE”模式冲突,这种索模式仅能与Access Share 模式并发,换句话说,只有读操作可以和持有”EXCLUSIVE”锁的事务并行;任何Postgresql 命令不会自动获得这种类型的锁;

ACCESS EXCLUSIVE

与所有模式锁冲突(ACCESS SHARE, ROW SHARE, ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE, and ACCESS EXCLUSIVE),这种模式保证了当前只有一个事务访问这张表;“ALTER TABLE, DROP TABLE, TRUNCATE, REINDEX, CLUSTER, VACUUM FULL” 命令会获得这种类型锁,在Lock table 命令中,如果没有申明其它模式,它也是缺省模式。

3:ACID事物隔离级别

事务:数据库中访问并可能更新数据库中数据项的程序执行单元。
Acid:原子性、一致性、隔离性、持久性
二阶段提交:预提交+最终提交
有一个节点提交则事务提交,有一个取消则回滚。

支持的隔离级别是读已提交和读未提交。可重复读和可串行化没从语法上静止,但是和读已提交一样的隔离效果。

脏读:一个事务读取了另一个未提交事务写入的数据
不可重复读:一个事务重新读取之前读取过的数据,结果发现该数据已经修改
幻读:多查几次,结果变了,因为数据变了。
隔离级别:

默认:读已提交。
怎么解决幻读?可串行化?

4:Libra如何保证数据库安全

1:添加白名单(pg_hba.conf),指定用户名,ip,数据库
2:角色和用户
3:基于角色的权限管理模型
4:对象权限:表,数据库,模式,表空间,函数
5:审计日志

a) 网络隔离
双平面
b) 主机安全
操作系统内核安全加固
更新操作系统最新补丁
操作系统权限控制
操作系统端口管理
操作系统协议与端口防攻击
c) 应用安全
d) 安全认证
基于用户和角色的认证统一体系
单点登录
审计
统一证书管理功能

5:LibrA的逻辑架构,各个部分的作用

在这里插入图片描述
名称 描述
MPPDBServer(CM) 负责管理和监控分布式系统中各个功能单元和物理资源的运行情况。CM分为主CM和备CM。
CM服务由CMServer、CMAgent、Monitor组成。
CMServer是整个LibrA集群的大脑,它会根据CMAgent上报上来的各MPPDBServer状态信息来决定是否需要状态变更。CMServer只部署在主备CM上。
CMAgent是MPPDBServer上面部署的实例代理线程,负责接收CMServer下发的命令和上报MPPDBServer的Coordinator、Datanode、GTM的状态给CMServer。每个MPPDBServer均会部署一个CMAgent,也包括主备CM和主备GTM。
Monitor是watchdog定时任务,其唯一的任务是在CMAgent停止的情况下将CMAgent重启。每个MPPDBServer均会部署一个Monitor,也包括主备CM和主备GTM。
MPPDBServer(GTM) 全局事务管理模块GTM(Global Transaction Manager),负责生成和维护全局事务ID、事务快照、时间戳等需要全局唯一的信息。GTM分为主GTM和备GTM。
MPPDBServer 业务模块,由Coordinator及多个Datanode组成,负责执行CM、GTM下发的任务。
Coordinator 负责提供外部应用接口、优化全局执行计划、向Datanode分发执行计划,以及汇总、处理执行结果。
Datanode 负责存储业务数据、执行数据查询任务以及向Coordinator返回执行结果。
Datanode实例分为主Datanode实例、备Datanode实例和从备Datanode实例,它们之间的工作原理如下:
主、备实例间可以正常同步数据时,主实例不会同步数据到从备实例。
主、备实例间无法正常同步数据时,主实例会将数据同步到从备实例。
主、备实例间数据同步恢复正常后,主实例会将异常期间的数据同步到备实例上,并在完成后知会从备实例清空之前同步的这部分数据。备实例同步主实例数据期间,如果主实例发生故障不可用,备实例将升为主实例,并在升为主实例成功后从备实例上同步之前异常期间的数据。
备需要同步主的数据,且主备failover,从备与备failover。
Storage 服务器的本地存储资源,持久化存储数据(支持行存、列存、混合存储)。
WLM 负载管理

6:LibrA是怎样实现数据分布的?

1.列存储和行存储
a.LibrA 可以指定两种表数据存储方式, 即行存或者列存, 其值为
COLUME, 则表的数据将于列存储, 其值为 ROW, 则表的数据将于
行式存储。 若不指定, 则其默认值为 ROW。
b.行形式存储适合于 OLTP 业务, 此类型的表上交互式事务比较多,
一次交互会涉及表中的多个列, 总行存储查询率较高。
c.列存储适合于数据仓库业务, 此类型的表上会做大量的汇聚计算,
且涉及的列操作较少

2.数据分布式存储:散列、hash
3.数据分区

7:sql调优

Explain

8:数据库的六种备份恢复方式

1:gds场景以及使用方法
大批量数据导入/导出,单节点几十兆每秒,启动服务,创建外表,导入数据,分析错误表
增量数据导出:启动服务,创建外表,导入数据,添加到定时执行器

2:copy from/to 使用场景和方法
小批量数据导入/导出,以及查询结果集导出,整个集群15兆每秒,导入导出走的cn,所以性能差。

3:开源etl工具使用场景和方法
小数据量导入导出,整个集群几百kb。
先用kettle导出,在用gds导入,或者直接工具抽取

4:gs_dump和gs_restore使用场景和方法
数据库元数据备份和恢复,导出整个数据库对象的定义,恢复整个数据库对象定义,导出单个表定义。

5:gsql工具使用场景和方法
Sql文本格式建立表定义,-f指定执行的sql语句,通过命令将结果发送到文件

6:roach使用场景和方法
集群间数据迁移,前提条件,集群规模一致,主要用于双集群的容灾备份,在同等集群规模进行数据恢复。

9:数据库设计

1:选择合适的存储方式:行存和列存,目前列存支持五种压缩方式Zlib,LZ4
列存适合的场景:关联,排序,聚合的操作,以及查询条件列不确定,行存无法确定索引。
行存场景:点查询,增删改比较多的场景

2:数据分布方式
分布表:适合数据量小的表,将表中的数据复制到所有dn上。
散列(hash),适合数据量大的表,通过hash方式存储到索引dn上。

3:分布键的选择
尽量选择主键作为分布列,让数据分布均匀,尽量选择join列或者group列,防止数据在节点间流动,提高性能

4:分区表
数据容易管理和大大提高查询性能。

5:索引
使用索引可以快速访问数据库中表的信息


http://chatgpt.dhexx.cn/article/86GN8UcA.shtml

相关文章

MPPDB集群高可用设计

目录 1. 前言 2. 内核端高可用设计 2.1 GTM高可用 2.2 CN高可用 2.3 DN高可用 2.3.1 主、备、从高可用设计 2.3.2 数据复制 3. 集群管理端高可用设计 3.1 CMserver高可用 3.2 CMagent高可用 1. 前言 MPPDB集群服务组件主要分为内核端和集群管理端,内核端主要包括…

java JButton计算器布局

java JFrame大体框架 this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //窗体退出关闭程序 this.frame.setVisible(true); //该框架显示 this.frame new JFrame(“簡易計算器”); // 该面板的名字 this.frame.setLocation(100,100); //最初该面板定位 this.frame.…

java jbutton 省略号_JButton显示省略号

我正在尝试使用Swing库在Java中设置GUI。我创建了一个自定义按钮类,它具有自定义初始化程序,使事情变得更容易。它在下面: public class JTButton extends JButton { char type; public JTButton(String title, ActionListener listener, cha…

java jbutton_Java JButton按钮使用

/** *JButton按钮按键 * */ package com.swing; import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JFrame; class jbutton extends JFrame{ private JButton btn1,btn2,btn3,btn4,btn5; public static void main(String[] args){ jbutton jbnew …

JButton

JButton():设置一个没有文本图案的按钮 JButton(String text):创建一个带文本的按钮 getContentPane().add(组件) package apiapi;import javax.swing.*;public class api {public static void main(String[] args) {JFrame framenew JFrame();frame.setTitle(&q…

java按钮组件(JButton、JCheckBox)

按钮在Swing中是比较常见的组件,用于触发特定动作,Swing中提供多种按钮组件,如按钮、单选按钮、复选框等,这些按钮都是从AbstractButton类中继承而来的,下面将讲解这些按钮的应用。 1.JButton按钮组件 Swing中的按钮…

JButton部分常用的方法

本篇文章将会教会大家JButton常用的使用方法 JButton是Swing的组件所以需要导入包 import javax.swing.*;1创建JButton //创建JButton JButton jButton new JButton(); //将JButton添加到面板里 jPanel.add(jButton);2设置JButton大小以及坐标 //设置JButton大小 jButton.…

07.JavaSwing(常用基础组件——JButton类)

一、概述 JButton组件是最简单的按钮组件,在按下和释放2个状态之间进行切换,可以通过捕捉按下并释放的动作执行一些操作,从而完成和用户之间的交互。 二、构造函数 JButton();//创建不带有设置文本或图标的按钮。 JButton(Icon icon);//创建…

【CSS】使HTML页面表格中文字水平且垂直居中的方法(易错)

问题出现 因为是td直接写的文字,并不是套了标签才写,水平居中很清楚就是text-aline: center; 但是垂直居中始终没有得到很好地解决,查找了网上的样式是vertical-align: middle; 试了一下没有效果,很苦恼。 解决办法 …

css水平垂直居中方式总结

这里写目录标题 1. text-align: center;文字水平居中;margin: 0 auto;自身水平居中2. 绝对定位margin(元素需要固定宽高)3. 绝对定位 transform: translate(-50%,-50%);4. 绝对定位margin: auto;5.父元素设置display: flex;justify-content: …

CSS水平垂直居中的几种实现方式

水平垂直居中 1.利用 position:absolute2. 利用margin:auto3. 利用弹性盒子4. 利用水平对齐和行高5. 最简便的方法 1.利用 position:absolute <div class"father"><div class"son"></div> </div>当已知元素宽度和高度时&#xff…

div+css实现水平/垂直/水平垂直居中超详解

目录 一、水平居中1.块级元素水平居中方法一:设置margin:0 auto方法二:设置flex布局方法三:设置css3的transform 2.行内元素水平居中行内元素在块级元素中水平居中方法一&#xff1a;将外层块级元素设置为text-align&#xff1a;center方法二&#xff1a;将行内元素设置为块级元…

16种CSS水平垂直居中方法

16种css水平垂直居中方法以及应用&#xff08;文字、图片&#xff09; 一、垂直居中 1、行内元素 基本思想&#xff1a;单行文本子元素line-height 值为父元素 height 值 .parent {height: 200px; }.son {line-height: 200px; }2、块级元素 2.1行内块级元素 基本思想&…

【CSS】CSS实现水平垂直居中

元素水平垂直居中的场景很常见&#xff0c;常用的方法如下&#xff1a; &#xff08;以下方法在chorme测试可行&#xff09; 一、文本垂直居中 <div class"test">这是一段文字</div>.test {width: 200px;height: 200px;background: orange;text-align:…

CSS实现水平垂直居中

方法1&#xff1a;position transform 先设置一个父元素和一个子元素 <div class"father"><div class"child"></div> </div> 给父元素添加相对定位 .father {position: relative; /* 省略部分代码 */ } 给子元素添加绝对定位…

css grid布局实现水平垂直居中 文字水平垂直居中

原来一直使用flex布局来实现水平垂直居中&#xff0c;今天才知道还有grid也是很好用的&#xff0c;参考阮一峰大神的博客&#xff0c;简单记录一下学习&#xff1b; <div class"container"> <div class"item">1</div><…

html css实现文本水平垂直居中显示

这几天在工作中遇到了一个小问题&#xff1a;文本内容怎么能在div里水平垂直居中显示呢&#xff1f;同时群里的小伙伴恰巧也有提问这个问题的&#xff0c;所以我就总结了一下我知道的方法。 一、利用行高(line-height)和vertical-align配合实现 具体做法如下&#xff1a; ht…

CSS 布局 - 水平 垂直对齐

CSS 布局 - 水平 & 垂直对齐 那么怎样设置居中对齐呢? 我们可以用margin: auto来设置水平居中对其元素。auto可以防止 元素的宽高溢出&#xff0c;而且也可以平均分配两边的空白。 举例说明: .center {padding: 23px;border: 5px solid red;width: 41%;margin: auto; }那…

CSS如何实现水平垂直居中?4种工作中非常常用的方法

*CSS如何实现水平垂直居中&#xff1f; ** 1.用定位中的 “子绝父相” 来做 [核心代码是给子盒子添加的margin-top、margin-left 分别等于自身的高度、宽度的负的 一半] PS&#xff1a;缺点&#xff1a;需要提前知道元素的尺寸。如果不知道元素尺寸&#xff0c;这个时候就需要…

CSS实现元素水平垂直居中的各种方法

关于 CSS 如何将元素进行水平垂直居中的几种常用方法 前言 在设计网页页面的过程中&#xff0c;总会有将元素或者文字进行水平或者垂直居中的要求&#xff0c;各种CSS样式调整&#xff0c;搞的头都大了。这里将会介绍 CSS 中几种常用到的水平垂直居中的方法&#xff0c;希望能够…