主頁 > 資料庫 > 用戶行為分析模型實踐(三)——H5通用分析模型

用戶行為分析模型實踐(三)——H5通用分析模型

2023-02-07 12:49:49 資料庫

作者:vivo 互聯網大資料團隊- Zhao Wei、Tian Fengbiao、Li Xiong

本文從提升用戶行為分析效率角度出發,詳細介紹了H5埋點方案規劃,埋點資料采集流程,提供可借鑒的用戶行為資料采集方案;且完整呈現了針對頁面分析,留存分析的數倉模型規劃方案,在數倉模型設計程序中遇見的痛點難點問題也相應的給出了解決思路及案例代碼;在資料展示模塊,提供了分析指標資料展示的邏輯流程及UI案例,旨在幫助有需要的同學全方位的了解用戶行為資料全鏈路分析流程,

一、背景

針對用戶行為資料進行采集有個專業術語叫埋點,在h5頁面上做的埋點統稱為H5埋點,H5頁面因其靈活性,便捷的互動和豐富的功能,以及在移動設備上支持多媒體等特點目前被廣泛應用于網頁app開發,

現階段H5埋點的自由度較高,行業資料產品在同類高頻的業務場景上設計的時間花費較多,埋點開發、埋點測驗等事項耗時,且需重復勞動;同樣的埋點資料分析層面-基礎分析指標,留存指標,頁面分析等需求需多次開發模型,浪費寶貴的人力資源,

H5通用分析模型旨在通過規范化埋點設計方案,開發設計一套通用度高,擴展方便,需求回應迅速的模型,減少行業資料產品和開發在類似需求上的人力投入,提升資料分析效率,

二、分析模型概述

2.1 術語解釋

圖片

2.2 模型概述

針對業務發展的不同階段,會有相應的資料分析需求,如圖(1),在業務初期,用戶的訪問,留存情況等是階段性分析重點,業務產品運營可以根據分析資料適時的調整頁面布局,運營策略等;應用發展中后期可能會更多的關注訂單、轉化、路徑等相關分析指標,如果能在應用上線之初,快速的拿到核心分析指標資料,對產品的推廣,迭代無疑是收益良多,所以,本次模型構建從應用初期分析最廣泛的核心指標出發,落地應用概況、頁面訪問、用戶留存等維度全方位核心分析指標體系,

圖片 圖(1)應用生命周期內指標分析情況

2.2.1 分析模型主題

本次通用分析模型圍繞以下分析主題構建,

  • 【基礎分析】:從用戶瀏覽次數,人均訪問頁面數,人均使用時長,新老用戶等基礎指標展示用戶訪問大盤資料,

  • 【頁面分析】:面向具體頁面,分析用戶訪問pv,uv,訪問時長等核心指標,有針對性的發現頁面訪量薄榷訓節,為合理化頁面管理提供資料支撐,協助產品經理通過資訊重組,提升頁面訪問量,

  • 【留存分析】:通過用戶的留存,了解目前的產品現狀(用戶的哪些行為導致留存率的不同); 判斷產品的改進有無效果(用戶行為是否發生了改變導致留存率的提升);留存分析反映了用戶由初期的不穩定用戶轉化為活躍用戶,穩定用戶,忠誠用戶的程序,

2.2.2 分析指標定義

(以下示例中資料均為參考資料,非真實資料)

1、基礎分析:訪問pv,uv等指標(全維度)

圖片

2、頁面分析:頁面訪問相關pv,uv,時長等指標

圖片

注:用戶對訪問頁面進行命名,分析平臺提供配置入口,方便用戶對頁面進行命名,

3、留存分析:新用戶留存,活躍用戶留存  包括:N日內留存 和 第N日留存,

通常意義上的留存分析指的是:用戶在APP產生行為后,在固定的第N日繼續訪問或使用APP的用戶;包括活躍用戶留存和新用戶留存

為滿足不同業務的分析需求,此次留存模型包含 n日內留存分析,即用戶在APP產生行為后,在固定的第N日內繼續訪問或使用APP的用戶(日期范圍留存),

圖片

三、埋點方案

3.1 業務目標

  • 采集用戶的pv,uv資料,幫助產品同學了解目前的產品現狀,并不斷改進產品;

  • 自動采集,對pv,uv等這類埋點,業務無需再開發,打開開關即可采集這類資料,

3.2 自動采集

3.2.1 什么是自動采集

自動采集是相對于前端開發者而言,目的是為了幫助前端開發者提升資料采集效率,通過自動采集開關配置,無需在手動實作上報邏輯,使用時前端開發者通過引入h5sdk.js(也稱jssdk.js),打開自動采集開關,我們就會在適當的時機,以適當的規則采集資料,并進行上報,開發者無需在關注采集代碼內部邏輯,以此來減輕同類資料采集的開發作業量,

3.2.2 如何自動采集

按照給定的規則進行頁面事件EventListener,當用戶活動觸發對應的事件時,我們會組裝好資料,然后將組裝好的資料通過https傳入到后臺,

3.2.3 自動采集的三大規則場景

我們的網站是一個SPA應用,SPA應用通過改變前端路由的變化,實作頁面內組件的切換,組件的切換,對于一個非前端開發者來說,可以泛指頁面的切換,所以我們第一場景是要覆寫url變化的這類事件,在實踐中,我們發現,當我們需要采集頁面的用戶停留時長時,往往會不準確,為什么不準確?用戶可以縮小化瀏覽器,也可以切換tab到其他網站,這個時候計算的用戶時長是不準確的,因為用戶雖然打開了我們網頁,但是并沒有聚焦到我們的網頁,這種不應該算作用戶停留時長,因此對于這些行為,我們又加上了失去焦點,得到焦點,以及切換瀏覽器tab事件的EventListener,這兩種場景,

綜上三大場景總結如下:

  1. 頁面切換時,進行采集,即url變化時觸發的事件;

  2. 頁面失去焦點,得到焦點時,進行采集,即focus,blur事件;

  3. 頁面通過瀏覽器tab切換離開,切換回來時,進行采集,即visibilitychange事件;

3.2.3.1 三大規則場景的界定

上文我們已經在實踐中總結出了自動采集的三大場景,在實際應用針對三大場景的使用我們也總結出了一套界定方案,

(1)規則一界定——怎么判斷頁面切換?

a、現在的網站要么是MPA,要么是SPA模式,或者兩種模式混合,MPA主要是后臺路由,SPA主要是前端路由(hash模式和history模式),但無論是SPA還是MPA,當頁面需要切換時,url一定會變化,基于此點,我們判斷當url變化時,用戶一定切換了頁面,此時觸發規則一的事件,產生資料上報,

這里需要注意2個問題:

  • 第1個問題:url變化 = window.location.origin + window.location.pathname + window.location.hash 這三部分的任一部分變化,即為url變化,并不包括window.location.search這部分的變化;

  • 第2個問題:在SPA中,如果一個頁面內有多個tab,當切換tab時,開發者也改變他的url的window.location.pathname,此時也會認為是頁面切換,也會產生上報資料,如下這種情況,

圖片

圖(2)

 

b、完整頁面切換上報流程,由頁面A切換到頁面B時,一共上報4個埋點;

圖片 圖(3)

c、關于路由的EventListener

現在的大多網站,大多是SPA應用,SPA的前端路由有hash模式和history模式這兩種模式,當通過前端路由來頁面切換時,肯定會觸發hash模式或history相關的api,

因此,我們只需要把所有觸發事件的場景給全部進行EventListener即可,有如下2種路由的EventListener:window.hashchange事件——觸發hash模式時、window.popstate事件、pushstate,replacestate自定義事件——觸發history模式時,

這里有2個問題需要關注:一是當某個SPA應用的路由事件,觸發了history模式時,我們應該移除hash模式的EventListener,二是pushstate,replacestate自定義事件,因為BOM并沒有提供相關的api支持EventListener,需要自行封裝使用,如下code,

引入JSSDK

/**
 * 拼接通用化上報引數
 * @param {string} 重寫路由事件型別
 */
function resetHistoryFun(type){
    // 將原先的方法復制出來
    let originMethod = window.history[type]
    // 當window.history[type]函式被執行時,這個return出來的函式就會被執行
    return function(){
        // 執行原先的方法
        let rs = originMethod.apply(this, arguments)
        // 然后自定義事件
        let e = new Event(type.toLocaleLowerCase())
        // 將原先函式的引數系結到自定義的事件上去,原先的是沒有的
        e.arguments = arguments
        // 然后用window.dispatchEvent()主動觸發
        window.dispatchEvent(e)
        return rs;
    }
}
window.history.pushState = resetHistoryFun('pushState') // 覆寫原來的pushState方法
window.history.replaceState = resetHistoryFun('replaceState') // 覆寫原來的replaceState方法

window.addEventListener('pushstate', reportBothEvent)          
window.addEventListener('replacestate', reportBothEvent) 

(2)規則二界定——怎么判斷頁面失去焦點,得到焦點?

失去焦點,得到焦點,我們主要進行如下這兩個事件的EventListener:

引入JSSDK

window.addEventListener('focus', ()=>{
    console.log('頁面得到焦點')
});

window.addEventListener('blur', ()=>{
    console.log('頁面失去焦點')
})

(3)規則三界定——怎么判斷瀏覽器tab切換離開,切換回來?

tab切換離開,切換回來,我們主要進行如下這一個事件的EventListener:

引入JSSDK

document.addEventListener('visibilitychange',  () => {
    if(document.hidden) {
        console.log('頁面離開')
    } else {
        console.log('頁面進入')
    }
})

注意:如果一個行為同時滿足2個及2個以上的規則時,只會取一個規則上報資料,避免不重復上報資料,

3.3 埋點設計

3.3.1 埋點個數

為了得到pv和uv的相關資料,我們設計了2個埋點,1個為頁面進入時上報的埋點,另外1個為頁面離開時的埋點,上報的資料都是一對的,離開-進入頁面為一對,失去焦點-得到焦點為一對,切換tab離開當前頁面-回傳當前頁面也為一對;

為什么要設計2個埋點?設計2個埋點,能覆寫全面上述我們所說的3種規則場景;其次,方面計算頁面停留時長;最后就是方便邏輯判斷,避免重復上報;

3.3.2 引數的設計

按照不同的需求,引數的設計分為如下4類:

  • pv,uv需要引數,開發者傳入引數:unique_id——標識用戶唯一標識、topic_id——當前網站唯一標識、current_env——當前網站環境,默認為prod,可用戶傳入;

  • pv,uv需要引數,sdk內部獲取引數:duration——頁面停留時長、last_page_url——上個頁面url、page_url——當前頁面url;

  • SDK需要的引數,幫助判斷事件觸發型別,SDK內部獲取引數:eventType

  • 用戶其他需要補充的引數:自定義引數

3.4 資料上報

資料上報方式是XMLHttpRequest、window.navigator.sendBeacon,基于h5sdk上報邏輯架構,

圖片 圖(4)

3.5 兼容性和容錯性

關于兼容性,依賴于window物件、不兼容IE6、IE7,IE8;

關于容錯性,對通用化內部邏輯做了try catch的容錯兼容,保證出錯時不影響業務主邏輯運行,同時上報一個出錯的事件型別,知道出錯的原因,以便提前做好對應的優化方案,

3.6 個人資料保護合規

為了保護好用戶的個人資料及其隱私并滿足法律法規要求,在埋點的設計、采集、使用等環節需要進行充分的隱私保護設計,例如,在埋點設計階段,需要確定識別符號的選擇、埋點引數的最小必要、采集頻率的最小必要等;在埋點的采集、使用階段,需要確保相關處理行為的透明、可控,包括對用戶進行告知,獲取用戶的有效同意,提供撤回同意的渠道等等,

四、數倉方案

埋點方案已經具備,接下來的作業就是設計一套接入高效,拓展便捷的數倉分析模型;為實作以上既定的分析目標,模型設計程序中需要解決以下核心問題,

4.1 核心問題串列

圖片

4.2 模型分層標準

介紹模型設計前,先說下vivo 數倉模型分層基本原則,及本次模型分層思路,各層模型設計原則參照《vivo中臺數倉建設方法論》,層級設計摘要如下:

圖片

4.3 模型層級架構

通過核心問題拆解發現,為實作通用分析模型方案,需要從資料接入層收口,在資料接入時統一引數決議,統一欄位命名,并設定相應的應用id欄位,區分各個業務資料源;接著需要生成活躍資料明細表,可統計相應的基礎分析,頁面分析指標;同時為滿足留存分析的需要,我們需要構建相應的活躍全量表,留存分析主題表基于活躍增量表和活躍全量表生成,用戶活躍資訊通過打標簽的方式標記,至此涉及三個主題分析的模型規劃完畢,層級劃分原則及規劃邏輯模型明細,如:圖(5)

圖片

圖(5)

 從分層架構圖可看出H5通用分析模型分為明細層(dw)、輕度匯總層(dma)、分析主題表 (dmt) 和指標層(da); 其中輕度匯總層可作為中間資料提供行業分析師及資料開發、業務產品等查詢分析使用;匯總層作為分析平臺通用分析模型報表資料源,匯入mysql存盤,前端基于mysql表實作資料展示,各個模型設計細則如下:

圖片

 資料模型規劃及設計的核心在于三點:確定appid和用戶id映射關系,留存方案實作及留存記錄入庫bitmap方式讀寫,

1、確定appid和用戶id映射關系-unique_id 關聯設計

多業務id統一

 

## 明細層收口資料,統一id欄位
SELECT  xx
       ,xx1
       ,CASE WHEN appid IN(1)       THEN  1   
             WHEN appid IN(2)   THEN  2  
             WHEN appid IN(3)       THEN  3    
             WHEN appid IN(4,5,6,...)       THEN  4      
        ELSE 0  END   AS  id_flag   
       ,CASE WHEN appid IN(1)      THEN  id1
             WHEN appid IN(2)  THEN  id2
             WHEN appid IN(3)      THEN  id3     
             WHEN appid IN(4,5,6,...)  THEN  IF(NVL(params['id1'],'')='',NVL(params['id2'],'NA'),params['id1'])            
       ELSE 'NA' END  AS  unique_id        
       ,appid        
  FROM ods_table_name_XXX  a     -- 各個接入業務線資料源 ods
 WHERE day='${today}'
   AND hour = '${etl_hour}'
   -- APPID 和 事件id 要匹配新增
   AND appid  in (1,2,3 ...)
   AND 事件id  in (XXX|167,XXX|168,...);

## id欄位后續關聯使用方式
## 增量關聯全量,確定是否新用戶
SELECT if(b.unique_id is null,1,0) AS is_new
FROM
(
SELECT *
  FROM table_XXX_hi
 WHERE day= '${today}'
   AND hour = '${etl_hour}'
 GROUP BY XX
       ) a
       -- 取全量表唯一 unique_id 作為關聯條件,判斷新老用戶
       -- 新用戶是相對于歷史全量的
  LEFT JOIN ( SELECT unique_id,appid
                FROM      
               ( SELECT unique_id
                        ,appid
                        ,row_number() over(partition by unique_id,appid order by 活躍日期 asc)  as rn_0
                   FROM table_XXX_df
                  WHERE day='${etl_date}'
                ) a
                WHERE rn_0 = 1
             ) b
      ON a.unique_id = b.unique_id AND a.appid = b.appid;

2、留存方案實作及留存記錄入庫bitmap方式讀寫

留存方案

## 利用bitmap思想,留存標簽滿8位轉化為16進制組合到retain_tag之前,這樣可以利用很少的位數記錄較長的活躍情況
## 示例代碼如下
SELECT user_unique_id
       ,if(length(tmp_retain_tag) = 8,is_active,concat(is_active,tmp_retain_tag))          as tmp_retain_tag
       --  如果tmp_retain_tag長度為8的時候,將資料轉化為十六進制添加到retain_tag前,并將本欄位清空,從頭開始計數
       ,if(length(tmp_retain_tag) = 8,concat(con_tmp_retain_tag,retain_tag),retain_tag)    as retain_tag
       ,is_active
  FROM
(
    SELECT unique_id
            -- 前一天的臨時存盤,與con_tmp_retain_tag保持一致
           ,tmp_retain_tag                            
            -- 如果轉換為十六進制后的長度不為2,則在左邊添加0          
           ,if(length(conv(tmp_retain_tag,2,16)) = 2,conv(tmp_retain_tag,2,16),concat('0',conv(tmp_retain_tag,2,16))) as con_tmp_retain_tag 
            -- 歷史軌跡
           ,retain_tag                                                                                      
           ,first_value(is_active) over(partition by unique_id,appid,topic_id  order by first_active_day desc)  as is_active
       FROM
      ( SELECT unique_id
               ,topic_id
               ,appid 
               ,first_active_day
               ,last_active_day
               -- 留存標簽
               ,'0' as is_active
               ,tmp_retain_tag -- 形如 11101010
               ,retain_tag       -- 形如 A0E3
          FROM table_active_XX_df  -- 活躍全量表
         WHERE day= '${last_etl_date}'
         UNION ALL
        SELECT unique_id
               ,topic_id
               ,appid 
               ,day as first_active_day
               ,day as last_active_day
               -- 留存標簽           
               ,'1' as is_active
               ,''  as tmp_retain_tag
               ,''  as retain_tag
          FROM table_active_XX_hi  -- 活躍明細表
         WHERE day= '${etl_date}'
         ) a
) b
WHERE rn =1;

## 留存指標統計:## 以3日內及第3日留存為例
WITH tmp_table AS (
SELECT DAY
       ,unique_id
       ,appid
       ,首次活躍日期
       ,CONCAT(tmp_retain_tag,retain_tag) AS login_trace    
   FROM (
        SELECT DAY
           ,unique_id
           ,tmp_retain_tag
               ,appid
               ,首次活躍日期
               ,IF(nvl(retain_tag,'') <> '',CONV(SUBSTR(retain_tag,1,8),16,2),'') AS retain_tag
              -- 如果retain_tag為空時,直接取空值,如果長度超過8位數,取最后八位數;如果長度不超過8位數,取全部,如果是30日內新用戶,長度不超過8位
          FROM table_active_XX_df WHERE DAY = 統計日
        ) x1
)
## 以3日內及第3日留存為例:
SELECT -- 第N日留存指標:第N日來訪
       ,SUM(IF(SUBSTR(login_trace,3,1) = '1',1,null))    AS retain_cnt_3th
       -- N日內留存指標:N日內訪問過1次或N次
       ,SUM(IF(instr(SUBSTR(login_trace,2,2) ,'1')= 0,null,1))  AS retain_cnt_between_3th
 FROM (
       SELECT '統計日-2天' AS dt
              ,unique_id
              ,REVERSE(SUBSTR(login_trace,1,3)) AS login_trace
              ,appid
         FROM tmp_table WHERE SUBSTR(login_trace,3,1) = '1' AND 首次活躍日期 = 統計日-2天
) X GROUP BY dt,appid;

4.4 模型資料流圖

至此,模型的設計落地全部完成,模型包含埋點資料表2張,dw明細層模型1張,維表1張,dma輕度匯總主題層2張,dmt主題表2張,任務層深4層,模型層2層,模型資料接入0.5人日可完成,

資料流圖如下:

圖片 圖(6)

五、資料展示

模型資料展示可基于用戶行為分析平臺,資料指標存盤使用 MySQL 資料庫,資料展示邏輯實作如下:

圖片

圖(7)

5.1 報表展示

報表配置完成后,各個分析模塊的前臺展示示例如下:

圖片 圖(8)應用概況報表 圖片 圖(9)用戶留存報表 圖片 圖(10)頁面分析報表

六、未來展望

至此,H5通用分模型落地流程已介紹完畢,本文主要是基于業務初期訴求,快速落地通用的、統一的資料解決方案,滿足業務分析人員在產品初期最迫切的分析需求,隨著業務的不斷發展迭代,運營產品的分析方向也會不斷的擴展和深入,同時不同的業務關注點不同,針對分析模型的訴求也不盡相同,例如在業務中后期,簡單的訪問留存分析已經支撐不了更進一步的決策制定,此時針對頁面訪問的路徑分析模型;針對營銷分析的訂單轉化模型、歸因分析模型;針對頁面跳轉分析的用戶漏斗模型等需求會相應變多,

所以,為更好的支撐業務目標達成,H5通用分析模型系列在后期會根據業務訴求落地相應的分析模型,持續為產品運營提供高效穩定的資料解決方案,

 

相關文章:

  • 用戶行為分析模型實踐(一)—— 路徑分析模型

  • 用戶行為分析模型實踐(二)—— 漏斗分析模型

分享 vivo 互聯網技術干貨與沙龍活動,推薦最新行業動態與熱門會議,

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/543136.html

標籤:大數據

上一篇:ClickHouse(12)ClickHouse合并樹MergeTree家族表引擎之AggregatingMergeTree詳細決議

下一篇:DataX插件二次開發指南

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more