1. 介绍
是由蚂蚁集团(Ant Group,原蚂蚁金服)自主研发的分布式关系型数据库。它旨在解决海量数据存储和高并发访问的问题,特别适合金融级应用场景,如支付宝等对数据一致性、可靠性和性能有极高要求的服务。以下是关于 OceanBase 数据库的一些关键特点和优势:
1.1 核心特性
1. 分布式架构
- 水平扩展:OceanBase 支持通过增加服务器节点来线性扩展系统容量,从而应对不断增长的数据量和用户请求。
- 多副本机制:为了保证数据的高可用性和容灾能力,OceanBase 实现了多副本策略,确保即使部分节点故障也不会影响整个系统的正常运行。
2. 高性能
- SQL 引擎优化:针对 SQL 查询进行了深度优化,支持复杂的事务处理和分析查询,能够在保证 ACID 特性的前提下提供高效的读写性能。
- 全局一致性:利用 Paxos 协议实现分布式事务的一致性管理,确保跨多个数据中心的数据同步和一致性。
3. 高可用性
- 自动故障转移:当主副本发生故障时,能够快速切换到备用副本继续服务,减少了业务中断时间。
- 异地多活:支持跨地域部署,使得不同地区的用户可以就近访问数据,降低了网络延迟,并增强了灾难恢复的能力。
4. 兼容 MySQL/Oracle
- MySQL 兼容性:提供了良好的 MySQL 协议兼容性,使得从传统 MySQL 数据库迁移到 OceanBase 变得更加容易。
- Oracle 兼容性:部分版本也增加了对 Oracle 数据库语法的支持,方便企业平滑迁移。
5. 低成本
- 硬件成本低:由于采用了普通的 X86 架构服务器作为集群节点,相比专用硬件设备大大降低了采购成本。
- 运维成本低:简化了管理和维护流程,减少了人工干预的需求,提高了自动化程度。
1.2 应用场景
OceanBase 广泛应用于支付清算、电子钱包、转账汇款、信贷风控等领域,尤其是在需要处理大量交易且对响应速度和数据安全有严格要求的地方表现优异。此外,随着云服务的发展,OceanBase 也开始向云端延伸,为更多中小企业提供灵活可靠的数据库解决方案。
1.3 社区与生态
OceanBase 不仅是一个商业产品,也有活跃的开源社区版(OceanBase Community Edition),鼓励开发者和技术爱好者参与到项目的开发和完善中来。同时,围绕 OceanBase 形成了丰富的工具链和服务体系,包括但不限于监控报警、备份恢复、性能调优等工具,以及专业的技术支持团队。
2. 安装
安装要求:需要6G内存,14G磁盘空间。
2.1 镜像下载
下载oceanbase-ce镜像,这里只体验社区兼容MySQL版本的,兼容Oracle版本是企业版,商用,一般接触不到。如果企业要用,也是由厂商技术支持直接安装,一般接触不到这个镜像源。
# 下载oceanbase-ce镜像
docker pull oceanbase/oceanbase-ce
2.2 启动容器
docker run -p 2881:2881 \
--name oceanbase \
--restart=always \
-e MODE=MINI \
-e OB_TENANT_PASSWORD=123456 \
-d oceanbase/oceanbase-ce
2.3 安装监测
启动后可实时观察日志是否成功安装
docker logs -f oceanbase
2.4 连接数据库
oceanbase-ce 镜像安装了OceanBase数据库客户端obclient,所以可以使用obclient客户端或其他方式。
# 1. 进入容器
docker exec -it oceanbase bash
# 无密码方式
obclient -uroot@sys -h127.0.0.1 -P2881
# 有密码方式
obclient -uroot@sys -h127.1 -P2881 -p123456
3. SQL语句
SQL的英文是Structured Query Language,简称SQL,是一种操作关系型数据库的结构化查询语言。操作数据库,最经常使用就是查询操作。
1、OceanBase数据库也兼容Oracle语法,这个社区版不支持;
2、OceanBase数据库的SQL语句不区分大小写,关键字建议使用大写;
3、SQL语句可以使用单行或多行书写,以分号结尾
4、注释
单行注释
- 单行注释
# 单行注释
多行注释
/*
多行注释
多行注释
*/
4. SQL分类
分类 | 说明 | 作用 | 备注 |
---|---|---|---|
DDL | 数据定义语言 | 用来对数据库、表、列的定义 | data definition language |
DML | 数据操作语言 | 用来对数据库中表的数据进行增、删、改操作 | data manipulation language |
DQL | 数据查询语言 | 用来对数据库中表的数据进行查询 | data query language |
DCL | 数据控制语言 | 用来对数据库的控制(用户创建、权限控制) | data control language |
5. DDL
5.1 库的DDL
一个功能,一般都是四个动作,增删改查。
展示所有的数据库
show databases;
创建数据库
create database 数据库名称 charset=utf8;
create database if not exists 数据库名称 charset=utf8; # 使得SQL语句更加强健、健壮。
示例:
create database db1 charset=utf8;
create database if not exists db1 charset=utf8;
删除数据库
drop database 数据库名称;
drop database if exists 数据库名称;
示例:
drop database test;
drop database if exists test;
使用数据库
use 数据库名称;
查询正在使用的数据库
select database();
小结:
命令 | 作用 | 示例 |
---|---|---|
show databases; | 查看所有数据库 | show databases; |
create database if not exists 数据库名 charset=utf8; | 创建数据库 | create database if not exists db1 charset=utf8; |
use 数据库名; | 使用数据库 | use db1; |
select database(); | 查看当前使用的数据库 | select database(); |
drop database if exists 数据库名; | 删除数据库 | drop database if exists db1; |
5.2 表、列的DDL
列的内容可以是数字、字符串、时间等,由数据类型约束
在满足业务需求的请求下,数据类型范围选择越小的。
数值数据类型
数据类型 | 字节数 | 有符号 | 无符号 |
---|---|---|---|
tinyint | 1个字节 | -128~127 | 0~255 |
smallint | 2个字节 | -32768~32767 | 0~65535 |
mediumint | 3个字节 | -8388608~8388607 | 0~16777215 |
int | 4个字节 | -2147483648~2147483647 | 0~4294967295 |
bigint | 8个字节 | -263~263-1 | 0~2^64-1 |
float | 单精度,4个字节 | -231~231-1 | 0~2^32-1 |
double | 双精度,8个字节 | ||
decimal[M, D] | 双精度,8个字节 |
decimal(5,2),表示共5位数字,其中2位是小数,比如:888.88
字符串数据类型
数据类型 | 长度 | 用途 |
---|---|---|
char(size) | 最大255个字符 | 数据是定长,如md5的密码,邮编,手机号,身份证号等 |
varchar(size) | 最大65535个字节 | 存放一般内容长度 |
tinytext | 最大255个字节 | |
text | 最大65535个字节 | |
mediumtext | 最大16777215个字节 | 大段文本时,如新闻、文章、论文等 |
longtext | 最大4294967295个字节 | 大段文本时,如新闻、文章、论文等 |
1、VARCHAR(size):0~65535字节 可变长度字符串,最大65532字节,1-3个字节用于记录大小【utf8编码size最大21844字符,gbk编码最大32766字符 】
2、查询速度:char > varchar
3、text与char、varchar不同的是,text不可以有默认值,能用varchar的地方不用text
日期+时间数据类型
数据类型 | 格式 |
---|---|
date | 年-月-日,如:2024-4-8 |
datetime | 年-月-日 时:分:秒,如:2024-4-8 16:17:40 |
timestamp | 年-月-日 时:分:秒,如:2024-4-8 16:17:40 |
time | 时:分:秒,如:16:17:40 |
year | 年,如:2024 |
datetime保存时间的范围: 1000-01-01 00:00:00
到 9999-12-31 23:59:59
timestamp保存时间的范围: 1970-01-01 00:00:01
到 2038-01-19 03:14:07
展示当前数据库所有表
show tables;
描述表结构
desc 表名;
查看表的创建语