内核实战教程第1期|数据库系统概述,带你走近 OceanBase 研发环境

简介: 想参加 OceanBase 数据库大赛,但苦于不知从哪里开始入手?OceanBase 数据库大赛专门为大家设置了 7 期免费的赛前训练营「从0到1数据库内核实战教程」💪8月11日 19:30 「从0到1数据库内核实战教程」第一期直播也即将和大家见面啦!

小伙伴们看过来👀

想参加 OceanBase 数据库大赛,但苦于不知从哪里开始入手?

OceanBase 数据库大赛专门为大家设置了 7 期免费的赛前训练营「从0到1数据库内核实战教程」💪

8月11日 19:30「从0到1数据库内核实战教程」第一期直播也即将和大家见面啦!


本期直播我们邀请到了蚂蚁集团研发总监,OceanBase 开源负责人封仲淹(花名:纪君祥)OceanBase 技术专家王运来(花名:宁封)以及 OceanBase 内核工程师王泽林(花名:官明)为大家介绍数据库系统概述、OceanBase 架构介绍和MiniOB/OceanBase 开发环境搭建。


本期直播能帮你解决什么?


如果你 0 基础,还不了解数据库,赶快报名直播,老司机带你快速 Get 经典数据库内容!


如果你在学校虽然学习了很多数据库理论知识,但却苦于没有在真实企业级环境中动手实践过,本期「从0到1数据库内核实战教程」以 OceanBase 为例,专门为大家搭建了一个企业级的应用场景!


不仅可以带你从零开始系统化地学习数据库理论知识,同时还能熟悉 MiniOB 和 OceanBase 数据库代码的整体架构和模块构成,以及一些关键数据的结构和方法。从理论到实践,带你掌握数据库内核开发,为后期深入学习数据库内核打下夯实的基础。赶快扫描海报上方二维码报名直播,和讲师进行在线互动吧!



直播内容抢“鲜”知

数据库系统概述


数据库管理系统的组成

DBMS(数据库管理系统) 允许用户创建数据库并对数据库中的数据进行查询和修改,同时提供故障时的数据恢复功能和多用户同时访问时的并发控制功能。


如图是一个 DBMS 的内部结构示意图。其中单线框表示系统模块,双线框表示内存中的数据结构,实线表示控制流+数据流,虚线表示数据流。该图反映了 DBMS 的几大主要功能的处理流程,即数据定义、数据操纵和事务管理,这些功能均依赖底层的存储管理及缓冲区管理组件提供对磁盘中数据的访问支持。



数据库模型和语言

关系模型采用的数据结构称为关系。在关系模型中,数据库中的全部数据及数据间的联系都用关系来表示。关系是一个无序的元组集合,每个元组由一组属性值构成,表示一个实体。一个有n个属性的关系称为n元关系。由于关系中的元组是无序的,因此DBMS可以采用任何它希望的方式存储它们,以便进行优化。


SQL 是关系数据库的标准语言,它是1974 年由Boyce和Chamberlin提出的,最初叫 Seque(Structured English Query Language), 并在IBM公司研发的关系数据库管理系统原型System R上实现,后改名为SQL(Structured Query Language)。SQL是一种通用的、功能极强的关系数据库语言,其功能不仅仅是查询,还包括数据库模式创建、数据库数据的插入与修改、数据库安全性完整性定义与控制等一系列功能。但是,数据查询仍然是SQL中最重要、也最具特色的功能。


MiniOB 概述和编译环境搭建


MiniOB 概述

MiniOB 设计的目标是让不熟悉数据库设计和实现的同学能够快速地了解与深入学习数据库内核,期望通过相关训练之后,能够对各个数据库内核模块的功能与它们之间的关联有所了解,并能够在使用数据库时,设计出高效的 SQL。MiniOB 诸多模块做了简化,比如不考虑并发操作。 注意:此代码仅供学习使用,不考虑任何安全特性。


MiniOB 调试

  1. 首先在自己的 GitHub 中创建一个新的代码库。
  2. 拉取 MiniOB 官方仓库代码到自己的仓库。

# 将代码拉到本地

gitclone https://github.com/oceanbase/miniob.git

# 进入到 miniob 目录,删除 .git 目录,清除已有的 git 信息

cdminiob

rm-rf .git

# 重新初始化 git 信息,并将代码提交到自己的仓库

gitinit

gitadd .

gitcommit -m 'init'  # 提交所有代码到本地仓库

# 将代码推送到远程仓库

gitremote add origin https://github.com/hnwyllmm1/miniob.git # 注意替换命令中的信息为自己的仓库信息

gitbranch -M main

gitpush -u origin main

  1. 调试 MiniOB

调试 c/c++ 程序,常用的有两种方式,一是通过打印日志进行调试,二是借助 GDB 调试器进行调试。通过调试程序,可以熟悉程序执行的每一步细节,不仅可以定位问题,也可以用来熟悉代码,增加编程能力。


OceanBase 概述和研发环境搭建


OceanBase 架构和基本介绍



OceanBase 的一个集群由若干个节点组成。这些节点分属于若干个区(Zone),每个节点属于一个区。区是一个逻辑概念,表示集群内具有相似硬件可用性的一组节点,它在不同的部署模式下代表不同的含义。例如,当整个集群部署在同一个数据中心(IDC)内的时候,一个区的节点可以属于同一个机架,同一个交换机等。当集群分布在多个数据中心的时候,每个区可以对应于一个数据中心。每个区具有 IDC 和地域(Region)两个属性,描述该区所在的 IDC 及 IDC 所属的地域。一般地,地域指 IDC 所在的城市。区的 IDC 和 Region 属性需要反映部署时候的实际情况,以便集群内的自动容灾处理和优化策略能更好地工作。


在 OceanBase 中,一个表的数据可以按照某种划分规则水平拆分为多个分片,每个分片叫做一个表分区,简称分区(Partition)。某行数据属于且只属于一个分区。分区的规则由用户在建表的时候指定,包括 hash、range、list 等类型的分区,还支持二级分区。例如,交易库中的订单表,可以先按照用户 ID 划分为若干一级分区,再按照月份把每个一级分区划分为若干二级分区。对于二级分区表,第二级的每个子分区是一个物理分区,而第一级分区只是逻辑概念。一个表的若干个分区可以分布在一个区内的多个节点上。


为了能够保护数据,并在节点发生故障的时候不中断服务,每个分区有多个副本。一般来说,一个分区的多个副本分散在多个不同的区里。多个副本中有且只有一个副本接受修改操作,叫作主副本(Leader),其他叫作从副本(Follower)。主从副本之间通过基于 Multi-Paxos 的分布式共识协议实现了副本之间数据的一致性。当主副本所在节点发生故障的时候,一个从节点会被选举为新的主节点并继续提供服务。


OceanBase 研发环境搭建

本系列主要指导开发者如何参与到 OceanBase 的研发,解决上手 OceanBase 开发过程中遇到的问题。

  1. 如何编译 OceanBase 源码
  2. 如何设置 IDE 开发环境
  3. 如何成为 OceanBase Contributor
  4. 如何 debug OceanBase
  5. 如何运行测试


8月11日 19:30,准时相约「从 0 到 1 数据库内核实战教程」官方直播间。手把手教你如何编译和调试 MiniOB & OceanBase。


为避免错过直播,赶快扫描下方二维码进入「OceanBase 入门到实战」群

和更多小伙伴一起学习进步

为帮助大家更好的学习数据库知识,结交新的朋友

未来 OceanBase Meetup 也会走到更多的城市中

大家进群后修改自己的群昵称哦【格式:姓名-城市-职位】

相关文章
|
4月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
590 7
|
人工智能 关系型数据库 OLAP
聚光灯已就位!阿里云瑶池数据库邀你征战Cursor首届实战征文大赛
阿里云AnalyticDB携手Cursor中文社区,正式发起首届实战征文大赛!我们诚邀开发者融合Cursor的智能编程能力与AnalyticDB PostgreSQL提供的Supabase服务进行项目开发,让优秀项目被专家看见、被机遇拥抱!
|
8月前
|
关系型数据库 MySQL 数据库连接
Django数据库配置避坑指南:从初始化到生产环境的实战优化
本文介绍了Django数据库配置与初始化实战,涵盖MySQL等主流数据库的配置方法及常见问题处理。内容包括数据库连接设置、驱动安装、配置检查、数据表生成、初始数据导入导出,并提供真实项目部署场景的操作步骤与示例代码,适用于开发、测试及生产环境搭建。
403 1
|
9月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
8月前
|
SQL 数据建模 关系型数据库
别光知道存数据库了,数据建模才是王道!(入门指南+实战代码)
别光知道存数据库了,数据建模才是王道!(入门指南+实战代码)
1641 4
|
5月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
969 5
|
6月前
|
存储 安全 关系型数据库
MySQL数据库约束条件概述及其重要性讨论。
正确地实现并管理好各类紧缩条件将直接影响到企业信息管理水平与服务质量,在当今大数据背景下更显得格外重要;任何设计师都需要深刻理解其原理与运作机晰承担起责任使得所托管资料安全稳固同时又具备良好伸缩灵活度迎合日益复杂商务需求变动.
217 11
|
5月前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
495 0
|
9月前
|
存储 关系型数据库 MySQL
【赵渝强老师】OceanBase数据库从零开始:MySQL模式
《OceanBase数据库从零开始:MySQL模式》是一门包含11章的课程,涵盖OceanBase分布式数据库的核心内容。从体系架构、安装部署到租户管理、用户安全,再到数据库对象操作、事务与锁机制,以及应用程序开发、备份恢复、数据迁移等方面进行详细讲解。此外,还涉及连接路由管理和监控诊断等高级主题,帮助学员全面掌握OceanBase数据库的使用与管理。
504 5
|
11月前
|
存储 运维 监控
百万指标,秒级查询,零宕机——时序数据库 TDengine 在 AIOps 中的硬核实战
本篇文章详细讲述了七云团队在运维平台中如何利用 TDengine 解决海量时序数据存储与查询的实际业务需求。内容涵盖了从数据库选型、方案落地到业务挑战及解决办法的完整过程,特别是分享了升级 TDengine 3.x 时的实战经验,给到有需要的小伙伴参考阅读。
488 1

推荐镜像

更多