---
title: "基于 OB Cloud 搭建手机下单 APP 体验 HTAP - OB Cloud 云数据库 master | OceanBase 文档中心"
description: 基于 OB Cloud 搭建手机下单 APP 体验 HTAP 说明 本篇教程也同步在 OB Cloud 控制台上线了交互式教程，可以跟随教程在真实的 OB Cloud 环境中进行互动体验，登录 OB Cloud 控制台 后，单击左侧导航栏的 实践教程 即可查看全部已上线的交互式教程。 背景信息 本教程基于 Ocean…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*qbZXRo_94ZEAAAAAAAAAAAAADiGDAQ/original) OB Cloud 云数据库

# 基于 OB Cloud 搭建手机下单 APP 体验 HTAP

更新时间：2026-06-21 17:10:06

#### 说明

本篇教程也同步在 OB Cloud 控制台上线了交互式教程，可以跟随教程在真实的 OB Cloud 环境中进行互动体验，登录 [OB Cloud 控制台](https://console-cn.oceanbase.com/) 后，单击左侧导航栏的 **实践教程** 即可查看全部已上线的交互式教程。

## 背景信息

本教程基于 OceanBase 搭建手机下单 APP 来体验 OceanBase 的 HTAP 性能。这里搭建的手机下单 APP 不仅支持 PC 端直接下单操作，还创新性地融入了多人手机扫码功能，实现即时在线下单，增强了用户体验和交互的灵活性。APP 中的订单数据写入 OB 的 TP 数据库，并通过 Flink CDC 实时同步到 OB 的 AP 数据库，并从 AP 库中查询最新数据。这一同步机制为从 AP 库获取最前沿的订单数据提供了强有力的支持。

## 前提条件

- 您拥有当前实例的实例管理员和数据读取权限，如无权限，可联系组织管理员进行添加。
 - 您有可用的分析型（MySQL）集群实例，请参考[创建租户](https://www.oceanbase.com/docs/common-oceanbase-cloud-10000000001780107) 创建租户；如果您目前没有可用的实例，可以 [开通 OB Cloud 云数据库的免费试用实例](https://www.oceanbase.com/free-trial#trial)，点击查看 [免费试用的规则和开通方法](https://www.oceanbase.com/docs/common-oceanbase-cloud-1000000000703494)。
 - 您使用的数据库内核版本高于 4.3.0，源端开启 Binlog 服务。
 - 您拥有组织管理员权限，并已创建集群实例，详细内容参见创建集群实例。
 - 您拥项目管理员或实例管理员可对项目中的实例进行操作，如无权限，可联系组织管理员添加权限。
 - 您已部署 Flink CDC。

## 准备工作

### 创建账号

1. 选择您的 tutorial_tenant 租户。

2. 进入 **租户控制台** 页面。
 3. 单击 **创建账号**。
 4. 在弹出框中填写 **账号名称** 为 `tutorial_user`，您可自定义您的租户账号名称。
 5. **账号类型**:选择为普通账号。
 6. 单击图标，授权数据库选择 default_database 。

#### 说明

OB Cloud 为您自动创建了一个空的 default_database 数据库，您也可以根据实际使用情况选择或创建其它数据库，更多内容参见[创建数据库](https://www.oceanbase.com/docs/common-oceanbase-cloud-0000000002242270)。

7. 单击图标，为当前账号授读写权限。
 8. 单击随机生成，单击后系统将为您自动生成密码，请复制后妥善保存。您也可自定义密码，密码长度为 10-32 位，且至少包含 2 个大写英文字符、2 个小写英文字符、2 个数字和 2 个特殊字符；支持的特殊字符为：`~ ! @ # % ^ & * _ - + = \| ( ) { } [ ] : ; , . ? / |`。
 9. 单击 **创建**。

### 创建数据库并建表

1. 进入 **租户控制台** 页面。
 2. 单击 **创建数据库**，在弹出框中填写数据库名称 tptest，选择字符集，作为 TP 库。
 3. 单击 **创建**。
 4. 重复 步骤 1-3 创建 aptest 数据库，作为 AP 库。
 5. 分别在 TP 库和 AP 库中建表。

      1. 进入 **SQL 控制台** 页面。
      2. 选择 `tutorial_user` 账号并填入密码登录，单击 **确认**。
      3. 双击左侧 `tptest`数据库，打开一个新的 SQL 窗口。执行如下 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
        );

        ```
      4. 单击图标，执行 SQL 语句。**执行记录** 页签将显示创建的表信息。
      5. 双击左侧 `aptest`数据库，打开一个新的 SQL 窗口。执行如下 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);

        ```
      6. 单击图标，执行 SQL 语句。**执行记录** 页签将显示创建的表信息。
      7. 双击左侧 `tptest`数据库，重新打开一个新的 SQL 窗口。
      8. 执行如下 SQL，给 `tptest` 数据库的三张表模拟若干数据。

        ```sql
        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','小孙');

        ```
      9. 单击图标，执行 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 控制台查看对应的表数据。

![Flink](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/cloud/tutorial/flink-job%E5%90%AF%E5%8A%A8.png)

## 配置应用

1. 执行如下命令拉取应用代码。

   ```shell
   git clone https://github.com/dengfuping/oceanbase-playground.git

   ```
 2. 执行 `cd oceanbase-playground` 进入项目文件夹。
 3. 执行 `pnpm i` 安装项目依赖。
 4. 新建 `wk.env` 文件并配置 TP、AP 库的数据库连接串，内容示例如下。

   ```shell
   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"

   ```
 5. 执行 `pnpm run dev` 启动应用。
 6. 访问启动应用中的连接。 ![第一次运行](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/cloud/tutorial/%E7%AC%AC%E4%B8%80%E6%AC%A1%E8%BF%90%E8%A1%8C.png)
 7. 执行 `npm run seed` 导入测试数据（可选）。 ![导数](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/cloud/tutorial/%E5%AF%BC%E6%95%B0.png)

按照上述步骤执行操作后，可以通过网页查看运行效果。 ![运行效果](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/cloud/tutorial/%E8%BF%90%E8%A1%8C%E6%95%88%E6%9E%9C.png)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
