首批通过分布式安全可靠测评,为关键业务系统打造
基于 OB Cloud 搭建手机下单 APP 体验 HTAP
更新时间:2026-06-21 17:10:06
说明
本篇教程也同步在 OB Cloud 控制台上线了交互式教程,可以跟随教程在真实的 OB Cloud 环境中进行互动体验,登录 OB Cloud 控制台 后,单击左侧导航栏的 实践教程 即可查看全部已上线的交互式教程。
背景信息
本教程基于 OceanBase 搭建手机下单 APP 来体验 OceanBase 的 HTAP 性能。这里搭建的手机下单 APP 不仅支持 PC 端直接下单操作,还创新性地融入了多人手机扫码功能,实现即时在线下单,增强了用户体验和交互的灵活性。APP 中的订单数据写入 OB 的 TP 数据库,并通过 Flink CDC 实时同步到 OB 的 AP 数据库,并从 AP 库中查询最新数据。这一同步机制为从 AP 库获取最前沿的订单数据提供了强有力的支持。
前提条件
您拥有当前实例的实例管理员和数据读取权限,如无权限,可联系组织管理员进行添加。
您有可用的分析型(MySQL)集群实例,请参考创建租户 创建租户;如果您目前没有可用的实例,可以 开通 OB Cloud 云数据库的免费试用实例,点击查看 免费试用的规则和开通方法。
您使用的数据库内核版本高于 4.3.0,源端开启 Binlog 服务。
您拥有组织管理员权限,并已创建集群实例,详细内容参见创建集群实例。
您拥项目管理员或实例管理员可对项目中的实例进行操作,如无权限,可联系组织管理员添加权限。
您已部署 Flink CDC。
准备工作
创建账号
- 选择您的 tutorial_tenant 租户。
- 进入 租户控制台 页面。
- 单击 创建账号。
- 在弹出框中填写 账号名称 为
tutorial_user,您可自定义您的租户账号名称。 - 账号类型:选择为普通账号。
- 单击图标,授权数据库选择 default_database 。
说明
OB Cloud 为您自动创建了一个空的 default_database 数据库,您也可以根据实际使用情况选择或创建其它数据库,更多内容参见创建数据库。
单击图标,为当前账号授读写权限。
单击随机生成,单击后系统将为您自动生成密码,请复制后妥善保存。您也可自定义密码,密码长度为 10-32 位,且至少包含 2 个大写英文字符、2 个小写英文字符、2 个数字和 2 个特殊字符;支持的特殊字符为:
~ ! @ # % ^ & * _ - + = \| ( ) { } [ ] : ; , . ? / |。单击 创建。
创建数据库并建表
进入 租户控制台 页面。
单击 创建数据库,在弹出框中填写数据库名称 tptest,选择字符集,作为 TP 库。
单击 创建。
重复 步骤 1-3 创建 aptest 数据库,作为 AP 库。
分别在 TP 库和 AP 库中建表。
进入 SQL 控制台 页面。
选择
tutorial_user账号并填入密码登录,单击 确认。双击左侧
tptest数据库,打开一个新的 SQL 窗口。执行如下 SQL。create table tp_car_orders( order_id bigint primary key NOT NULL AUTO_INCREMENT, -- order_time 默认值由数据库自动生成 order_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, customer_name varchar(25) COLLATE utf8mb4_bin NOT NULL, sale_nation varchar(25) COLLATE utf8mb4_bin NOT NULL, sale_region varchar(25) COLLATE utf8mb4_bin NOT NULL, car_color varchar(25) COLLATE utf8mb4_bin NOT NULL, car_price decimal(15,2) NOT NULL );单击图标,执行 SQL 语句。执行记录 页签将显示创建的表信息。
双击左侧
aptest数据库,打开一个新的 SQL 窗口。执行如下 SQL。create table ap_car_orders( order_id bigint primary key NOT NULL AUTO_INCREMENT, -- order_time 从 tp_car_orders 表同步过来 order_time timestamp NOT NULL, customer_name varchar(25) COLLATE utf8mb4_bin NOT NULL, sale_nation varchar(25) COLLATE utf8mb4_bin NOT NULL, sale_region varchar(25) COLLATE utf8mb4_bin NOT NULL, car_color varchar(25) COLLATE utf8mb4_bin NOT NULL, car_price decimal(15,2) NOT NULL ) WITH COLUMN GROUP (each column);单击图标,执行 SQL 语句。执行记录 页签将显示创建的表信息。
双击左侧
tptest数据库,重新打开一个新的 SQL 窗口。执行如下 SQL,给
tptest数据库的三张表模拟若干数据。INSERT INTO `tp_car_orders` (`car_price`,`car_color`,`sale_region`,`sale_nation`,`customer_name`) VALUES (299900,'blue','Washington','America','Lucy'); INSERT INTO `tp_car_orders` (`car_price`,`car_color`,`sale_region`,`sale_nation`,`customer_name`) VALUES (299900,'blue','Washington','America','Lily'); INSERT INTO `tp_car_orders` (`car_price`,`car_color`,`sale_region`,`sale_nation`,`customer_name`) VALUES (299900,'blue','Washington','America','Tina'); INSERT INTO `tp_car_orders` (`car_price`,`car_color`,`sale_region`,`sale_nation`,`customer_name`) VALUES (299900,'blue','Washington','America','Amy'); INSERT INTO `tp_car_orders` (`car_price`,`car_color`,`sale_region`,`sale_nation`,`customer_name`) VALUES (299900,'blue','Washington','America','小张'); INSERT INTO `tp_car_orders` (`car_price`,`car_color`,`sale_region`,`sale_nation`,`customer_name`) VALUES (299900,'blue','Washington','America','小李'); INSERT INTO `tp_car_orders` (`car_price`,`car_color`,`sale_region`,`sale_nation`,`customer_name`) VALUES (299900,'blue','Washington','America','小孙');单击图标,执行 SQL 语句。执行记录 页签将显示相关信息。
构建 flink 同步链路
启动 flink CDC 后,进入部署 flink 文件夹下,执行 ./bin/sql-client.sh 命令,打开 Flink SQL 界面。依次执行如下 SQL。
```sql
CREATE TEMPORARY TABLE tp_car_orders_cdc (
order_id bigint primary key NOT ENFORCED,
order_time timestamp NOT NULL,
customer_name varchar(25) NOT NULL,
sale_nation varchar(25) NOT NULL,
sale_region varchar(25) NOT NULL,
car_color varchar(25) NOT NULL,
car_price decimal(15,2) NOT NULL
) WITH (
'connector' = 'mysql-cdc',
'hostname' = '******.huawei-cn-southwest-2.oceanbase.cloud',
'port' = '3306',
'username' = 'wktest',
'password' = '******',
'database-name' = 'tptest',
'server-time-zone'='Asia/Shanghai',
'table-name' = 'tp_car_orders',
'server-id' = '100-200'
);
CREATE TEMPORARY TABLE ap_car_orders_cdc (
order_id bigint primary key NOT ENFORCED,
order_time timestamp NOT NULL,
customer_name varchar(25) NOT NULL,
sale_nation varchar(25) NOT NULL,
sale_region varchar(25) NOT NULL,
car_color varchar(25) NOT NULL,
car_price decimal(15,2) NOT NULL
) WITH (
'connector' = 'jdbc',
'url' = 'jdbc:mysql://******.huawei-cn-southwest-2.oceanbase.cloud:3306/aptest',
'username' = 'wktest',
'password' = '******',
'table-name' = 'ap_car_orders'
);
INSERT INTO ap_car_orders_cdc SELECT * FROM tp_car_orders_cdc;
```
创建上述 Flink CDC 同步链路后,数据会实时从 tptest 数据库同步到 aptest 数据库。可以从 SQL 控制台查看对应的表数据。

配置应用
执行如下命令拉取应用代码。
git clone https://github.com/dengfuping/oceanbase-playground.git执行
cd oceanbase-playground进入项目文件夹。执行
pnpm i安装项目依赖。新建
wk.env文件并配置 TP、AP 库的数据库连接串,内容示例如下。OLTP_DATABASE_URL="mysql://wktest:******@******.huawei-cn-southwest-2.oceanbase.cloud:3306/tptest" OLAP_DATABASE_URL="mysql://wktest:******@******.huawei-cn-southwest-2.oceanbase.cloud:3306/aptest"执行
pnpm run dev启动应用。访问启动应用中的连接。

执行
npm run seed导入测试数据(可选)。
按照上述步骤执行操作后,可以通过网页查看运行效果。 