用戶數(shù)據(jù)導(dǎo)入方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,特別涉及一種用戶數(shù)據(jù)導(dǎo)入方法及系統(tǒng)。
【背景技術(shù)】
[0002]目前,在數(shù)據(jù)導(dǎo)入過(guò)程中,一般采用全量導(dǎo)入方式,即把較長(zhǎng)時(shí)間窗口期的數(shù)據(jù)一次完全導(dǎo)入Redis數(shù)據(jù)庫(kù)。如圖1所示,首先,在時(shí)間窗口期內(nèi),等待用戶屬性文件生成,當(dāng)該時(shí)間內(nèi)所有用戶屬性文件生成完畢,則多線程啟動(dòng)對(duì)應(yīng)的解析程序,對(duì)所有用戶屬性文件進(jìn)行解析,并清除User Profile系統(tǒng)的可用標(biāo)志位,對(duì)所有用戶屬性文件解析完畢后,將結(jié)果存入Redis數(shù)據(jù)庫(kù),并恢復(fù)用User Profile系統(tǒng)可用標(biāo)志位。
[0003]這種方式要等待所有數(shù)據(jù)文件全部到位之后才能開(kāi)始進(jìn)行處理,即要等待所有文件都處于就緒狀態(tài)才能開(kāi)始進(jìn)行處理,即當(dāng)所有數(shù)據(jù)文件到位后才對(duì)其進(jìn)行解析并導(dǎo)入,整個(gè)導(dǎo)入過(guò)程時(shí)間長(zhǎng),耗費(fèi)的時(shí)間比較久。一旦增加新的數(shù)據(jù)文件時(shí),處理時(shí)間隨新增數(shù)據(jù)文件呈線性增長(zhǎng),不利于擴(kuò)展。如果出現(xiàn)有數(shù)據(jù)文件延誤的情況,整個(gè)系統(tǒng)一直掛起,要等到延遲的數(shù)據(jù)文件就緒,即直到所有數(shù)據(jù)文件到位后才能進(jìn)行處理并導(dǎo)入,所以一旦有數(shù)據(jù)文件延遲,整個(gè)導(dǎo)入過(guò)程延遲時(shí)間就比較長(zhǎng)。雖然,利用現(xiàn)有技術(shù)進(jìn)行全量導(dǎo)入時(shí),用到了異步寫(xiě)等技術(shù),但是導(dǎo)入的時(shí)間仍然比較長(zhǎng)。
【發(fā)明內(nèi)容】
[0004]基于此,有必要針對(duì)數(shù)據(jù)導(dǎo)入時(shí)間長(zhǎng)的問(wèn)題,提供一種減小導(dǎo)入時(shí)間的用戶數(shù)據(jù)導(dǎo)入方法及系統(tǒng)。
[0005]一種用戶數(shù)據(jù)導(dǎo)入方法,包括如下步驟:
[0006]監(jiān)測(cè)用戶屬性文件創(chuàng)建進(jìn)程,當(dāng)有用戶屬性文件生成時(shí),從新生成的用戶屬性文件中獲取用戶屬性;
[0007]當(dāng)根據(jù)所述用戶屬性判定用戶為活躍用戶時(shí),比較所述活躍用戶的用戶屬性與用戶屬性數(shù)據(jù)庫(kù)中對(duì)應(yīng)的活躍用戶的用戶屬性,其中,所述活躍用戶的用戶屬性為新增用戶屬性或?qū)?yīng)的所述用戶屬性有更新;
[0008]當(dāng)所述活躍用戶的用戶屬性與用戶屬性數(shù)據(jù)庫(kù)中對(duì)應(yīng)的活躍用戶的用戶屬性不一致時(shí),將所述活躍用戶的用戶屬性寫(xiě)入中間文件;
[0009]當(dāng)對(duì)所述用戶屬性文件中所有活躍用戶的用戶屬性比較后,將所述中間文件導(dǎo)入所述用戶屬性數(shù)據(jù)庫(kù),以更新所述用戶屬性數(shù)據(jù)庫(kù)。
[0010]一種用戶數(shù)據(jù)導(dǎo)入系統(tǒng),包括:
[0011]獲取模塊,用于監(jiān)測(cè)用戶屬性文件創(chuàng)建進(jìn)程,當(dāng)有用戶屬性文件生成時(shí),從新生成的用戶屬性文件中獲取用戶屬性;
[0012]比較模塊,用于當(dāng)根據(jù)所述用戶屬性判定用戶為活躍用戶時(shí),比較所述活躍用戶的用戶屬性與用戶屬性數(shù)據(jù)庫(kù)中對(duì)應(yīng)的活躍用戶的用戶屬性,其中,所述活躍用戶的用戶屬性為新增用戶屬性或?qū)?yīng)的所述用戶屬性有更新;
[0013]寫(xiě)入模塊,用于當(dāng)所述活躍用戶的用戶屬性與用戶屬性數(shù)據(jù)庫(kù)中對(duì)應(yīng)的活躍用戶的用戶屬性不一致時(shí),將所述活躍用戶的用戶屬性寫(xiě)入中間文件;
[0014]導(dǎo)入模塊,用于當(dāng)對(duì)所述用戶屬性文件中所有活躍用戶的用戶屬性比較后,將所述中間文件導(dǎo)入所述用戶屬性數(shù)據(jù)庫(kù),以更新所述用戶屬性數(shù)據(jù)庫(kù)。
[0015]上述用戶數(shù)據(jù)導(dǎo)入方法及系統(tǒng),每當(dāng)發(fā)現(xiàn)有用戶屬性文件生成完畢,就對(duì)用戶屬性文件中的用戶屬性進(jìn)行讀取,并判斷用戶是否為活躍用戶,對(duì)活躍用戶的用戶屬性進(jìn)行處理,而不是像現(xiàn)有全量導(dǎo)入方法中需要等到所有用戶屬性文件生成后再進(jìn)行處理,比較比較活躍用戶的用戶屬性與用戶屬性數(shù)據(jù)庫(kù)中對(duì)應(yīng)的活躍用戶的用戶屬性,將與數(shù)據(jù)庫(kù)中對(duì)應(yīng)的活躍用戶的用戶屬性不一致的活躍用戶的用戶屬性寫(xiě)入中間文件,這樣對(duì)用戶屬性文件中的用戶屬性進(jìn)行了篩選,從而得到的中間文件中的用戶屬性的數(shù)量比現(xiàn)有全量導(dǎo)入方法中用戶屬性文件中的用戶屬性的數(shù)量要小,當(dāng)對(duì)用戶屬性文件中所有活躍用戶比較完畢,將中間文件導(dǎo)入用戶屬性數(shù)據(jù)庫(kù)。無(wú)需等到所有用戶屬性文件生成后才能進(jìn)行處理并導(dǎo)入,只要有用戶屬性文件生成,就進(jìn)行處理并導(dǎo)入,且中間文件中用戶屬性數(shù)量相比用戶屬性文件中用戶屬性數(shù)量減小了,這樣使得中間文件導(dǎo)入的時(shí)間減少,從而減少數(shù)據(jù)導(dǎo)入時(shí)間。
【附圖說(shuō)明】
[0016]圖1為現(xiàn)有的數(shù)據(jù)導(dǎo)入流程圖;
[0017]圖2為一實(shí)施方式的用戶數(shù)據(jù)導(dǎo)入方法的流程圖;
[0018]圖3為另一實(shí)施方式的用戶數(shù)據(jù)導(dǎo)入方法的子流程圖;
[0019]圖4為另一實(shí)施方式的用戶數(shù)據(jù)導(dǎo)入方法的子流程圖;
[0020]圖5為一實(shí)施方式的用戶數(shù)據(jù)導(dǎo)入系統(tǒng)的模塊圖;
[0021]圖6為另一實(shí)施方式的用戶數(shù)據(jù)導(dǎo)入系統(tǒng)的子模塊圖;
[0022]圖7為另一實(shí)施方式的用戶數(shù)據(jù)導(dǎo)入系統(tǒng)的子模塊圖。
【具體實(shí)施方式】
[0023]請(qǐng)參閱圖2,提供一種實(shí)施方式的用戶數(shù)據(jù)導(dǎo)入方法,包括以下步驟:
[0024]S100:監(jiān)測(cè)用戶屬性文件創(chuàng)建進(jìn)程,當(dāng)有用戶屬性文件生成時(shí),從新生成的用戶屬性文件中獲取用戶屬性。
[0025]其中,單位時(shí)間段內(nèi)生成單個(gè)用戶屬性文件。用戶登錄成功,并對(duì)網(wǎng)頁(yè)進(jìn)行瀏覽時(shí),對(duì)應(yīng)生成有用戶的屬性,例如,屬性包括點(diǎn)擊量、購(gòu)買(mǎi)記錄或收藏記錄。每個(gè)不同屬性對(duì)應(yīng)不同的用戶屬性文件,且單位時(shí)間段對(duì)應(yīng)單個(gè)用戶屬性文件,各單位時(shí)間段內(nèi)對(duì)應(yīng)的用戶屬性文件不同。單個(gè)用戶屬性文件中包括多個(gè)用戶的用戶屬性,每當(dāng)發(fā)現(xiàn)一個(gè)用戶屬性文件產(chǎn)生完畢后,就可對(duì)用戶屬性文件中的用戶屬性進(jìn)行讀取。
[0026]S200:當(dāng)根據(jù)用戶屬性判定用戶為活躍用戶時(shí),比較活躍用戶的用戶屬性與用戶屬性數(shù)據(jù)庫(kù)中對(duì)應(yīng)的活躍用戶的用戶屬性。
[0027]—旦有用戶屬性文件產(chǎn)生完畢,就可對(duì)用戶屬性文件中的活躍用戶進(jìn)行判斷。根據(jù)用戶屬性,判斷用戶屬性文件中的用戶是否為活躍用戶,其中,活躍用戶的用戶屬性為新增用戶屬性或?qū)?yīng)的用戶屬性有更新。當(dāng)用戶為活躍用戶時(shí),判斷活躍用戶的用戶屬性與用戶屬性數(shù)據(jù)庫(kù)中對(duì)應(yīng)的活躍用戶的用戶屬性是否一致。用戶屬性數(shù)據(jù)庫(kù)用來(lái)儲(chǔ)存用戶屬性,在一較佳實(shí)施例中,該用戶屬性數(shù)據(jù)庫(kù)可以是預(yù)設(shè)的。
[0028]通過(guò)步驟S200的比較,確保該活躍用戶是新增用戶或者是老用戶且有用戶屬性行為,即老用戶的用戶屬性相對(duì)于數(shù)據(jù)庫(kù)中原先存有的該用戶的用戶屬性是有更新的。若一致的話,說(shuō)明老用戶的用戶屬性相當(dāng)于原先存有的用戶屬性沒(méi)有更新,對(duì)該老用戶的用戶屬性進(jìn)行排除,不將其寫(xiě)入中間文件,即不將其寫(xiě)入數(shù)據(jù)庫(kù)。這樣可減少導(dǎo)入數(shù)量,從而減小導(dǎo)入時(shí)間。
[0029]S300:當(dāng)活躍用戶的用戶屬性與用戶屬性數(shù)據(jù)庫(kù)中對(duì)應(yīng)的活躍用戶的用戶屬性不一致時(shí),將活躍用戶的用戶屬性寫(xiě)入中間文件。
[0030]將活躍用戶的用戶屬性寫(xiě)入到中間文件中,即相對(duì)于用戶屬性數(shù)據(jù)庫(kù)中原先存有的該活躍用戶的用戶屬性,且該活躍用戶的用戶屬性相對(duì)于用戶屬性數(shù)據(jù)庫(kù)中該活躍用戶的用戶屬性有更新。或者,用戶屬性數(shù)據(jù)庫(kù)中原先沒(méi)有存有該活躍用戶的用戶屬性,該活躍用戶是新用戶,也將該活躍用戶的用戶屬性寫(xiě)入中間文件。
[0031]S400:當(dāng)對(duì)用戶屬性文件中所有活躍用戶的用戶屬性比較后,將中間文件導(dǎo)入用戶屬性數(shù)據(jù)庫(kù),以更新用戶屬性數(shù)據(jù)庫(kù)。
[0032]當(dāng)對(duì)某單個(gè)用戶屬性文件中的用戶屬性讀取完畢,并對(duì)用戶屬性文件中所有活躍用戶的用戶屬性比較完畢時(shí),表示單位時(shí)間段內(nèi)生成的單個(gè)用戶屬性文件處理完畢,將中間文件導(dǎo)入到用戶屬性數(shù)據(jù)庫(kù)中,完成中間文件的導(dǎo)入,更新用戶屬性數(shù)據(jù)庫(kù)。
[0033]上述用戶數(shù)據(jù)導(dǎo)入方法,每當(dāng)發(fā)現(xiàn)有用戶屬性文件生成完畢,就對(duì)用戶屬性文件中的用戶屬性進(jìn)行讀取,并判斷用戶是否為活躍用戶,對(duì)活躍用戶的用戶屬性進(jìn)行處理,而不是像現(xiàn)有全量導(dǎo)入方法中需要等到所有用戶屬性文件生成后再進(jìn)行處理,比較比較活躍用戶的用戶屬性與用戶屬性數(shù)據(jù)庫(kù)中對(duì)應(yīng)的活躍用戶的用戶屬性,將與數(shù)據(jù)庫(kù)中對(duì)應(yīng)的活躍用戶的用戶屬性不一致的活躍用戶的用戶屬性寫(xiě)入中間文件,這樣對(duì)用戶屬性文件中的用戶屬性進(jìn)行了篩選,從而得到的中間文件中的用戶屬性的數(shù)量比現(xiàn)有全量導(dǎo)入方法中用戶屬性文件中的用戶屬性的數(shù)量要小,當(dāng)對(duì)用戶屬性文件中所有活躍用戶比較完畢,將中間文件導(dǎo)入數(shù)據(jù)庫(kù)。無(wú)需等到所有用戶屬性文件生成后才能進(jìn)行處理并導(dǎo)入,只要有用戶屬性文件生成,就進(jìn)行處理并導(dǎo)入,且中間文件中用戶屬性數(shù)量相比用戶屬性文件中用戶屬性數(shù)量減