日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

特征數(shù)據(jù)庫(下文簡稱FeatureDB)是阿里云PAI平臺下特征平臺(PAI-FeatureStore)提供的數(shù)據(jù)庫服務(wù),可以作為FeatureStore的在線數(shù)據(jù)源,提供在線特征存儲功能,并為搜索推薦廣告等服務(wù)提供高性能的讀寫優(yōu)化。本文為您介紹什么是FeatureDB,以及FeatureDB的功能與優(yōu)勢。

什么是FeatureDB

FeatureDB是FeatureStore提供的高性能分布式存儲數(shù)據(jù)庫,支持KV、KKV格式的數(shù)據(jù),并支持以結(jié)構(gòu)化的方式將數(shù)組存儲為Array,將KV存儲為Map類型。通過Array、Map類型存儲數(shù)據(jù),可以為后續(xù)的讀寫、推理服務(wù)提供更高的性能。FeatureDB已經(jīng)全面支持離線特征和實時特征的生產(chǎn)、更新與消費鏈路,同時也支持用戶行為序列特征。

產(chǎn)品特性

FeatureDB針對FeatureStore特征讀取特性實現(xiàn)了如下功能和優(yōu)化:

  • 支持讀寫KV、KKV類型特征。

  • 支持讀寫MaxCompute復(fù)雜類型特征(Array、Map)。

  • 支持全量拉取FeatureView下的所有特征數(shù)據(jù)。

  • 支持毫秒級輪詢更新實時特征數(shù)據(jù)。

  • 支持秒級TTL,自動清理過期數(shù)據(jù)。

  • 按量計費,根據(jù)實際讀寫數(shù)據(jù)量進行計費。

FeatureDB可以對FeatureView的數(shù)據(jù)進行分片存儲,通過調(diào)整分片數(shù)來滿足不同場景的讀寫性能需求,并且支持副本,以保障數(shù)據(jù)的穩(wěn)定與安全。其中,分片數(shù)量可以根據(jù)特征存儲的數(shù)據(jù)量進行調(diào)整:

  • 5分片(默認):適用于千萬級以下的數(shù)據(jù)量。

  • 10分片:適用于千萬級以上、億級以下的數(shù)據(jù)量。

  • 20分片:適用于億級以上的數(shù)據(jù)量。

image

產(chǎn)品優(yōu)勢

  • 高性價比

    對于特征存儲規(guī)模較小的客戶,使用FeatureDB可以降低使用成本。

  • 滿足高頻更新需求

    當使用實時統(tǒng)計特征時,需每隔幾秒及時更新實時特征到多個EasyRec Processor(模型推理服務(wù))實例的存儲中,這對高頻更新有較高的要求,F(xiàn)eatureDB可以滿足這一需求。

  • 支持復(fù)雜類型特征

    在搜索推廣業(yè)務(wù)中,Array和Map類型的特征、用戶行為長序列特征及其SideInfo被廣泛使用。如果復(fù)雜類型特征以字符串形式存儲,在應(yīng)用時需要進行序列化為Map類型,會降低性能。

    FeatureDB支持存儲復(fù)雜類型數(shù)據(jù),并支持同步MaxCompute2.0復(fù)雜類型數(shù)據(jù)到FeatureDB,進行高性能讀取操作。

  • 支持彈性擴容

    對于規(guī)模較大的客戶,能夠根據(jù)特征視圖靈活增加分片數(shù)量,提高讀寫性能。

  • 解決監(jiān)控盲點

    當集成第三方數(shù)據(jù)源時,整個數(shù)據(jù)鏈路的監(jiān)控變得困難,特別是在實時特征方面。FeatureDB能夠監(jiān)控每個視圖粒度的讀寫QPS、RT、數(shù)據(jù)更新延時和存儲用量等關(guān)鍵性能指標。

產(chǎn)品功能

配置FeatureDB數(shù)據(jù)源

具體操作,請參見配置數(shù)據(jù)源。

寫入特征

對于離線特征,可以使用FeatureStore Python SDK通過DataWorks每天例行運行調(diào)度任務(wù),將MaxCompute里的數(shù)據(jù)同步到FeatureDB中。

對于實時特征,目前可通過以下兩種方式同步數(shù)據(jù)。

  • 方式一:直接通過Java SDK寫入特征數(shù)據(jù)。

           // 配置 regionId, 阿里云賬號, FeatureStore project
           Configuration configuration = new Configuration("cn-beijing",
                    Constants.accessId, Constants.accessKey,"fs_demo_featuredb" );
    
            // 配置 FeatureDB 用戶名,密碼
            configuration.setUsername(Constants.username);
            configuration.setPassword(Constants.password);
    
            // 如果使用公網(wǎng)鏈接 FeatureStore, 參考上面的域名信息
            // 如果使用 VPC 環(huán)境,不需要設(shè)置
            //configuration.setDomain(Constants.host);
    
            ApiClient client = new ApiClient(configuration);
    
            // 如果使用公網(wǎng)鏈接 設(shè)置 usePublicAddress = true, vpc 環(huán)境不需要設(shè)置
            // FeatureStoreClient featureStoreClient = new FeatureStoreClient(client, Constants.usePublicAddress);
            FeatureStoreClient featureStoreClient = new FeatureStoreClient(client );
    
            Project project = featureStoreClient.getProject("fs_demo_featuredb");
            if (null == project) {
                throw  new RuntimeException("project not found");
            }
    
            FeatureView featureView = project.getFeatureView("user_test_2");
            if (null == featureView) {
                throw  new RuntimeException("featureview not found");
            }
    
            List<Map<String, Object>> writeData = new ArrayList<>();
            // 模擬構(gòu)造數(shù)據(jù)寫入 
            for (int i = 0; i < 10; i++) {
                Map<String, Object> data = new HashMap<>();
                data.put("user_id", i);
                data.put("string_field", String.format("test_%d", i));
                data.put("int32_field", i);
                data.put("int64_field", Long.valueOf(i));
                data.put("float_field", Float.valueOf(i));
                data.put("double_field", Double.valueOf(i));
                data.put("boolean_field", i % 2 == 0);
                writeData.add(data);
            }
    
            for (int i = 0; i < 100;i++) {
                featureView.writeFeatures(writeData);
            }
    
            // 這里只需要調(diào)用一次,如果全部數(shù)據(jù)寫完,確保全部寫入完成,調(diào)用此接口后,無法再調(diào)用 writeFeatures 
            featureView.writeFlush();
    
  • 方式二:使用實時計算Flink生產(chǎn)實時特征,通過配置Flink Connector寫入。具體操作,請參見設(shè)置Flink Connector。

讀取特征

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

FeatureStore SDK(Go/Java )支持離線/實時特征的KV點查。通過指定特征的JoinID(主鍵)值與特征名稱,即可在毫秒內(nèi)完成鍵值對(KV)查詢,獲取目標特征數(shù)據(jù)。FeatureStore SDK(Go/Java)也支持行為序列特征的KKV查詢。通過指定UserID(用戶ID)值,即可查詢到拼裝好的序列特征結(jié)果。

EasyRec Processor已集成FeatureStore Cpp SDK,支持將FeatureDB的特征數(shù)據(jù)全量拉入內(nèi)存,并支持毫秒級輪詢更新實時特征數(shù)據(jù)到內(nèi)存,從而實現(xiàn)更高性能的讀取。

監(jiān)控指標

如果使用FeatureDB作為在線數(shù)據(jù)源,創(chuàng)建特征視圖后,單擊目標視圖右側(cè)的數(shù)據(jù)監(jiān)控,可查看該視圖的讀寫QPS和RT等指標。image

image

實時特征鏈路

image

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

在實時特征中,用戶可以通過FeatureStore Java SDK或Flink Connector調(diào)用Feature Service服務(wù),將特征數(shù)據(jù)寫入FeatureDB。通過Feature Service寫入的數(shù)據(jù),也會同步到用戶的MaxCompute表中,可以用于實時特征的樣本導(dǎo)出,進一步的模型訓(xùn)練。

對于存儲在FeatureDB中的特征數(shù)據(jù), 用戶可以通過FeatureStore的Java/Go SDK讀取,也可以通過 EasyRec Processor全量拉取特征存入本地緩存中,以實現(xiàn)更高性能的讀取。對于實時特征,可以毫秒級獲取最新特征信息。

性能測試

以下是讀取FeatureDB特征的性能壓測示例,特征表數(shù)據(jù)選取的推薦情景數(shù)據(jù),總數(shù)據(jù)行數(shù)是8671932,數(shù)據(jù)僅供參考。

在線數(shù)據(jù)源

特征字段數(shù)量(列數(shù))

讀取keys數(shù)量(行數(shù))

平均耗時

TP99

FeatureDB

260

1

3.25毫秒

4.34毫秒

FeatureDB

260

10

3.52毫秒

4.62毫秒

FeatureDB

260

50

4.51毫秒

6.05毫秒

FeatureDB

260

200

8.23毫秒

10.52毫秒

FeatureDB

260

500

12.96毫秒

16.55毫秒

FeatureDB

260

1000

17.61毫秒

21.26毫秒

相關(guān)文檔

特征平臺(FeatureStore)計費說明