新聞中心
日志記錄:存儲到數(shù)據(jù)庫中的優(yōu)勢和適用情況

在信息技術(shù)發(fā)展的今天,日志記錄已經(jīng)成為了軟件開發(fā)、運維和安全管理中非常重要的一環(huán)。通過記錄系統(tǒng)運行過程中的事件,能夠幫助開發(fā)者定位程序的異常、運維人員監(jiān)控系統(tǒng)運行狀態(tài)、安全人員檢測系統(tǒng)中的安全問題。而將日志記錄存儲到數(shù)據(jù)庫中,相比于將日志存儲到文件系統(tǒng)中,有更多的優(yōu)勢并且適用的情況更加廣泛。
存儲到數(shù)據(jù)庫的優(yōu)勢
1. 查詢方便
將日志存儲到數(shù)據(jù)庫中,可以使用SQL語句進行查詢,將大大簡化日志查詢過程,特別是當(dāng)需要對一些特定的數(shù)據(jù)進行分析時,SQL語句的強大功能將能夠為我們帶來巨大的便利。比如我們可以查詢某些時刻某個IP地址登錄過的賬號,或是查找一段時間內(nèi)的所有錯誤日志等等。
2. 安全可控
將日志存儲到數(shù)據(jù)庫中,可以通過數(shù)據(jù)庫的安全機制來限制用戶對日志的訪問權(quán)限,保證日志的安全性。同時還可以通過備份和恢復(fù)功能,避免日志的數(shù)據(jù)丟失,滿足法律法規(guī)對日志存儲的要求。
3. 數(shù)據(jù)整合
如果一個企業(yè)的業(yè)務(wù)系統(tǒng)中有多個模塊,每個模塊都會產(chǎn)生一些日志,將這些日志存儲到數(shù)據(jù)庫中,可以方便地實現(xiàn)數(shù)據(jù)整合,將不同模塊的數(shù)據(jù)進行匯總,最后得出全局情況,方便管理者對企業(yè)的業(yè)務(wù)進行全面的分析和決策制定。
4. 性能提升
相對于將日志記錄存儲到文件系統(tǒng)中,將日志記錄存儲到數(shù)據(jù)庫中可以增加系統(tǒng)性能。因為數(shù)據(jù)庫的讀寫速度通常比文件系統(tǒng)的讀寫速度要快得多,而且可以使用數(shù)據(jù)庫中的索引來提高查詢速度。
5. 實時處理
將日志記錄存儲到數(shù)據(jù)庫中可以使數(shù)據(jù)更加實時,當(dāng)數(shù)據(jù)發(fā)生變化時,數(shù)據(jù)庫能夠?qū)崟r更新數(shù)據(jù)。這與將日志存儲到文件系統(tǒng)中大不相同,需要定期處理,才能保證數(shù)據(jù)的及時更新。
適用情況
無論是在軟件開發(fā)還是運維管理中,都有許多的應(yīng)用場景適用于將日志記錄存儲到數(shù)據(jù)庫中。
1. 安全管理
安全管理中需要監(jiān)測系統(tǒng)中的安全事件,如本地攻擊、網(wǎng)絡(luò)攻擊等,并記錄相關(guān)事件的日志信息。這些日志需要存儲在數(shù)據(jù)庫中以便于查詢和分析。對于網(wǎng)絡(luò)安全團隊來說,及時地進行相關(guān)的日志分析是非常重要的,它們可以通過這些日志獲取攻擊者的攻擊手段,及時發(fā)現(xiàn)和防御未知攻擊。
2. 運維管理
在運維管理中,需要記錄一些事件比如故障事件、升級事件等,以方便運維人員跟蹤。此時將相關(guān)日志存儲到數(shù)據(jù)庫中,能夠方便地進行現(xiàn)場預(yù)覽和查詢,幫助運維人員快速解決問題,減少業(yè)務(wù)損失。
3. 應(yīng)用分析
在應(yīng)用分析中,需要記錄網(wǎng)站訪問相關(guān)的日志信息,這些信息包括用戶訪問時間、用戶訪問路徑、關(guān)鍵字等等,將它們存儲到數(shù)據(jù)庫中,能夠方便的進行數(shù)據(jù)分析和統(tǒng)計,挖掘用戶喜好和行為,為企業(yè)決策制定提供依據(jù)。
將日志記錄存儲到數(shù)據(jù)庫中,并不是一項便利的任務(wù),系統(tǒng)管理員需要仔細考慮如何使數(shù)據(jù)更大的發(fā)揮其作用。但無論是在軟件開發(fā)還是運維管理中,將日志記錄存儲到數(shù)據(jù)庫中都能大幅度提升系統(tǒng)的效率和安全性。這種方法在大型系統(tǒng)中的應(yīng)用越來越廣泛,能夠滿足大量用戶的需求。從這個意義上說,將日志記錄存儲到數(shù)據(jù)庫中以增加系統(tǒng)的安全、整合性、可控性和可擴展性已經(jīng)成為一種普遍采用的做法。
相關(guān)問題拓展閱讀:
- SQL Server日志作用以及為什么先寫日志后寫數(shù)據(jù)?
- 日志服務(wù)器用什么數(shù)據(jù)庫比較好
SQL Server日志作用以及為什么先寫日志后寫數(shù)據(jù)?
今天在看Oracle的BackupGroundProcess,里邊有一段是寫到為什么先寫日志后寫數(shù)據(jù)的:LGWR, on the other hand, does lots of sequential writes to the redo log. This is an important distinction and one of the reasons that Oracle has a redo log and the LGWR process as well as the DBWn process. Scattered writes are significantly slower than sequential writes. By having the SGA buffer dirty blocks and the LGWR process do large sequential writes that can re-create these dirty buffers, we achieve an increase in performance. 其實SQL Server也是一樣,每一個SQL Server的數(shù)據(jù)庫都會按照其修改數(shù)據(jù)(insert,update,delete)的順序?qū)?yīng)的日志記錄賀姿到日志文件.SQL Server使用了Write-Ahead logging技術(shù)來保證了事務(wù)日志的原子性和持棚猛久性.而這項技術(shù)不僅僅保證了ACID中的原子性(A)和持久性(D),還大大減少了IO操作,把對數(shù)據(jù)的修改提交到磁盤的工作交給lazy-writer和checkpoint.預(yù)寫式日志(Write-Ahead Logging (WAL))SQL Server使用了WAL來確保了事務(wù)的原子性和持久性.實際上,不光是SQL Server,基本上主流的關(guān)系數(shù)據(jù)庫包括oracle,mysql,db2都使用了WAL技術(shù).WAL的核心思想是:在數(shù)據(jù)寫入到數(shù)據(jù)庫之前,先寫入到日志.因為對于數(shù)據(jù)的每筆修改都記錄在日志中,所以將對于數(shù)據(jù)的修改實時寫入到磁盤并沒有太大意義,即使當(dāng)SQL Server發(fā)生意外崩潰時,在恢復(fù)(recovery)過程中那些不該寫入已經(jīng)寫入到磁盤的數(shù)據(jù)會被回滾(RollBack),而那些應(yīng)該寫入磁盤卻沒有寫入的數(shù)據(jù)會被重做(Redo)。從而保證了持久性(Durability)但WAL不僅僅是保證了原子性和持久性。還會提高性能.硬盤是通過旋轉(zhuǎn)來讀取數(shù)據(jù),通過WAL技術(shù),每次提交的修改數(shù)據(jù)的事務(wù)并不會馬上反映到數(shù)據(jù)庫中,而是先記錄到日志.在隨后的CheckPoint和lazy Writer中一并提交,如果沒有WAL技術(shù)則需要每次提交數(shù)據(jù)時寫入數(shù)據(jù)庫:而使用WAL合并寫入,會大大減少磁盤IO:也許你會有疑問,那每次對于修改的數(shù)據(jù)還是會寫入日志文件.同樣消耗磁盤IO。上篇文章講過,每一筆寫入日志的記錄都是按照先后順序,給定順序編號的LSN進行寫入的,日志只會寫入到日志文件的邏輯末端。而不像數(shù)據(jù)那樣,可能會寫到磁盤的各個地方.所以,寫入日志的開銷會比寫入數(shù)據(jù)的開銷小很多。SQL Server修改數(shù)據(jù)的步驟SQL Server對于數(shù)據(jù)的修改,會分為以下幾個步驟順序執(zhí)行:1.在SQL Server的緩沖區(qū)的日志中寫入”Begin Tran”記錄2.在SQL Server的緩沖區(qū)的日志頁寫入要修改的信息3.在SQL Server的緩沖區(qū)將要修改的數(shù)據(jù)寫入數(shù)據(jù)頁4.在SQL Server的緩沖區(qū)的日志中寫入”Commit”記錄5.將緩沖區(qū)的日志寫入日志文件6.發(fā)送確認信息(ACK)到客戶端(SS,ODBC等)可以看到,事務(wù)日志并不是一步步寫入磁盤.而是首先寫入緩沖區(qū)后,一次性寫入日志到磁盤.這樣既能在日志寫入磁盤這塊減少IO,還能保證日志LSN的順序.上面的步驟可以看出,即使事務(wù)已經(jīng)到了Commit階段,也僅僅只是把緩沖區(qū)的日志頁寫入日志,并沒有把數(shù)據(jù)寫入數(shù)據(jù)庫.那將要修改的數(shù)據(jù)頁寫入數(shù)據(jù)庫是在何時發(fā)生的呢?Lazy Writer和CheckPoint上面提到,SQL Server修改數(shù)據(jù)的步驟鏈拍橋中并沒有包含將數(shù)據(jù)實際寫入到磁盤的過程.實際上,將緩沖區(qū)內(nèi)的頁寫入到磁盤是通過兩個過程中的一個實現(xiàn):這兩個過程分別為:1.CheckPoint2.Lazy Writer任何在緩沖區(qū)被修改的頁都會被標(biāo)記為“臟”頁。將這個臟頁寫入到數(shù)據(jù)磁盤就是CheckPoint或者Lazy Writer的工作.當(dāng)事務(wù)遇到Commit時,僅僅是將緩沖區(qū)的所有日志頁寫入磁盤中的日志文件:而直到Lazy Writer或CheckPoint時,才真正將緩沖區(qū)的數(shù)據(jù)頁寫入磁盤文件:前面說過,日志文件中的LSN號是可以比較的,如果LSN2>LSN1,則說明LSN2的發(fā)生時間晚于LSN1的發(fā)生時間。CheckPoint或Lazy Writer通過將日志文件末尾的LSN號和緩沖區(qū)中數(shù)據(jù)文件的LSN進行對比,只有緩沖區(qū)內(nèi)LSN號小于日志文件末尾的LSN號的數(shù)據(jù)才會被寫入到磁盤中的數(shù)據(jù)庫。因此確保了WAL(在數(shù)據(jù)寫入到數(shù)據(jù)庫之前,先寫入日志)。Lazy Writer和CheckPoint的區(qū)別Lazy Writer和CheckPoint往往容易混淆。因為Lazy Writer和CheckPoint都是將緩沖區(qū)內(nèi)的“臟”頁寫入到磁盤文件當(dāng)中。但這也僅僅是他們唯一的相同點了。Lazy Writer存在的目的是對緩沖區(qū)進行管理。當(dāng)緩沖區(qū)達到某一臨界值時,Lazy Writer會將緩沖區(qū)內(nèi)的臟頁存入磁盤文件中,而將未修改的頁釋放并回收資源。而CheckPoint存在的意義是減少服務(wù)器的恢復(fù)時間(Recovery Time).CheckPoint就像他的名字指示的那樣,是一個存檔點.CheckPoint會定期發(fā)生.來將緩沖區(qū)內(nèi)的“臟”頁寫入磁盤。但不像Lazy Writer,Checkpoint對SQL Server的內(nèi)存管理毫無興趣。所以CheckPoint也就意味著在這個點之前的所有修改都已經(jīng)保存到了磁盤.這里要注意的是:CheckPoint會將所有緩沖區(qū)的臟頁寫入磁盤,不管臟頁中的數(shù)據(jù)是否已經(jīng)Commit。這意味著有可能已經(jīng)寫入磁盤的“臟頁”會在之后回滾(RollBack).不過不用擔(dān)心,如果數(shù)據(jù)回滾,SQL Server會將緩沖區(qū)內(nèi)的頁再次修改,并寫入磁盤。通過CheckPoint的運作機制可以看出,CheckPoint的間歇(Recovery Interval)長短有可能會對性能產(chǎn)生影響。這個CheckPoint的間歇是一個服務(wù)器級別的參數(shù)??梢酝ㄟ^sp_config進行配置,也可以在SS中進行配置:恢復(fù)間歇的默認參數(shù)是0,意味著由SQL Server來管理這個回復(fù)間隔。而自己設(shè)置恢復(fù)間隔也是需要根據(jù)具體情況來進行界定。
日志服務(wù)器用什么數(shù)據(jù)庫比較好
日志用NOSQL,實在要用關(guān)系型,就用MYSQL
日志應(yīng)該寫數(shù)據(jù)庫嗎的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于日志應(yīng)該寫數(shù)據(jù)庫嗎,日志記錄:存儲到數(shù)據(jù)庫中的優(yōu)勢和適用情況。,SQL Server日志作用以及為什么先寫日志后寫數(shù)據(jù)?,日志服務(wù)器用什么數(shù)據(jù)庫比較好的信息別忘了在本站進行查找喔。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
網(wǎng)站欄目:日志記錄:存儲到數(shù)據(jù)庫中的優(yōu)勢和適用情況。(日志應(yīng)該寫數(shù)據(jù)庫嗎)
文章地址:http://www.dlmjj.cn/article/cosoosd.html


咨詢
建站咨詢
