更新用戶所滿足的規則的方法及處理系統的制作方法
【技術領域】
[0001] 本申請涉及通信及計算機領域,尤其涉及一種能夠針對千萬級別以上用戶及相對 于百萬級別的規則條件,支持在秒級/毫秒級實時計算用戶滿足的人群規則的用戶標簽更 新方法以及應用所述用戶標簽更新方法的用戶滿足規則處理方法和用戶滿足規則處理方 法系統。
【背景技術】
[0002] 在當今互聯網為大眾所廣泛應用,人們已經熟悉并樂于通過互聯網消費、娛樂、發 布個人信息等,商家通過查找服務商提供的互聯網用戶在互聯網上的消費、娛樂以及信息 的記錄及更改信息,能夠更為全面地了解受眾或消費群體的需求,更為準確的找到受眾或 消費群體并向他們投放廣告或提供服務。例如阿里巴巴數據平臺事業部也提供了定向投放 平臺,其中定向產品應用于淘寶無線主客戶端,主要進行卡片推薦和人群推薦。淘寶普通賣 家可以通過定投產品在淘寶店鋪以及活動頁面進行定向營銷,比如淘寶的詳情頁以及試用 中心,以提尚商家的盈利。
[0003] 隨著互聯網用戶數量急劇增加,數據平臺需要處理更新的數量急劇增加,例如阿 里媽媽數據管理平臺(DMP平臺)是一個人群精準營銷的大數據應用平臺,截止2014年所 有阿里媽媽廣告業務均已接入阿里媽媽數據管理平臺,目前服務數千廣告主、日均處理上 萬人群、日均收入500萬。預計年底廣告主達到10萬、人群數達到50萬,廣告日均收入3000 萬,另外對于淘寶網站的用戶數量已經達到千萬甚至上億數量級,而每日用戶更新數據量 也達到了上億數量級,而規則的數量級也在百萬級別以上。
[0004] 現有為用戶滿足提供規則查詢的處理方法主要有兩種:一種是離線批處理方法, 一種增量計算處理方法。
[0005] 其中,圖1為現有技術中用戶滿足規則的離線批處理方法中Map的簡要流程圖,圖 2為現有技術中用戶滿足規則的離線批處理方法中Reduce的簡要流程圖,結合圖1和圖2, 所述離線批處理方法是采用Map-Reduce (映射-歸約)框架程序實現,所述離線批處理方 法可以在數小時內處理數十億輸入和數萬的人群計算。所述Map-Reduce框架程序實現的 基本步驟分為Map (映射)和Reduce (歸約)兩個階段:其中在Map階段,包括以下步驟:
[0006] 步驟S01' :首先讀入人群規則表,步驟S03' :解析人群的規則表達式,得到與當前 Map輸入表相關的去重的原子條件表達式,利用Fel (Fast Expression Language)編譯這 些去重的原子條件表達式;
[0007] 步驟S04' :逐條讀入輸入表數據,執行所有編譯后的原子表達式;
[0008] 步驟S05' :針對一條數據執行完成后;
[0009] 步驟S07' :Map輸出用戶ID、用戶在表中滿足的原子條件表達式(Cid,Clause Identity)列表,每個用戶對應多個原子表達式,不是每個用戶輸出一次,而是每條對應原 子表達式的記錄都輸出一次。
[0010] 在Reduce階段,包括以下步驟:
[0011] 步驟 Sll' :首先也是讀入人群規則表(Gid list,Group Identification list);
[0012] 步驟S13' :解析人群的規則表達式(Gid,Group Identification),與Map不同的 是,這里解析出的是每個人群需要各個表滿足的原子條件表達式列表;
[0013] 步驟S14' :讀入Map的輸出作為數據輸入,對每個用戶在各個Map輸出的數據做 合并,合并后得到用戶在各個表的多條記錄上滿足的表達式列表;
[0014] 步驟S15' :合并以上兩步驟的結果,得出用戶和人群規則的對應關系,針對每一個 用戶,執行所有規則;
[0015] 步驟S17' :判斷用戶是否滿足規則;
[0016] 步驟S19' :輸出用戶滿足規則的結果。
[0017] 現有技術中所述離線批處理的方式,可以處理比較大數據量的計算,吞吐量大,但 延遲很大,一般需要幾十小時甚至更長的時間,因此屬于天(Day)級別的處理速度。
[0018] 圖3為現有技術中用戶滿足規則的索引批處理方法的簡要流程圖,結合圖3,另一 種方法是利用索引處理方式,通常采用建立索引結合增量的方式處理,包括以下步驟:
[0019] 步驟S21' :首先讀取全量的人群數據;步驟S23' :通過離線批處理系統建立索引, 生成索引文件放在分布式文件系統中;步驟S25':在線系統讀取分布式系統中的索引,加載 起來;步驟S27' :然后,通過API提供在線查詢服務。
[0020] 通過建索引結合增量處理的方式,可以對一個查詢較快的得出結果,但建索引的 時間依然需要十小時左右,因此依然屬于小時(Hour)級別的處理速度,而且也無法對當前 更新的人群進行實時計算輸出結果。
[0021] 綜上所述,現有的兩種解決方案,都不能實時處理的人群計算需求,且不能處理人 群的實時更新,更無法支持從人查詢所屬人群的功能。因此,如何能夠針對巨大用戶數量、 由此產生的用戶大量的更新以及規則數量和更新數量同樣巨大的情況,例如千萬級別以上 用戶及相對于百萬級別的規則條件,在秒級/毫秒級實時計算用戶滿足的人群規則,即實 時判斷一個受眾目標實時符合哪些賣家的規則,將獲得的結果以更高的效率的方式提供給 受眾目標,給受眾目標提供更好的體驗,例如幫助廣告主或者賣家達成成交等,成為業界關 注的問題。
【發明內容】
[0022] 本申請要解決的技術問題是能夠針對巨大用戶數量、由此產生的用戶大量的更新 以及規則數量和更新數量同樣巨大的情況,提高用戶數據更新的效率,實現在秒級/毫秒 級實時計算用戶滿足的人群規則的實時查詢,并將獲得的結果以更高效率的方式提供給受 眾目標。
[0023] 有鑒于此,本申請提供一種更新用戶所滿足的規則的方法,其中,包括:
[0024] 獲得待更新用戶的用戶數據,根據所述用戶數據的屬性,將所述用戶數據分成不 同類別的多個用戶標簽;
[0025] 根據所述用戶標簽的類別信息,對所述用戶標簽進行更新處理,以查找變化的用 戶標簽并重新計算所述變化的用戶標簽所滿足的規則。
[0026] 優選的,其中,所述用戶標簽的類別信息包括動態,所述動態的用戶標簽為屬性隨 環境變化而發生變化的用戶標簽
[0027] 進一步的,對所述用戶標簽進行更新處理,還包括:
[0028] 建立所述映射關系,包括規則表達式到子句表達式的映射關系、子句表達式到規 則表達式的映射關系、動態的用戶標簽到子句表達式的映射關系、用戶和一個子句表達式 是否命中的位圖命中關系以及用戶命中規則表達式的映射關系;
[0029] 將待更新用戶的用戶數據與原有用戶數據庫的用戶數據進行比對,查找變化的動 態的用戶標簽,如未查找到則返回,如查找到則進入下一步;
[0030] 查找所述變化的動態的用戶標簽在所述動態的用戶標簽到子句表達式的映射關 系中對應的若干子句表達式;
[0031] 針對所述對應的若干子句表達式,進行所述待更新用戶是否命中子句表達式的遍 歷計算,獲得所述待更新用戶與所述對應的若干子句表達式的命中關系;
[0032] 將所述命中關系與所述遍歷計算前所述位圖命中關系進行比對,找到變化的命中 關系;
[0033] 對于所述變化的命中關系是由命中變為不命中的,則查找該命中關系所對應的子 句表達式在所述子句表達式到規則表達式的映射關系對應的若干規則表達式,并將所述對 應的若干規則表達式從所述待更新用戶命中的規則表達式的映射關系中刪除;
[0034] 對于所述變化的命中關系是由不命中變為命中的,則將所述待更新用戶與該命中 關系所對應的子句表達式的位圖命中更新上傳至所述位圖命中關系中,并查找該命中關系 所對應的子句表達式在所述子句表達式到規則表達式的映射關系對應的若干規則表達式, 將所述對應的若干規則表達式增加到所述待更新用戶命中的規則表達式的映射關系中。
[0035] 優選的,對所述用戶標簽進行更新處理還包括:
[0036] 根據所述動態的用戶標簽內容,將所述動態的用戶標簽分為可枚舉類、不可枚舉 可索引類和不可枚舉不可索引類;
[0037] 對所述可枚舉的動態的用戶標簽建立屬性數組存儲,并采用過濾查詢法進行查 詢;對不可枚舉但可索引的動態的用戶標簽建立查找樹存儲,并采用索引法進行查詢;對 不可枚舉且不可索引的動態的用戶標簽劃分范圍存儲,并對范圍進行編號存儲,并采用可 索引查詢法和可過濾查詢法組合查詢。
[0038] 較佳的,每個所述動態的用戶標簽都具有記錄最新更新時間的時間戳。
[0039] 進一步的,對所述用戶標簽進行更新處理還包括:
[0040] 接收規則更新請求,通過對所述動態的用戶標簽進行分類查詢對照,建立用戶所 滿足的規則的新的映射關系。
[0041] 優選的,所述用戶標簽的類別信息還包括位置,所述位置的用戶標簽為屬性與時 間和空間位置相關的用戶標簽。
[0042] 進一步的,對所述用戶標簽進行更新處理還包括:
[0043] 對所有用戶建立空間索引編號,建立所述用戶的唯一全局識別碼與述建立的空間 索引編號的映射關系;
[0044] 傳輸待更新用戶的用戶數據,對所述待更新用戶分配當地識別碼,建立空間索引 編號與當地識別碼的映射關系;
[0045] 將所述待更新用戶的用戶數據與原有用戶數據庫進行比對,若所述待更新用戶以 前不存在,則建立新的空間索引編號,若所述待更新用戶為原有用戶,則檢查所述空間索引 編號是否有變化,對所述空間索引編號沒有發生變化的則更新所述待更新用戶的位置的用 戶標簽的屬性信息,對所述空間索引編號發生變化的則刪除所述待更新用戶原有的當地識 別碼,建立新的當地識別碼,并更新當地識別碼與所述空間索引編號的映射關系。
[0046] 進一步的,在所述傳輸待更新用戶的用戶數據過程中,采用分布式消息隊列方式 對所述用戶數據進行數據更新解耦,并通過關鍵標記字符對所述用戶數據的數據進行切 分。
[0047] 較佳的,采用希爾伯特曲線對所有用戶建立空間索引編號。
[0048] 進一步的,對所述位置的用戶標簽建立空間索引還包括:
[0049] 對所述建立的空間索引編號進行再取模劃分。
[0050] 較佳的,對所述用戶標簽進行更新處理包括:
[0051] 將所述位置的用戶標簽的屬性信息存儲在連續的緩存中,所述緩存具有一個以當 地識別碼為下表的偏移指向表。
[0052] 較佳的,對所述用戶標簽進行更新處理還包括:
[0053] 根據所述待更新用戶的位置的用戶標簽的變動頻繁程度,動態設定更新閥值,當 所述待更新用戶的位置的用戶標簽的變動超過所述更新閥值時再進行更新。
[0054] 較佳的,在對所述位置的用戶標簽的更新處理方法的過程中,還包括,支持數據過 期,通過動態設定數據過期期限,刪除超過數據過期期限仍未更新的數據。
[0055] 較佳的,對所述用戶標簽的分類還包括滑動的用戶標簽,所述滑動的用戶標簽為 屬性本身不變但隨環境變化而發生變化的用戶標簽。
[0056] 較佳的,對所述用戶標簽進行更新處理還包括:
[0057] 根據滑動的用戶標簽的頻繁程度采用不同存儲方式以備更新和查詢,對于頻繁程 度高的滑動的用戶標簽采用矩陣存儲方式;對于頻繁程度低的滑動的用戶標簽采用鏈表存 儲方式。
[0058] 較佳的,所述用戶標簽的類別信息還包括上下文和靜態,所述上下文的用戶標簽 為屬性隨條件同時發生的用戶標簽,所述靜態的用戶標簽為屬性固定的用戶標簽,采用建 立函數判斷法處理所述上下文的用戶標簽,采用建立索引方法處理所述靜態的用戶標簽。
[0059] 本申請還提供了一種更新用戶所滿足的規則的系統,其中,包括:
[0060] 第一裝置,用以獲得待更新用戶的用戶數據,根據所述用戶數據的屬性,將所述用 戶數據分成不同類別的多個用戶標簽;
[0061] 第二裝置,根據所述用戶標簽的類別信息,對所述用戶標簽進行更新處理,以查找 變化的用戶標簽并重新計算所述變化的用戶標簽所滿足的規則。
[0062] 優選的,所述用戶標簽的類別信息包括動態,所述動態的用戶標簽為屬性隨環境 變化而發生變化的用戶標簽。
[0063] 優選的,所述動態引擎服務器第二裝置包括第一引擎,所述第一引擎對所述動態 的用戶標簽進行更新處理:
[0064] 建立所述映射關系,包括:規則表達式到子句表達式的映射關系、子句表達式到規 則表達式的倒排表映射關系、動態的用戶標簽到子句表達式的倒排表映射關系、用戶和一 個子句表達式是否命中的位圖命中關系以及用戶命中規則表達式的倒排表映射關系;
[0065] 將待更新用戶的用戶數據與原有用戶