全部產品
Search
文件中心

Platform For AI:特徵資料庫FeatureDB

更新時間:Nov 06, 2025

特徵資料庫(下文簡稱FeatureDB)是阿里雲PAI平台下特徵平台(PAI-FeatureStore)提供的資料庫服務,可以作為FeatureStore的線上資料來源,提供線上特徵儲存功能,並為搜尋推薦廣告等服務提供高效能的讀寫最佳化。本文為您介紹什麼是FeatureDB,以及FeatureDB的功能與優勢。

什麼是FeatureDB

FeatureDB是FeatureStore提供的高效能分布式儲存資料庫,支援KV、KKV格式的資料,並支援以結構化的方式將數組儲存為Array,將KV儲存為Map類型。通過Array、Map類型儲存資料,可以為後續的讀寫、推理服務提供更高的效能。FeatureDB已經全面支援離線特徵和即時特徵的生產、更新與消費鏈路,同時也支援使用者行為序列特徵。

如何開通

您可以在建立FeatureDB資料來源時按照介面提示進行開通,具體操作,請參見建立線上資料來源:FeatureDB

產品特性

FeatureDB針對FeatureStore特徵讀取特性實現了如下功能和最佳化:

  • 支援讀寫KV、KKV類型特徵。

  • 支援讀寫MaxCompute複雜類型特徵(Array、Map)。

  • 支援全量拉取FeatureView下的所有特徵資料。

  • 支援毫秒級輪詢更新即時特徵資料。

  • 支援秒級TTL,自動清理到期資料。

  • 隨用隨付,根據實際讀寫資料量進行計費。

FeatureDB可以對FeatureView的資料進行分區儲存,通過調整分區數來滿足不同情境的讀寫效能需求,並且支援副本,以保障資料的穩定與安全。分區數量會根據您選擇的預估數量級進行設定:

  • 千萬級以下(預設):5分區。

  • 介於千萬級與億級之間:10分區。

  • 億級以上:20分區。

image

產品優勢

  • 高性價比

    對於特徵儲存規模較小的客戶,使用FeatureDB可以降低使用成本。

  • 滿足高頻更新需求

    當使用即時統計特徵時,需每隔幾秒及時更新即時特徵到多個EasyRec Processor(模型推理服務)執行個體的儲存中,這對高頻更新有較高的要求,FeatureDB可以滿足這一需求。

  • 支援複雜類型特徵

    在搜尋推廣業務中,Array和Map類型的特徵、使用者行為長序列特徵及其SideInfo被廣泛使用。如果複雜類型特徵以字串形式儲存,在使用時需要進行序列化轉為Map類型,這會降低效能。

    FeatureDB支援儲存複雜類型資料,並支援將MaxCompute2.0複雜類型資料同步到FeatureDB,進行高效能讀取操作。

  • 支援彈性擴容

    對於規模較大的客戶,能夠根據特徵視圖靈活增加分區數量,提高讀寫效能。

  • 解決監控盲點

    當整合第三方資料來源時,整個資料鏈路的監控變得困難,特別是在即時特徵方面。FeatureDB能夠監控每個視圖粒度的讀寫QPS、RT、資料更新延時和儲存用量等關鍵效能指標。

產品功能

VPC網路高速連通

FeatureDB提供基於私網串連(PrivateLink)的VPC網路高速連通功能。配置成功後,FeatureStore會通過PrivateLink打通您的VPC和FeatureDB服務之間的網路,之後您可以在VPC中使用FeatureStore SDK通過私人串連訪問FeatureDB,從而提高讀寫資料效能,降低訪問延時。

您可以通過以下方式配置VPC網路高速連通。

  • 方式一:如果未建立過FeatureDB資料來源,單擊管理資料來源,進入管理資料來源頁面後單擊建立資料來源。建立FeatureDB資料來源時,在VPC網路高速連通配置部分填寫VPC,和可用性區域與交換器。具體操作細節,請參見建立線上資料來源:FeatureDB

  • 方式二:如果已經建立了FeatureDB資料來源,單擊管理資料來源,進入管理資料來源頁面後單擊已經建立好的feature_db資料來源,進入詳情頁。單擊VPC網路高速連通配置,填寫VPC,和可用性區域與交換器,並單擊確定

注意事項

  • VPC設定後無法修改,請確認您配置的VPC為您使用FeatureStore的線上服務所在的VPC。

  • 推薦您將服務部署到推薦的可用性區域,這樣可以避免跨可用性區域的網路耗時,最大幅度提高訪問效能。

    地區

    地區

    推薦的可用性區域

    亞太地區

    華東1(杭州)

    可用性區域G

    華東2(上海)

    可用性區域L

    華北2(北京)

    可用性區域F

    華南1(深圳)

    可用性區域F

    中國(香港)

    可用性區域B

    新加坡

    可用性區域C

    印尼(雅加達)

    可用性區域B

    歐洲和美洲

    德國(法蘭克福)

    可用性區域A

    美國(矽谷)

    可用性區域B

  • 可用性區域與交換器:請確保選擇了您線上服務機器所在可用性區域的交換器。建議選擇至少兩個可用性區域的交換器,從而實現業務的高可用性和穩定性。推薦您選擇線上服務機器所在可用性區域的交換器,以及我們推薦的可用性區域的交換器。

  • 配置成功後,後續只支援添加其他可用性區域的交換器,不支援修改或刪除配置。

寫入特徵

對於離線特徵,可以使用FeatureStore Python SDK通過DataWorks每天例行運行調度任務,將MaxCompute裡的資料同步到FeatureDB中。

對於即時特徵寫入,預設我們會進行整行資料更新。如果寫入資料只包含了部分欄位,對於未寫入的欄位我們會將其設定為空白。如果想要只更新寫入欄位的資料,並將其合并到原有資料上,您可以進行如下設定:

  • 通過Java SDK寫入:指定 InsertMode 寫入模式,設定為 InsertMode.PartialFieldWrite。

    for (int i = 0; i < 100;i++) {
        featureView.writeFeatures(writeData, InsertMode.PartialFieldWrite);
    }
  • 通過配置Flink Connector寫入:設定參數 insert_mode 值為 partial_field_write。

讀取特徵

您可以使用FeatureStore SDK(Go/Java)或EasyRec Processor讀取特徵。

FeatureStore SDK(Go/Java )支援離線/即時特徵的KV點查。通過指定特徵的JoinID(主鍵)值與特徵名稱,即可在毫秒內完成索引值對(KV)查詢,擷取目標特徵資料。FeatureStore SDK(Go/Java)也支援行為序列特徵的KKV查詢。通過指定UserID(使用者ID)值,即可查詢到拼裝好的序列特徵結果。

EasyRec Processor已整合FeatureStore Cpp SDK,支援將FeatureDB的特徵資料全量拉入記憶體,並支援毫秒級輪詢更新即時特徵資料到記憶體,從而實現更高效能的讀取。

監控指標

如果使用FeatureDB作為線上資料來源,建立特徵視圖後,單擊目標視圖右側的資料監控,可查看該視圖的讀寫QPS和RT等指標。(離線特徵視圖資料同步寫入不會反饋在監控指標中)image

即時特徵鏈路

FeatureStore提供的儲存服務主要包括三部分:Feature Service(接入層)、訊息佇列(DataHub)和FeatureDB。

在即時特徵中,使用者可以通過FeatureStore Java SDK或Flink Connector調用Feature Service服務,將特徵資料寫入FeatureDB。通過Feature Service寫入的資料,也會同步到使用者的MaxCompute表中,可以用於即時特徵的樣本匯出,進一步的模型訓練。

對於儲存在FeatureDB中的特徵資料, 使用者可以通過FeatureStore的Java/Go SDK讀取,也可以通過 EasyRec Processor全量拉取特徵存入本機快取中,以實現更高效能的讀取。對於即時特徵,可以毫秒級擷取最新特徵資訊。

即時特徵資料生命週期設定

在建立即時特徵視圖時,可以通過特徵生命週期來設定FeatureDB表的資料生命週期。當一行資料的存留時間到達生命週期後,它會在幾秒內被自動清理。

image

資料的存留時間目前支援兩種設定方式:

  • 方式一:不設定事件時間欄位。這種情況下,會根據資料的寫入時間開始計算存留時間,到達生命週期後,自動清理資料。

  • 方式二:勾選了某個特徵欄位作為事件時間欄位,單位是毫秒。假設 event_time 為事件時間欄位的值, time_now 為現在的時間,time_ttl = time_now - ttl 為應該開始到期的 event_time 的值,這種情況下對於寫入的特徵資料的具體處理方式如下:

    • 如果使用 PartialFieldWrite 模式進行部分欄位更新寫入,則會根據資料實際寫入時間計算存留時間。

    • event_time > time_now + 15min:資料不寫入。(這裡防止不同系統之間時間戳記有差異,放寬15分鐘)

    • time_ttl < event_time <= time_now + 15min:資料正常寫入,根據 event_time 開始計算存留時間,到達生命週期後,自動清理這行資料。

    • 0 < event_time < time_ttl:資料寫入後會被自動清理。這裡需要注意的是,event_time的單位是毫秒。如果您的事件時間欄位的值是秒,那麼會落入這種情況,導致資料寫入不成功。

    • event_time <= 0:根據資料實際寫入時間計算存留時間。

    • 值非法(無法轉換成整型):資料不寫入。

    • 註冊了事件時間欄位但是沒有傳入事件時間欄位的值:資料正常寫入,根據資料實際寫入時間計算存留時間。

    • 不註冊事件時間欄位:資料正常寫入,根據資料實際寫入時間計算存留時間。

    • 另外,在FeatureDB中,我們會將 event_time 的值作為這行資料的ts,意味著如果需要更新一個 key 對應的資料,需要事件時間欄位的值大於等於之前的值,這行資料才會更新。如果新的 event_time < 原來 event_time 的值,則不會更新這個key對應的資料。

效能測試

以下是使用FeatureStore Go SDK在VPC環境中讀取FeatureDB資料的效能壓測結果樣本,特徵表資料選取的推薦情景中使用者側資料,特徵表總行數是17689586,測試機器4核8GiB,測試結果僅供參考。

  • 配置了VPC網路高速連通,且線上服務部署在推薦的可用性區域

    特徵欄位數量(列數)

    讀取keys數量(行數)

    平均耗時

    TP95

    TP99

    260

    1

    0.89毫秒

    1.20毫秒

    1.45毫秒

    260

    10

    1.17毫秒

    1.52毫秒

    1.87毫秒

    260

    50

    1.91毫秒

    2.56毫秒

    2.92毫秒

    260

    100

    2.87毫秒

    3.58毫秒

    3.93毫秒

    260

    200

    4.43毫秒

    5.25毫秒

    5.80毫秒

  • 配置了VPC網路高速連通,線上服務部署在非推薦的可用性區域:

    特徵欄位數量(列數)

    讀取keys數量(行數)

    平均耗時

    TP95

    TP99

    260

    1

    2.54毫秒

    2.86毫秒

    3.15毫秒

    260

    10

    2.75毫秒

    3.12毫秒

    3.56毫秒

    260

    50

    3.95毫秒

    4.75毫秒

    5.19毫秒

    260

    100

    4.82毫秒

    5.66毫秒

    6.21毫秒

    260

    200

    6.84毫秒

    7.75毫秒

    8.25毫秒

  • 未配置VPC網路高速連通:

    特徵欄位數量(列數)

    讀取keys數量(行數)

    平均耗時

    TP95

    TP99

    260

    1

    3.62毫秒

    3.83毫秒

    4.27毫秒

    260

    10

    3.82毫秒

    4.11毫秒

    4.61毫秒

    260

    50

    4.54毫秒

    5.19毫秒

    5.60毫秒

    260

    100

    5.40毫秒

    6.13毫秒

    6.56毫秒

    260

    200

    7.15毫秒

    7.93毫秒

    8.47毫秒

計費說明

詳情請參見特徵平台(FeatureStore)計費說明