亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

mysql - 海量日志數(shù)據(jù)如何處理統(tǒng)計?

瀏覽:72日期:2022-06-17 13:02:10

問題描述

項目需要做一個dashboard圖表網(wǎng)站,展示日志的相關(guān)統(tǒng)計信息。這個頁面圖表很多,一次性會加載出很多數(shù)據(jù)。

日志表有很多種,都是一些入侵攻擊日志、惡意站點訪問日志等等,需要統(tǒng)計出當(dāng)前時間、過去24小時、過去一周被攻擊主機(jī)個數(shù)、惡意站點數(shù)(這是其中兩個需求)等等數(shù)據(jù)。

比如被攻擊主機(jī)個數(shù),需要查多張數(shù)據(jù)表,然后統(tǒng)計出這個數(shù)據(jù)。

日志存儲在PostgreSQL里面,已經(jīng)基于時間做了分表,但是每天的的日志量都在100W以上。

寫入數(shù)據(jù)庫的模式是隨時從其他的系統(tǒng)中寫入。

根據(jù)這個應(yīng)用場景,如果設(shè)計這個后端統(tǒng)計呢?還請大神提供一點思路,謝謝。

問題解答

回答1:

雖然是一個PostgreSQL的問題,但是打了各種數(shù)據(jù)庫標(biāo)簽。那么我就從MongoDB和NoSQL的角度說說這個問題。因為一些情況不是特別清楚,基于自己的假設(shè)來回答,如果有和你情況不符的地方再提出來。數(shù)據(jù)庫的日常應(yīng)用無非OLAP和OLTP兩大類,你的應(yīng)用是一個比較典型的OLAP應(yīng)用。通常OLAP的特點是對時效性的要求不是非常高,對系統(tǒng)資源占用比較重。你沒有提對時效性要求到底有多高,還有你們數(shù)據(jù)的寫入模式是怎樣的。每天某個時間批量導(dǎo)入?或是隨時從其他系統(tǒng)寫入?不管怎樣,還是有一些通用的辦法來應(yīng)對的。以下是無論使用哪種數(shù)據(jù)庫都可以做的一些事情:

預(yù)聚合

從你的描述來看這是個比較典型的時序數(shù)據(jù),過去的數(shù)據(jù)是不會變的。所以可以在每天結(jié)束時把這一天的數(shù)據(jù)先聚合好,某年某月某日有多少次攻擊多少次惡意訪問之類。如果要查一段時間的,則可以把已經(jīng)按天統(tǒng)計好的數(shù)據(jù)再聚合一次。比如一個月的就是30條數(shù)據(jù)再次聚合,這比30x100w=3000w條數(shù)據(jù)的聚合要輕松很多。如果你的統(tǒng)計粒度需要比天還小,那就要看具體小到什么程度。如果是精確到時,那我可能還是會考慮按小時預(yù)聚合,這樣統(tǒng)計比如過去30天的數(shù)據(jù),就會有30x24=720條數(shù)據(jù),也在接受范圍內(nèi)。但是如果統(tǒng)計范圍允許到年,則有365x24=8760,情況就不是很樂觀了。當(dāng)然如果需要精確到分鐘,那又是更麻煩的事情。但即使這樣,預(yù)聚合仍然能有效減少數(shù)據(jù)量從而降低運算所需的時間和資源。為了解決小粒度聚合的問題,實際應(yīng)用中可能需要進(jìn)行多個層次的預(yù)聚合。比如按月,按天,按時,按分分別聚合好,這樣在需要某分鐘到某分鐘的數(shù)據(jù)時,可以把大粒度的范圍通過月、天、時先消化掉,剩下的兩頭零碎部分再用時、分鐘處理,這樣最大程度上減小需要聚合的數(shù)據(jù)量。

索引優(yōu)化

無論使用哪種數(shù)據(jù)庫,索引優(yōu)化都是很重要的步驟。按上述方法預(yù)聚合后,各種時間因素肯定都是需要在索引中的。如果在時間基礎(chǔ)上還需要對某個主機(jī)或域名等篩選,則最好是有這些字段的聯(lián)合索引。具體問題具體分析,這個還需要你根據(jù)自己的表結(jié)構(gòu)和查詢?nèi)?yōu)化。

讀寫分離

無論怎么優(yōu)化,OLAP對資源的占用都是不能忽略的。如果你的數(shù)據(jù)是實時寫入,聚合期間很容易受到I/O瓶頸的影響。所以最好是把接受數(shù)據(jù)和分析數(shù)據(jù)的結(jié)點分開。

安利時間

說說如果使用MongoDB還有哪些事情可以做。

分片。水平擴(kuò)展是NoSQL的特色之一,理論上所需時間和結(jié)點數(shù)量成反比。而數(shù)據(jù)量的增長在分布式環(huán)境中也不是一個問題。

Tag Aware Sharding。MongoDB分片的特色,可以把舊數(shù)據(jù)自動歸集到容量大,但是性能相對差的硬件上,這樣讓熱數(shù)據(jù)始終保持在性能較好的機(jī)器上達(dá)到更好的效果。

天然的讀寫分離和高可用。復(fù)制集本身就可以實現(xiàn)讀寫分離和高可用。相信這兩個特性對任何應(yīng)用都是很有意義的。

最后還是要提醒一點,理論歸理論,沒有一個方案是完美的,實際應(yīng)用時肯定還會遇到各種各樣奇怪的問題。編程是一項創(chuàng)造性的工作,需要你自己在實踐中不斷尋找最優(yōu)的解決方案,在實踐中成長。

回答2:

1、個人感覺按天分區(qū)比較好,為了提升性能,統(tǒng)計SQL不要直接查詢父表,而是將子表進(jìn)行 union 統(tǒng)計。2、另一點是合理設(shè)計索引;

回答3:

沒做過,覺得可以用定時器然放到redis里,現(xiàn)查的話確實太慢。多個查詢條件都加上索引會好些吧

回答4:

這個日志數(shù)據(jù)處理是主業(yè)還是副業(yè)?

如果是主業(yè),那就要學(xué)習(xí)下 @Mongoing中文社區(qū) 的方案,尤其是時序數(shù)據(jù)進(jìn)行預(yù)處理的概念。

如果是副業(yè),那直接上 ELK 套件就好了,投入低見效快。

相關(guān)文章:
主站蜘蛛池模板: 国产最新在线视频 | 国产亚洲精品一区二区三区 | 成年做羞羞免费观看视频网站 | 婷婷综合网 | 国产一级一级毛片 | 欧美日中文字幕 | 亚洲人成网站在线观看青青 | 国产成人精品免费视频软件 | 国产高清亚洲 | 久久9精品 | 海天翼精品一区二区三区 | 欧美一二三区视频 | 一本色道久久综合亚洲精品加 | 欧美亚洲制服 | 999国产高清在线精品 | 欧美日韩综合在线视频免费看 | 国产72av国片精品jk制服 | 国产亚洲精品久久yy5099 | 亚洲一区视频 | 手机看片高清国产日韩片 | 欧美性生活视频播放 | 久久精品亚洲精品一区 | 国产美女极品免费视频 | 亚洲视频在线观看网址 | 草草影院地址ccyycom浮力影院37 草草影院欧美 | 日本黄大片在线观看视频 | 亚洲成本人网亚洲视频大全 | 美美女高清毛片视频黄的一免费 | 91在线国内在线播放老师 | 色一伦一情一区二区三区 | 在线免费观看网站 | 日韩在线一区视频 | 久久久久亚洲香蕉网 | 欧美大黄特黄一级毛片 | 午夜国产片 | 成人中文字幕在线高清 | 1024在线视频精品免费播放 | chinese国产videoxx实拍 | 国产在线观看免费不卡 | 亚洲无线乱码高清在线观看一区 | 成年人免费黄色片 |