国产数据库|GBase 8s V8.8 学习笔记之架构介绍

48276f437148a1e6a40de5aab547d279.gif

作者 | JiekeXu

来源 |公众号 JiekeXu DBA之路(ID: JiekeXu_IT)

如需转载请联系授权 | (个人微信 ID:JiekeXu_DBA)

大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家一起来看看国产数据库|GBase 8s V8.8 学习笔记之架构介绍,欢迎点击上方蓝字“JiekeXu DBA之路”关注我的公众号,标星或置顶,更多干货第一时间到达!

GBase 8s 简介

GBase 8s 是天津南大通用数据技术股份有限公司自主研发的、成熟稳定的企业级国产交易型数据库,拥有自主知识产权。产品达到国标第四级安全标准,支持国密算法,支持 SQL99/2003、ODBC、JDBC、ADO.NET 等国际数据库规范和开发接口。支持共享存储集群、支持两地三中心高可用部署。

GBase 8s 总体上由三大部分组成:管理工具、应用接口、数据库主服务,GBase 8s 数据库服务总体架构如下:

d2985f0feef62bacbf5495e1c8154cb6.png

GBase 8s 六大功能

35e8e86576895591c708f644416ede43.png

GBase 8s 发展史

2619b61375ae794100d7c35283249bb2.png

国产数据库四朵金花

  • 1999年人大金仓成立,属于中国电子科技集团

  • 2000年武汉达梦成立,属于中国电子信息产业集团

  • 2004 年南大通用成立

  • 2008 年神州通用公司成立,属于中国航天科技集团

GBase 8s 架构

GBase 8s 是多进程多线程架构,和 Oracle 内存架构非常相似,学过 Oracle 的朋友对这个架构图还是比较熟悉的,基于 Shared Memory 的共享内存架构,各种“VP”的进程/线程结构管理,物理日志/逻辑日志的存储管理。

638f47b2dd1bd42551d5e75b1e1639f1.png

共享内存段

共享内存段共分为以下四个部分:常驻内存段、Buffer Pool 缓存池段、虚拟内存段、消息段。

76a825b136c9baccaf7f6d5c54cfa3cc.png

存储结构

块>段>页

块是专用于数据库服务器数据存储的物理磁盘最大单元。
块可以为管理员提供用于分配磁盘空间的特别大的单元。单个块的最大大小是 4 TB。允许的块数为 32766。

页是数据库服务器用于在 GBase 8s 数据库中读取和写入的物理磁盘存储单元。在多数 UNIX™ 平台上,页大小是 2 KB。因为硬件会确定页的大小,所以您不能更改此值。

c459e5c9801578832154edf76bb9a9fa.png

逻辑存储

5767bd2c523d55b7fbd3953ecb7efaa8.png

物理日志

数据库服务器在修改数据页前,将这些数据页进行保存,保存的这些数据页(数据页的前映像)称为物理日志。这个就有点像 Oracle 的 undo 日志,可用于异常掉电、回滚等的操作。

逻辑日志

数据库服务器对数据的操作进行记录,这些记录称为逻辑日志。这个就有点像 Oracle 的 rodo 日志,记录数据库的操作记录。

临时数据库空间

临时数据库空间是专门为临时表的存储而保留的数据库空间,数据库服务器在不正常关闭时不保留任何临时数据库空间内容,数据库服务器不会为临时数据库空间执行逻辑或物理日志记录。这个就和 Oracle 的临时表空间一样了。

大对象数据库空间

BLOB Space 是由一个或多个只存储 TEXT 和 BYTE 数据的块组成的逻辑存储单元。BLOB Space 的 Blobpage 大小是在创建 BLOB Space 时指定的,大小是页的整数倍。Blob Space 中的所有 Blobpage 的大小都是相同的,但是不同 BLOB Space 中的Blobpage 的大小可以不同。存储在 BLOB Space 中的数据直接写入磁盘,不会透过共享内存进行读写。数据库服务不会将 TEXT 或者 BYTE 对象写入逻辑日志或者物理日志。

智能大对象数据库空间

智能大对象数据库空间是由存储智能大对象的一个或多个块组成的逻辑存储单元。智能大对象由 CLOB(字符大对象)和 BLOB(二进制大对象)数据类型组成。用户定义的数据类型也可以使用智能大对象数据库空间。智能大对象的页大小不可以定义,其与数据页大小相同。智能大对象的数据写入物理日志和逻辑日志,在故障发生时,智能大对象可恢复。

GBase 8s 支持多种部署方式,包括单机、共享存储集群、主备集群、两地三中心集群等。支持应用与数据库部署在同一台或者不同服务器上。

共享存储集群 SSC

GBase 8s SSC(共享存储高可用集群)采用共享磁盘方式实现计算节点高可用,数据仅存储一份,有效利用硬件资源,避免数据重复存储问题。SSC 集群中各节点均能对外提供服务,适合写少读多,对读性能有线性扩展需求的场景,集群节点数最多可达 128 个。SSC 具有安装简单、应用无感知、故障自动切换、低成本等特点。

5925b11a561c911df986f57c4e86cf95.png

  • 由CM进行管理并自动维护

  • 主节点用来写,辅助节点用来读查询。

  • 主节点故障时,辅节点自动接管服务,升级为主节点。

  • 在有多个辅节点时,CM会根据辅节点负载情况选择把哪个节点升级为主节点。

  • 故障切换时间在 1 分钟以内

数据发送示意图

166cd69b782500c019bcffafa1b9303d.png

高可用集群 HAC

GBase 8s HAC(高可用容灾集群)采用逻辑日志复制技术实现节点高可用,同城容灾集群支持一主一从的部署方式,异地灾备集群支持一主多备的部署方式,HAC 集群主节点执行读写业务的同时,备节点可承担查询、报表等读业务,HAC 集群具有安装简单、应用无感知、故障自动切换、无须额外付费等特点。HAC 要求主备服务器的数据库版本完全相同,主备服务器的硬件和操作系统版本尽量相同。使用时,HAC 主节点接收业务请求,写逻辑日志,将逻辑日志置于发送缓冲区,通过局域网或广域网发送给各备节点,备节点接收到逻辑日志,在内存中进行重放,从而达到主备节点数据状态一致,集群通过 CM(连接管理器)实现主备节点间互相切换。

GBase 8s HAC 有点像 Oracle 的主备架构,支持同步、半同步和异步日志模式。同步模式:逻辑日志同步更新模式下备实例上的事务始终和主实例保持一致,所以在发生故障时不会丢失数据。适用于主备节点距离较近(同机房或跨机房)的同城容灾集群。半同步模式:逻辑日志半同步更新模式下,主实例在将逻辑日志刷新到磁盘之前要确保备实例日志已回放完成。适用于对主备节点相距几十或上百公里的同城容灾集群。异步模式:逻辑日志异步更新模式下,主实例在将逻辑日志刷新到磁盘之前不需要收到备实例的确认信息,所以此模式可以提高日志的复制速度,适用于主备节点相距上千公里异地灾备集群。

796e06f5c1903e9cde4eb1f1b2ca558e.png

远程高可用集群 RHAC

远程高可用集群 RHAC,需要使用广域网、远距离部署,一般为一千公里以上的距离,部署模式为异步模式。有可能会丢失一小部分数据。

8110e6ee98abcdf8c98e3cc8c179ded0.png

两地三中心部署

ebc6a689ac02c23b3773d8aa0f5fb68b.png

三种集群架构比较

2625753fd92c30cb934e6a1f839270e1.png

Reference

《GBase 8s V8.8 技术白皮书》
【BGase 学堂】01 GBase 8s 产品介绍

全文完,希望可以帮到正在阅读的你,如果觉得此文对你有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~

欢迎关注我的公众号【JiekeXu DBA之路】,第一时间一起学习新知识!

———————————————————————————
公众号:JiekeXu DBA之路
CSDN :https://blog.csdn.net/JiekeXu
墨天轮:https://www.modb.pro/u/4347
腾讯云:https://cloud.tencent.com/developer/user/5645107
———————————————————————————

c90220494912799a44223bf14122ff97.gif

分享几个数据库备份脚本

Oracle 表碎片检查及整理方案

OGG|Oracle GoldenGate 基础2022 年公众号历史文章合集整理
 

Oracle 19c RAC 遇到的几个问题

OGG|Oracle 数据迁移后比对一致性

OGG|Oracle GoldenGate 微服务架构

Oracle 查询表空间使用率超慢问题一则

Oracle 11g升级到19c需要关注的几个问题

国产数据库|TiDB 5.4 单机快速安装初体验

Oracle ADG 备库停启维护流程及增量恢复

Linux 环境搭建 MySQL8.0.28 主从同步环境

9629a1ff495813c2bd232ebcec2aecf9.png

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

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

相关文章

2018年笔试题——老虎证券1

在网上看到了笔试题的照片,记录一下自己解题的过程,以便以后毕业找工作的时候复习。 【思考】6个珠子,如果是在一条不可旋转不可翻转的排列上,其种数有A66即是720种方案,但是考虑珠子的拨动,即654321和5432…

神策数据携手老虎证券,用科技赋能美港股券商打造极致体验

近日,知名美港股券商老虎证券签约神策数据,双方将携力加快科技创新与金融服务的融合,充分发挥金融科技的价值,旨在为投资者带来更加优质的使用体验。 老虎证券旗下老虎社区致力于打造“离交易最近的美港股社区”,目前聚…

数据结构与算法-递归

2.3 递归 概述 定义 计算机科学中,递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集 In computer science, recursion is a method of solving a computational problem where the solution depends on solutions to smaller in…

【30天熟悉Go语言】4 Go的变量、常量、运算符

文章目录 一、前言二、变量1、变量的基础使用2、变量的多种使用方式1)全局变量2)局部变量3)丢弃赋值 3、Go和Java的变量对比 三、常量1、Go和Java的常量对比 三、运算符1、算术运算符 、--2、运算符 &、* 四、总结 一、前言 Go系列文章&a…

idea简易创建main方法

最简易的创建main方法,按着图配置即可

idea执行main方法都要BUILD解决

开发代码中,很多时候我们为了验证一小段代码逻辑会直接写个main方法去执行,看看运行结果,最近发现idea 跑个main方法都要执行 compileJava 和 BUILD 解决方案: 去掉Delegate IDE build/run actions to gradle 勾选,应…

Idea运行main方法,不编译整个工程

在使用 IDEA 开发过程中,在一个main方法进行代码测试时,发现 IDEA 上 执行 main 方法后竟然编译整个项目!!! 最烦的是其他无关代码的报错 ,也会导致main方法不能编译执行。 我的idea版本如下,…

Java基础——main方法

深入理解main方法 解释main方法的形式:public static void main(String [] args){} main方法是由java虚拟机调用的。java虚拟机需要调用类的main()方法,所以该方法的访问权限必须是public。Java虚拟机在执行main()方法时不必创建对象,所以该…

美债提高上限的后果

* * * 原创:刘教链 * * * 号外:今天在小号“刘教链Pro”发表了一篇《再论以太坊的自限性》,谈了一下对比特币和以太坊自限性问题的再研讨,欢迎关注“刘教链Pro”并阅读。 * * * 隔夜比特币小幅回落至28k下方。昨日在28k上方遭遇了…

如何在Linux环境中执行main方法

对于程序员来说,很闹心的一个问题就是在生产上找bug,太太太难了,所以写测试类是一个用到很普遍的方法,那么测试类的main方法是如何被调用的呢,其实很简单啦。Linux命令:java -cp jar包 类的全限定名 参数 …

scala的MAIN方法

MAIN方法 scala和Java一样,如果要运行一个程序,必须有一个main方法。而在Java中main方法是静态的,而在scala中没有静态方法。在scala中,这个main方法必须放在一个单例对象中。 定义Main方法 main方法 scala def main(args:Array[S…

Java的main方法

文章目录 引言一、写法二、解释三、运行参考 引言 写Java代码时,最常用到main方法的场景是运行类中的某一个方法,进行测试,本文简单介绍一下Java的main方法。 一、写法 固定写法如下: public static void main(String[] args){ …

main方法详解

学习Java有一段时间了,一直没用过博客来写写自己在学习过程中遇到的问题和学习心得,看到别人在诸如博客这样的社区写一些总结觉得挺好的。索性,今天开始自己也用起博客记录学习。一来呢,能更好的总结学习知识。二来,有…

使用main方法启动spring程序

使用main方法启动spring程序 在 spring 框架中,由于对象都交给了 IoC 容器进行管理,那么直接在 main 方法中创建 service 层对象,就会出现空指针异常(NPE) 正确的方式是从 IoC 的容器中取出对象,再使用对象…

深入理解Java的main方法

一、简单介绍 在我们的Java程序中都会出现一个名称为main的方法,我们发现没有这个方法我们的程序就无法运行。 其实任何一个Java程序的运行入口都是这个main方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法&#…

SpringBoot项目main方法详解

前言 SpringBoot项目启动时通过执行main方法启动,main方法主要做了两方面工作: 初始化Spring容器启动tomcat运行项目 下面我们通过源码来看如何进行的上面两个操作。 源码分析 我们以debug的方式进行源码的分析。main方法中,我们调用了SpringApplic…

main方法和单元测试方法

1、编写代码可使用快捷键 输入main然后点击回车;输入sout然后点击回车。 输入想要输出的内容然后运行代码即可 2、java严格区分大小写 main方法也叫主函数,在一个类中只有一个main方法。 java中每一条语句都是以分号为结束标志。 3、单元测试方法 …

Java中的main方法

一、概念 main方法是java程序的入口,每个java应用程序都必须有且仅有一个main方法。 二、深入理解 public static void main(String[] args) {} main方法是被java虚拟机调用的。java虚拟机不在该类中,也不在该类的包中,也不是该类的子类。…

java中main方法的作用是什么_java中main方法是什么

Java中的main方法,是一个java应用程序的入口,无论一个java的应用多么复杂庞大,或是多么的小,只要他是一个可以运行的java程序那么必然就要有一个main方法。 main方法的定义格式通常固定如下: (推荐学习:java课程)public class Demo {public static void main(String[] ar…

Java main方法_解释Java中的main方法,及其作用_一个java文件中可包含多个main方法

public static void main(String[] args) {}或者 public static void main(String args[]) {}main方法是我们学习Java语言学习的第一个方法,也是每个java使用者最熟悉的方法,每个Java应用程序都必须有且仅有一个main方法。在eclipse里可以使用输入main,…