全部產品
Search
文件中心

PolarDB:將AI模型推理結果寫回資料庫

更新時間:Aug 26, 2026

本文描述了如何通過PolarDB for AI在資料庫中產生含有AI模型推理列的資料表PolarDB for AI Augmented Table(下文簡稱AAT)。經過人工智慧增強資料表可廣泛應用於Data+AI的多個情境,以協助使用者進行資料洞察,並根據實際情況調整其決策。

什麼是AAT

一張含有AI模型或推理資料列的表被稱為AAT。樣本如下:

  • 圖1中的表為原表。其中,TripID為主鍵,Airline、Flight、AirportFrom、AirportTo、DayOfWeek、Time和Length為一次航班飛行的相關資訊。

  • 圖2中的表為圖1中表的AAT,表中的result列是根據一個AI模型產生出來的結果。該表既包含了資料,又包含了AI推理產生結果。

PolarDB對圖2中的資料庫表進行充分利用,可以協助使用者來分析自己的航班有沒有可能延誤,也可以協助航空公司來改進相關航班資訊,提升它的準點率。

圖1. 原表

image.png

圖2. AAT

image.png

在關係型資料庫中引入並使用AAT會帶來很多便捷之處。比如:對使用者群體的劃分、銷售量的預測以及基於大模型產生內容等,都可以通過AAT在資料庫中進行儲存、計算和使用。AAT作為資料庫外表,在使用上和資料庫裡面其他的表沒有太大的差別。

準備工作

  • 開啟冷資料歸檔:為了避免AI模型對資料庫的頻繁寫入,PolarDB將AAT作為外部表格儲存在Object Storage Service上。因此需前往PolarDB控制台的配置與管理 > 資料與生命週期 > 冷資料歸檔(冷資料)頁面開啟冷資料歸檔功能。

  • 建立資料庫:建立一個新的資料庫polar4ai,系統自動產生的AAT將儲存於資料庫polar4ai中。在建立資料庫時,請選擇字元集utf8mb4,並選擇AI節點的串連資料庫帳號進行授權,授予該帳號讀寫權限。

通過AAT串連AI和資料庫

通過以下樣本,來描述如何通過AAT來串連AI和資料庫。在實際使用過程中,請根據實際情況進行操作。

  1. 建立一個AI模型。

    /*polar4ai*/CREATE MODEL airlines_gbm WITH (
    model_class='lightgbm', 
    x_cols ='Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length', 
    y_cols='Delay',
    model_parameter=(boosting_type='gbdt', n_estimators=100, max_depth=8, num_leaves=256)
    ) AS (SELECT * FROM airlines_train)
  2. 查看當前叢集下的模型列表。

    /*polar4ai*/SHOW MODELS;

    執行結果如下:

    +--------------------+-------------+--------------+
    | model_name         | model_class | model_status |
    +--------------------+-------------+--------------+
    | airlines_gbm       | lightgbm    | saved_oss    |
    +--------------------+-------------+--------------+
  3. 使用建立好的模型進行離線推理,自動產生AAT。

    /*polar4ai*/SELECT TripID,Delay FROM PREDICT (MODEL airlines_gbm, SELECT * FROM airlines_train) WITH (
    s_cols='TripID,Delay',
    x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length',
    y_cols='Delay',
    primary_key='TripID', 
    mode='async',
    into_type='db'
    ) INTO airlines_gbm_predict;

    其中,airlines_gbm_predict為系統即將自動構建的AAT的表名,primary_key為表中的主鍵。離線推理SQL執行完成後,會返回一個任務ID。如:8c9e205a-42bc-11f0-b8ab-6300f792f4b8。

  4. 查看離線任務狀態。

    通過離線任務ID來檢查任務狀態。當任務狀態為finish時,代表AI模型已經完成相應的推理。

    /*polar4ai*/SHOW TASK `8c9e205a-42bc-11f0-b8ab-6300f792f4b8`	

    執行結果如下:

    +------------+---------------------------------------------------------------------------------------------------------------------------------------------+---------+----------------+----------------+--------+--------------+----------+
    | taskStatus | filePath                                                                                                                                    | results | startTime      | endTime        | errMsg | successBatch | allBatch |
    +------------+---------------------------------------------------------------------------------------------------------------------------------------------+---------+----------------+----------------+--------+--------------+----------+
    | finish     | http://db4ai-xxx.aliyuncs.com/xxx/polar4ai/airlines_gbm_predict-0.csv?security-token=xxx&OSSAccessKeyId=xxx&Expires=xxx&Signature=xxx       |         | 2025-04-21 xxx | 2025-04-21 xxx |        |              |          |
    +------------+---------------------------------------------------------------------------------------------------------------------------------------------+---------+----------------+----------------+--------+--------------+----------+
  5. 查看在資料庫polar4ai下自動產生的AAT表結構。

    SHOW CREATE TABLE polar4ai.airlines_gbm_predict;

    執行結果如下:

    +---------------------------+------------------------------------------------------------------------------------------------------------+
    | Table                     | Create Table                                                                                               |
    +---------------------------+------------------------------------------------------------------------------------------------------------+
    | airlines_gbm_predict      | CREATE TABLE `airlines_gbm_predict` (
      `TripID` int(11) DEFAULT NULL,
      `Delay` tinyint(1) DEFAULT NULL,
      `result` text
    ) ENGINE=CSV DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci /*!99990 800010128 NULL_MARKER='NULL' */ CONNECTION='default_oss_server' |
    +---------------------------+------------------------------------------------------------------------------------------------------------+

    新產生的AAT與原表相對比,TripID和Delay的類型和長度均與原表一致。result為AI模型推理出來的結果,並作為原表的增強列寫入了AAT中。

    +----------------+--------------------------------------------------------------------------------------------------------------+
    | Table          | Create Table                                                                                                 |
    +----------------+--------------------------------------------------------------------------------------------------------------+
    | airlines_train | CREATE TABLE `airlines_train` (
      `TripID` int(11) NOT NULL AUTO_INCREMENT,
      `Airline` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
      `Flight` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
      `AirportFrom` char(3) COLLATE utf8mb4_general_ci NOT NULL,
      `AirportTo` char(3) COLLATE utf8mb4_general_ci NOT NULL,
      `DayOfWeek` enum('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday') COLLATE utf8mb4_general_ci NOT NULL,
      `Time` time NOT NULL,
      `Length` int(11) NOT NULL,
      `Delay` tinyint(1) DEFAULT NULL,
      PRIMARY KEY (`TripID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci |
    +----------------+--------------------------------------------------------------------------------------------------------------+
  6. 查看AAT中的資料。

    SELECT * FROM polar4ai.airlines_gbm_predict;

    執行結果如下,由查詢結果可以看出,新產生的result列包含預測值和不同類別的機率值。

    +--------+-------+--------------------+
    | TripID | Delay | result             |
    +--------+-------+--------------------+
    |      1 |     0 | 0;{0: 0.6, 1: 0.4} |
    |      2 |     1 | 0;{0: 0.6, 1: 0.4} |
    |      3 |     0 | 0;{0: 0.6, 1: 0.4} |
    |      4 |     1 | 0;{0: 0.6, 1: 0.4} |
    |      5 |     0 | 0;{0: 0.6, 1: 0.4} |
    |      6 |     0 | 0;{0: 0.6, 1: 0.4} |
    |      7 |     1 | 0;{0: 0.6, 1: 0.4} |
    |      8 |     0 | 0;{0: 0.6, 1: 0.4} |
    |      9 |     1 | 0;{0: 0.6, 1: 0.4} |
    |     10 |     0 | 0;{0: 0.6, 1: 0.4} |
    +--------+-------+--------------------+
  7. 通過AAT和資料庫表進行串連操作。

    自動產生的表airlines_gbm_predict與資料庫中其他表在使用上並無差異,可以與資料庫中的其他表進行串連操作。樣本如下:

    SELECT * 
    FROM airlines_train, polar4ai.airlines_gbm_predict
    WHERE airlines_train.TripID=polar4ai.airlines_gbm_predict.TripID AND airlines_train.Delay=1

    執行結果如下:

    +--------+--------------------+--------+-------------+-----------+-----------+----------+--------+-------+--------+-------+--------------------+
    | TripID | Airline            | Flight | AirportFrom | AirportTo | DayOfWeek | Time     | Length | Delay | TripID | Delay | result             |
    +--------+--------------------+--------+-------------+-----------+-----------+----------+--------+-------+--------+-------+--------------------+
    |      2 | Delta Airlines     | DL456  | LAX         | ORD       | Tuesday   | 11:15:00 |    320 |     1 |      2 |     1 | 0;{0: 0.6, 1: 0.4} |
    |      4 | Southwest Airlines | SW012  | DFW         | DEN       | Thursday  | 09:00:00 |    210 |     1 |      4 |     1 | 0;{0: 0.6, 1: 0.4} |
    |      7 | Qatar Airways      | QR901  | DOH         | JFK       | Sunday    | 13:45:00 |    860 |     1 |      7 |     1 | 0;{0: 0.6, 1: 0.4} |
    |      9 | Air France         | AF567  | CDG         | ORY       | Tuesday   | 18:30:00 |     60 |     1 |      9 |     1 | 0;{0: 0.6, 1: 0.4} |
    +--------+--------------------+--------+-------------+-----------+-----------+----------+--------+-------+--------+-------+--------------------+