首先我们来看一下什么是 OceanBase, 下面是来自官方的定义:

OceanBase 社区版是一款开源分布式 HTAP(Hybrid Transactional/Analytical Processing)数据库管理系统,具有原生分布式架构,支持金融级高可用、透明水平扩展、分布式事务、多租户和语法兼容等企业级特性。OceanBase 内核通过大规模商用场景的考验,已服务众多行业客户,现面向未来持续构建内核技术竞争力。

而作为一个数据库疯狂热爱者,在看到它的那一刻直接下载了一份源码。而在经过一番折腾之后,终于让 OceanBase 老老实实的说了一句 Hello World。接下来跟大家分享一下我是如何做到的。

1
> SELECT 'Hello World';

本章完~ 哈哈,开个小玩笑。接下来让我们进入正文。

1. 如何向 OceanBase 贡献代码

阅读全文 »

Quick ->
Sort -> 排序

所以 QuickSort 就是快速的排序。本章终。

哈哈哈,开个小玩笑,我们言归正传。

阅读全文 »

在我们日常学习和工作中, git 已经逐渐的和程序员绑定到了一起。

关于 git ,大家是这样去定义的:

1
2
3
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

Git is easy to learn and has a tiny footprint with lightning fast performance. It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows.
阅读全文 »

心情不佳,我们来写个堆吧。

堆的定义

堆我脑子里第一个浮现的是金字塔的外形。但是,抽象一下,更像是一棵树。

而在很多算法题中,有些 Top K 问题,在关键字和提示中,也经常出现 这个字眼。

因此,简单来说,可以认为堆满足一些性质:

  • 堆中某个节点的值总是不大于或不小于父节点(因此有了最大堆和最小堆的说法,父最大为最大堆,父最小为最小堆)

  • 堆是一个完全二叉树

阅读全文 »

HashTable 是一种存储 key-value pairs(键值对)的数据结构。

Key 是被发送到一个用来对其实行运算的 hash 函数。

这个过程称为 Hashing(散列)

1
hash 函数运算后的结果(通常被称为 `hash 值` 或者 hash)是 key-value pair 在 HashTable 中的索引。
阅读全文 »

1. 前言

Out Of Memory (OOM)到目前为止已经出现了 40 年。大概就是当某个应用想要使用的内存超过了现有可用的内存总和,本文将不会具体进行赘述。为了防止发生OOM ,采取了各种各样的方式,最常见的就是,当申请内存时,发现无法申请所需要的内存,系统主动 kill 当前内存占用最大的应用。

这样带来的好处是,当前应用可以正常使用了。但是,缺点也是显而易见的:会让当前最大内存占用的应用无法正常运行。

在数据库中,这尤为常见。比如,在一台数据库服务器中运行了 MySQL Server ,同时要对这个数据库进行备份,而执行 mysqldump 或者 xtrabackup 或者 mydumper 等等备份命令时,由于机器内存不足以运行备份命令,而 kill 掉了内存占用最大的 MySQL Server。着带来的后果就很直接了,业务读写失败。

同样的,当下的 OLAP 骄子 ClickHouse 也是存在这种问题,那么他的 OOM 一般是如何引起的呢,又要如何避免呢?

阅读全文 »

1. 前言

mysqldump 作为 MySQL 源生支持的逻辑复制工具自从上古时代就已经被DBA广泛使用,时至今日,很多人都依然在用他作为轻量级数据库的备份工具。

虽然在 MySQL 复制工具中 mysqldump 具有 OG 地位,但是不可否认在当代社会,单线程复制逻辑导出完全无法 cover 大部分的备份需求场景,比如对于近TB级别的数据如果用mysqldump导出并不落盘的直接写入到其他节点中,可能要以天为时间计量单位去计算一次恢复耗时。试问,谁能忍受我们常用的网站突然某一天弹出一个提示框:今天网站数据迁移,请后天进行访问。

而今天本着对时代的缅怀,我想再好好看看 mysqldump 是如何实现的。而快速了解基本实现逻辑,最好的莫过于从他刚刚出生不久时候开始。接下来,我们穿越回上古,看看他年轻时候的样子吧。

阅读全文 »

有这么一天,我们吃着火锅,唱着歌,突然就被手机铃声给劫了。一接电话

问曰:咋回事捏?

骂曰:看看你这破数据库,error log 里面居然有 bug 信息。赶紧回来,不然别想混了!!!

得,骑上我心爱的小毛驴飞过去处理吧。

阅读全文 »