内核实战教程第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 也会走到更多的城市中

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

相关文章
|
9天前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
46 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
28天前
|
SQL NoSQL 数据库
Cassandra数据库与Cql实战笔记
Cassandra数据库与Cql实战笔记
16 1
Cassandra数据库与Cql实战笔记
|
21天前
|
存储 SQL 关系型数据库
【入门级教程】MySQL:从零开始的数据库之旅
本教程面向零基础用户,采用通俗易懂的语言和丰富的示例,帮助你快速掌握MySQL的基础知识和操作技巧。内容涵盖SQL语言基础(SELECT、INSERT、UPDATE、DELETE等常用语句)、使用索引提高查询效率、存储过程等。适合学生、开发者及数据库爱好者。
35 0
【入门级教程】MySQL:从零开始的数据库之旅
|
1月前
|
tengine 关系型数据库 MySQL
Tengine、Nginx安装MySQL数据库命令教程
本指南详细介绍了在Linux系统上安装与配置MySQL数据库的步骤。首先通过下载并安装MySQL社区版本,接着启动MySQL服务,使用`systemctl start mysqld.service`命令。若启动失败,可尝试使用`sudo /etc/init.d/mysqld start`。利用`systemctl status mysqld.service`检查MySQL的服务状态,确保其处于运行中。通过日志文件获取初始密码,使用该密码登录数据库,并按要求更改初始密码以增强安全性。随后创建一个名为`tengine`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
2月前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
2月前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
8天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
40 0
|
8天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
35 0
|
1月前
|
SQL 存储 人工智能
OceanBase CTO杨传辉谈AI时代下数据库技术的创新演进路径!
在「DATA+AI」见解论坛上,OceanBase CTO杨传辉先生分享了AI与数据库技术融合的最新进展。他探讨了AI如何助力数据库技术演进,并介绍了OceanBase一体化数据库的创新。OceanBase通过单机分布式一体化架构,实现了从小规模到大规模的无缝扩展,具备高可用性和高效的数据处理能力。此外,OceanBase还实现了交易处理、分析和AI的一体化,大幅提升了系统的灵活性和性能。杨传辉强调,OceanBase的目标是成为一套能满足80%工作负载需求的系统,推动AI技术在各行各业的广泛应用。关注我们,深入了解AI与大数据的未来!
|
1月前
|
SQL 关系型数据库 MySQL
sql注入原理与实战(三)数据库操作
sql注入原理与实战(三)数据库操作
sql注入原理与实战(三)数据库操作