本文參考了部分互聯(lián)網(wǎng)公司的實(shí)時(shí)數(shù)倉模型昂勉,結(jié)合目前所掌握的數(shù)倉建設(shè)的知識(shí)际跪,簡單介紹一下如何建設(shè)一個(gè)實(shí)時(shí)數(shù)倉。
一慎冤、實(shí)時(shí)數(shù)倉建設(shè)的背景
隨著互聯(lián)網(wǎng)的發(fā)展,越來越多的業(yè)務(wù)指標(biāo)需要實(shí)時(shí)查看沧卢,以便于更好的進(jìn)行業(yè)務(wù)分析蚁堤,尤其在舉行活動(dòng)的時(shí)候,能夠更好的把握活動(dòng)的各項(xiàng)指標(biāo)趨勢(shì)但狭,從而更好的調(diào)整策略披诗,達(dá)到活動(dòng)的目標(biāo)。
二立磁、技術(shù)選型
與flink實(shí)時(shí)處理最密不可分的就是kafka藤巢,其次flink實(shí)時(shí)數(shù)據(jù)存儲(chǔ)還有mysql、hbase息罗、es掂咒、Druid等還有部分公司內(nèi)部開發(fā)的數(shù)據(jù)存儲(chǔ)。作為剛開始的公司構(gòu)建實(shí)時(shí)數(shù)倉迈喉,選用市面上開源的數(shù)據(jù)庫就足夠可以使用了绍刮。
三、數(shù)據(jù)倉庫的建設(shè)
1挨摸、實(shí)時(shí)數(shù)倉的層級(jí)
在離線數(shù)倉中孩革,大部分都會(huì)分為數(shù)據(jù)源、數(shù)據(jù)明細(xì)層得运、數(shù)據(jù)匯總層膝蜈、面向業(yè)務(wù)層。而在實(shí)時(shí)數(shù)倉中熔掺,數(shù)據(jù)源和面向業(yè)務(wù)層直接配置成一種可實(shí)時(shí)傳輸數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)就好饱搏,不做過多處理,因?yàn)閷?shí)時(shí)中間處理層越多置逻,數(shù)據(jù)準(zhǔn)確性也會(huì)越低推沸,這邊實(shí)時(shí)數(shù)倉主要內(nèi)容是在數(shù)據(jù)明細(xì)層和數(shù)據(jù)匯總層。
2券坞、實(shí)時(shí)數(shù)倉各層級(jí)的技術(shù)選型
數(shù)據(jù)源:直接配置為kafka實(shí)時(shí)消息傳輸鬓催;
數(shù)據(jù)明細(xì)層:一般也會(huì)選擇kafka作為數(shù)據(jù)存儲(chǔ),如果是這層做成大寬表的話恨锚,可以選擇druid宇驾,或者h(yuǎn)base
數(shù)據(jù)匯總層:對(duì)數(shù)據(jù)進(jìn)行高度匯總后的數(shù)據(jù),這層一般也會(huì)選擇kafka作為數(shù)據(jù)存儲(chǔ)猴伶,這樣需要保證各層級(jí)的數(shù)據(jù)通過kafka能夠產(chǎn)生依賴课舍。
應(yīng)用層:應(yīng)用層根據(jù)不同的業(yè)務(wù)類型選用不同的數(shù)據(jù)存儲(chǔ)菌瘫,如果結(jié)果需要能夠快速搜索,可以選用es布卡,如果結(jié)果需要進(jìn)行多維數(shù)據(jù)統(tǒng)計(jì)分析雨让,可以選用druid,如果結(jié)果數(shù)據(jù)量不是很大的話忿等,最好選用mysql栖忠,相對(duì)來說,mysql的穩(wěn)定性要好一點(diǎn)贸街。
維度存儲(chǔ):維度如果是穩(wěn)定并且數(shù)據(jù)量不大的情況下可以選擇mysql庵寞,但是如果維度經(jīng)常變動(dòng)或者字段經(jīng)常增加的話,最好選用hbase進(jìn)行存儲(chǔ)薛匪。
3捐川、實(shí)時(shí)數(shù)倉的模型設(shè)計(jì)