❝开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共2760人左右 1 + 2 + 3 + 4 +5 + 6 + 7 + 8 +9)(1 2 3 4 5 6 7群均已爆满,,开8群200+ 9群)
Austindatabases公众号已经开启了,AI 文章分析,AI 文章问答,比如你想知道AustinDatabases 里面,说了多少种数据库,那些是讲 MySQL,那些是PostgreSQL, 那些是OB ,POLARDB ,MongoDB ,SQL Server, 阿里云的,问他他会列出来,同时如果有问题不明白,可以将文章的文字粘贴到公众号提供的专用AI ,公众号将通过众多文章(目前1300多篇)来进行尝试性的解释。使用方法,直接到微信公众号中点击服务,选择AI问答。如下示例


一直提到框架学习法,其中主体的思想就是如何快速的学习某项数据库产品的知识。其中框架学习法里面有一条系统学习,系统学习是在给学习的知识搭建“骨架”,所以从这期起,开始搭建OceanBase学习的骨架。今年要和“申公豹”一样修炼岂可怠慢。

今天开始学习第5章OBCA 应用开发,本期学习的是应用开发,此为上半部分

OceanBase 数据库常见的客户端工具有三种:
1 MyClient 的客户端工具:如果你使用的是 MySQL 租户,就可以使用 MyCircle 的客户端去连接。MySQL 客户端工具的运行参数中,参数 -h 后指定数据库的 IP 地址,参数 -u 后指定数据库的用户名(包括用户名、租户名和集群名),大写的参数 -P 后指定数据库的端口号(一般指定 2883 端口,它是 OB Proxy 的端口),小写的参数 -p 后指定对应用户的密码,参数 -D 后指定对应的数据库名称。
2 OB client 客户端工具:如果你的租户类型是 MySQL 租户或 Oracle 租户,就可以使用 OB client 的工具去连接。OB client 这个命令行工具与 MySQL 命令行工具写法是一样的。需要注意的是,MyCircle 客户端只能连接 MySQL 的租户,而 OB client 支持连接 MySQL 和 Oracle 两种租户。
3 ODC 图形化工具:ODC (OceanBase Developer Center) 是 OceanBase 打造的一个企业级的数据库开发平台。它支持个人 PC 桌面版本和 Web 版,并且支持连接 MySQL 租户和 Oracle 租户。
桌面版 ODC:安装比较简单,下载安装包安装完成后创建数据源连接即可进行数据库开发。
Web 版 ODC:安装稍微复杂一点,分为 6 个步骤,其中 ODC 软件的安装可以通过 OATT 自动化部署工具完成。Web 版 ODC 对服务器有配置要求,例如以 20 个 ODC 用户为例,要求服务器最少 2C4G 的配置。
安装成功后,通过浏览器输入 ODC 服务器的 IP 地址以及端口号 8989 即可正常访问。登录 ODC 后,第一步需要创建数据源,配置要连接的数据库。创建好数据源后,选择需要进行 SQL 开发的数据源,在 SQL 编辑窗口中输入 SQL 语句进行数据库开发。

OceanBase 还提供了对 Java、C、Python这三种常用开发语言的支持。
Java 驱动 (JDBC) 和 C 驱动程序支持 MySQL 租户和 Oracle 租户两种类型。要使用 Java 进行数据库开发,首先需要去官方网站下载对应版本的 JDBC 驱动,并在 Java 工程中导入 JDBC 的驱动包。编写 Java 程序时,需要在程序中加载 JDBC 的驱动程序,数据库的 JDBC 连接串需要按照指定的格式编写,包括 OceanBase 关键字、IP 地址和数据库端口号 (2883)、数据库名称、用户名和密码。
Python 驱动目前只支持连接 MySQL 租户。

这里注意如果是开源的OB,可以通过MySQL的客户端来进行连接,注意端口号是 2883 默认的情况。同时也要注意ODC桌面的WEB部署的方式,个人空间和团队空间之间的区别



在部署完ODC后,通过浏览器可以访问 http://IP:8989 端口访问OB的开发中心。
ODC主要有以下几个区域: SQL 开发窗口
SQL 编辑区域:SQL 编辑区域中可编辑和执行 SQL 语句。
执行记录页签:可以查看当前连接进程中每次执行 SQL 语句的记录。
日志页签:日志页签中可查看当前 SQL 窗口的执行记录。
结果页签:结果页签中可查看当前 SQL 语句的执行结果。
在JAVA 驱动部分是与应用与数据库沟通的关键,也是应用驱动数据库的关键,这里OB的JAVA支持的租户类型:Java 驱动 (JDBC) 程序支持 MySQL 租户和 Oracle 租户两种类型。我们在官网上下载对应的JDBC版本,升级了OB后可以查看JDBC是否需要进行升级使用更新的功能。
集成到开发环境:在进行开发时,如果使用的是 Eclipse 或其他 IDE 开发工具,需要在 Java 工程中导入 JDBC 的驱动包。
加载驱动程序:在编写 Java 程序时,需要在程序中加载 JDBC 的驱动程序。数据库的 JDBC 连接串需要按照特定的格式编写。其写法以 JDBC: 开头,后面是 OceanBase 关键字,然后是数据库的 IP 地址和端口号 (2883),接着是数据库的名称,最后是 User(用户名)和 Password(密码)。
一个示例如 JDBC冒号后面是OB关键字,然后下一部分是IP地址和数据库端口号2883,接下来是数据库的名称,User是用户名,Password是密码。
程序执行:程序创建好之后,可以通过 Java 命令去执行该程序。





首先我们遇到的第一个知识点就是租户的概念:
理解租户类型和兼容模式是我们要做的第一个功课,OceanBase 支持多种租户类型,最主要的是 MySQL 租户和 Oracle 租户。你需要根据你的应用场景和迁移需求选择合适的租户类型。例如,如果你的原有系统是 MySQL 数据库,迁移到 OceanBase 时通常会选择 MySQL 租户类型,社区版 OceanBase 只支持创建 MySQL 兼容模式的租户。
同时在资源规划与分配中在设计租户时,你需要根据业务量和性能需求规划租户所需的CPU、内存和磁盘空间等资源。OceanBase 企业版和社区版对最小配置有不同的建议,而且需要考虑 OCP 等组件以及操作系统预留内存。了解如何通过资源规格定义和调整租户资源是必要的,此外,OceanBase 提供了租户级别的资源隔离,确保不同租户之间的资源互不影响。
在MySQL的租户设计中,OceanBase 的 MySQL 租户兼容 MySQL 5.7 和 8.0 版本的绝大部分功能和语法,包括数据类型、过程性语言、函数、触发器以及其他常见功能。这样可以确保你现有的 MySQL 应用程序能够平滑地迁移至 OceanBase 数据库,原有系统的表结构、索引、视图等对象基本上无需改造。
在 MySQL 租户下进行表结构设计时,也需要结合 OceanBase 的特性。对于数据量比较大的表,可以设计成 分区表。MySQL 租户支持多种分区类型,包括 Range 分区、List 分区、Hash 分区、Key 分区以及 Range Columns List Columns 和组合分区。你需要根据数据的特点选择合适的分区类型,并选择区分度较大的列作为分区键。 在索引设计方面,OceanBase 在 MySQL 模式下默认创建的是局部索引。局部索引是针对单个分区上的数据所创建的索引。如果你需要在索引上保证全局唯一性,那么需要在索引列上添加表的分区列。 最后,从 4.2.0 版本之后,OceanBase 提供了 表组 功能,并且在表组的属性上有了很大的改进。你可以将需要进行关联查询的分区表指定到同一个表组中。OceanBase 在调度时会将同号的分区调度到同一个主机上,这样在进行关联查询时,数据就在同一个 OBServer 上,避免了跨机器的访问,从而提升 SQL 语句的查询性能。在创建表组之前,需要根据表的关联性和查询意图,将相关的表放在同一个表组中。

Oracle 租户在数据类型、SQL 功能和数据库对象等基本功能上与 Oracle 数据库兼容。OceanBase 的 Oracle 客户在过程化程序语言方面也已经基本能够兼容全部的研发功能。此外,在数据库安全、备份恢复、高可用和优化器等高级特性上,OceanBase 数据库的兼容性也非常好,甚至在某些特性上还要优于 Oracle 数据库。 在租户设计 时,如果您以前使用的是 Oracle 数据库,现在迁移到 OceanBase 集群,那么就需要选择 Oracle 的租户类型。这样做是为了可以平滑迁移您的生产系统。原有系统的表结构、索引、视图等对象在基本功能上无需进行大的改造

在我们对迁移到OB的数据库中的租户设计的原则有什么,也是我们需要注意的 在 OceanBase 中,租户的设计是一个至关重要的环节,它会直接影响到数据库的性能、可维护性和未来的扩展性。根据您提供的资料和我们的对话历史,租户设计的重点主要包括以下几个方面:
选择合适的租户类型 (选择合适的租户):
这是首要考虑的因素。您需要根据原有的数据库系统类型来选择 OceanBase 的租户类型,例如,如果原系统是 MySQL 数据库,则应选择 MySQL 租户类型。如果原系统是 Oracle 数据库,则应选择 Oracle 租户类型。
选择正确的租户类型能够最大程度地保证兼容性,使得原有的应用程序和数据库对象(如表结构、索引、视图等)能够平滑迁移,无需或只需少量改造。OceanBase 的 MySQL 租户兼容 MySQL 5.7 和 8.0 的绝大部分功能和语法,而 Oracle 租户在数据类型、SQL 功能和数据库对象等基本功能上与 Oracle 数据库兼容,并且在过程化程序语言和高级特性上也具备良好的兼容性。
这里有几个需要注意的部分:
1 租户类型一旦创建后就无法修改
2 租户类型一旦创建后就无法修改,创建租户后,需要根据具体的业务特点进行资源规划和优化,以保证性能和稳定性,针对不同业务特点的资源规划。
大量写入业务 (High Write Volume): 需要设置较大的内存和日志盘规格,以满足高并发写入的需求。
大量消耗 CPU 资源的业务 (High CPU Consumption): 需要将租户错落分布于不同的节点,以避免单个节点负载不均衡,甚至造成热点节点并影响业务 。这可以通过合理的 PZ (Partition Zone) 设计来实现。 租户的设计是使用 OceanBase 的关键步骤。在创建租户之前,务必根据业务的兼容性需求选择合适的租户类型(MySQL 或 Oracle)。创建租户后,需要根据业务的写入量和 CPU 消耗情况进行合理的资源规划和节点分布。对于从传统数据库迁移的业务,可以先采用单 Unit 的对等架构以保证平滑迁移,当业务量增长超出单机能力时,再考虑扩展为多 Unit 租户,并进行合理的数据分片设计以最小化分布式事务的影响,充分利用 OceanBase 的水平扩展能力。



创建数据表 (Creating Tables) 在 OceanBase 的 MySQL 租户下进行应用开发时,创建数据表是至关重要的步骤 。这与传统的 MySQL 数据库类似,但需要考虑 OceanBase 分布式数据库的特性。
基本流程:
1. 根据业务系统进行建模,识别实体及其关系,绘制 ER 图。
2. 将 ER 模型转换为逻辑模型,选择合适的属性,处理一对多、多对多关系 (例如,通过创建中间表)。
3. 将逻辑模型转化为物理模型,需要结合 OceanBase 数据库的特性,例如是否需要分区。
创建表的原则和建议:
选择合适的列类型:例如日期类型使用 DATE 或 TIMESTAMP,可变长度字符串使用 VARCHAR,整数类型使用 INT。
定义主键 (Primary Key):用于唯一标识表中的每一行数据,例如学生表的学生 ID 。主键具有非空、唯一和全局唯一的特性。在 OceanBase 中,数据表是以主键有序存储的 。
定义非空约束 (NOT NULL Constraint):确保某些列不允许为空值,例如学生的姓名。
考虑唯一性约束 (UNIQUE Constraint):保证表内索引面上不存在两行完全相同的值,NULL 值也会存储在唯一索引中。
创建表的语法:
基本的 CREATE TABLE 语句与 MySQL 类似,例如:
分区表 (Partitioned Tables)对于数据量比较大的表,为了利用 OceanBase 分布式数据库的性能,需要将表进行分区。OceanBase 的 MySQL 租户支持多种分区类型:
Range 分区:按范围分区,例如按日期字段按月或天分区。
List 分区:为每个分区键指定一组离散的值,例如按省份字段分区。
Hash 分区:通过哈希函数将数据打散。
Key 分区:类似于哈希分区 。
Range Columns/List Columns 分区:支持非整形数据类型进行 Range 和 List 分区。
组合分区:将多种分区方式组合使用
创建分区表的语法是在 CREATE TABLE 语句后添加 PARTITION BY 子句,指定分区字段和分区类型 :
分区键的选择需要考虑区分度,Range 分区通常选择具有明显范围特征的字段(如时间)。
表组 (Table Groups):
为了解决跨机器关联查询的性能问题,OceanBase 提供了表组功能。
可以将具有相同分区号的数据(例如,学生表和选课表的 P0 分区)调度到同一台主机上,避免跨机器访问。
创建表时可以通过 TABLEGROUP 属性将其指定到一个表组: 二、删除数据表 (Deleting Tables)
使用 DROP TABLE 语句删除已存在的数据表: 三、查看数据表定义 (Viewing Table Definitions)
使用SHOWCREATE TABLE语句查看表的创建语句 :
使用 SHOW TABLES FROM database_name 语句查看指定数据库中的所有表: 四、数据操作语言 (DML) - 读写数据 OceanBase 的 MySQL 租户支持标准的 DML 语句来操作表中的数据:
插入数据 (INSERT):向表中插入新的数据行。可以插入单行或多行数据。
更新数据 (UPDATE):修改表中已存在的记录。
删除数据 (DELETE):删除表中的记录。可以使用 WHERE 子句指定删除条件。
查询数据 (SELECT):从表中检索数据。支持单表查询、多表关联查询 (内连接 INNER JOIN、左外连接 LEFT JOIN、右外连接 RIGHT JOIN、全外连接 FULL JOIN) 以及按分区查询。
五、索引 (Indexes)
为了提高数据库查询性能,可以在表的某些列上创建索引。OceanBase 的 MySQL 租户支持多种索引类型,包括 B-树索引、唯一索引和二级索引等、。对于分区表,索引可以分为局部索引和全局索引 、。创建索引时需要注意覆盖索引、等值优先等原则,并避免对频繁更新的列进行索引、。创建索引的语法与标准 MySQL 类似,可以使用 LOCAL 或 GLOBAL 关键字指定索引类型。




从OB4.2开始,表组没有了分区的概念,这里只需要定义SHARDING属性,就可以灵活的将不同的分区方式的表加入。

临时工:数据库人生路,如何救赎自己 -- 答某个迷茫DBA的职业咨询
开源软件是心怀鬼胎的大骗局 -- 开源软件是人类最好的正能量 --- 一个人的辩论会
PostgreSQL 相关文章
“PostgreSQL” 高性能主从强一致读写分离,我行,你没戏!
全世界都在“搞” PostgreSQL ,从Oracle 得到一个“馊主意”开始
PostgreSQL 加索引系统OOM 怨我了--- 不怨你怨谁
PostgreSQL “我怎么就连个数据库都不会建?” --- 你还真不会!
PostgreSQL 稳定性平台 PG中文社区大会--杭州来去匆匆
PostgreSQL 分组查询可以不进行全表扫描吗?速度提高上千倍?
POSTGRESQL --Austindatabaes 历年文章整理
PostgreSQL 查询语句开发写不好是必然,不是PG的锅
跟我学OceanBase4.0 --阅读白皮书 (OB分布式优化哪里了提高了速度)
跟我学OceanBase4.0 --阅读白皮书 (4.0优化的核心点是什么)
跟我学OceanBase4.0 --阅读白皮书 (0.5-4.0的架构与之前架构特点)
跟我学OceanBase4.0 --阅读白皮书 (旧的概念害死人呀,更新知识和理念)
PolarDB 相关文章
“PostgreSQL” 高性能主从强一致读写分离,我行,你没戏!
POLARDB 添加字段 “卡” 住---这锅Polar不背
PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)
PolarDB 答题拿-- 飞刀总的书、同款卫衣、T恤,来自杭州的Package(活动结束了)
PolarDB for MySQL 三大核心之一POLARFS 今天扒开它--- 嘛是火星人
PolarDB-MySQL 并行技巧与内幕--(怎么薅羊毛)
PolarDB 并行黑科技--从百套MySQL撤下说起 (感谢8018个粉丝的支持)
PolarDB 杀疯了,Everywhere Everytime Everydatabase on Serverless
POLARDB 从一个使用者的角度来说说,POALRDB 怎么打败 MYSQL RDS
PolarDB 最近遇到加字段加不上的问题 与 使用PolarDB 三年感受与恳谈
PolarDB 从节点Down机后,引起的主从节点强一致的争论
PolarDB serverless 真敢搞,你出圈了你知道吗!!!!
PolarDB VS PostgreSQL "云上"性能与成本评测 -- PolarDB 比PostgreSQL 好?
临时工访谈:PolarDB Serverless 发现“大”问题了 之 灭妖记 续集
临时工访谈:庙小妖风大-PolarDB 组团镇妖 之 他们是第一
POLARDB -- Ausitndatabases 历年的文章集合
PolarDB for PostgreSQL 有意思吗?有意思呀
MongoDB 大俗大雅,上来问分片真三俗 -- 4 分什么分
MongoDB 大俗大雅,高端知识讲“庸俗” --3 奇葩数据更新方法
MongoDB 大俗大雅,高端的知识讲“通俗” -- 2 嵌套和引用
MongoDB 大俗大雅,高端的知识讲“低俗” -- 1 什么叫多模
MongoDB 合作考试报销活动 贴附属,MongoDB基础知识速通
MongoDB 使用网上妙招,直接DOWN机---清理表碎片导致的灾祸 (送书活动结束)
数据库 《三体》“二向箔” 思维限制 !8个公众号联合抽奖送书 建立数据库设计新思维
MongoDB 是外星人,水瓶座,怎么和不按套路出牌的他沟通?
没有谁是垮掉的一代--记 第四届 OceanBase 数据库大赛
阿里云系列
阿里云数据库产品权限设计缺陷 ,六个场景诠释问题,你可以做的更好?
阿里云数据库--市场营销聊胜于无--3年的使用感受与反馈系列
阿里云数据库产品 对内对外一样的卷 --3年阿里云数据库的使用感受与反馈系列
阿里云数据库使用感受--客户服务问题深入剖析与什么是廉价客户 --3年的使用感受与反馈系列
阿里云数据库使用感受--操作界面有点眼花缭乱 --3年的使用感受与反馈系列
