一種日志查詢方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種日志查詢方法和系統(tǒng)。
【背景技術(shù)】
[0002]隨著移動通信網(wǎng)、互聯(lián)網(wǎng)、物聯(lián)網(wǎng)等信息技術(shù)的飛速發(fā)展,信息技術(shù)已經(jīng)融入到人們的生活,遍布世界各地的各種通信終端、傳感設(shè)備等產(chǎn)生了超過以往任何時代的巨量數(shù)據(jù)。與此同時,電子商務(wù)、社交網(wǎng)絡(luò)的興起每時每刻都在生成各種各樣的數(shù)據(jù)。
[0003]海量的數(shù)據(jù)中蘊含著大量信息,從信息中可以提取大量有用價值。其中,網(wǎng)站采集的日志一般包含了大量人們一特別是產(chǎn)品分析人員感興趣的信息,其記錄了服務(wù)器接收處理請求以及運行時錯誤等各種原始信息,通過對這些日志進行分析和統(tǒng)計,能夠有效掌握系統(tǒng)運行情況以及網(wǎng)站內(nèi)容的受訪問情況、加強對整個網(wǎng)站及其內(nèi)容的維護與管理。而這些海量的日志數(shù)據(jù)通常為小文件,面對海量零散小文件的日志數(shù)據(jù),如何高效的進行存儲以及查詢十分關(guān)鍵。
[0004]由于目前普遍使用的基于關(guān)系型數(shù)據(jù)庫的存儲查詢方案在海量小文件數(shù)據(jù)存儲和查詢的條件下加載效率低、檢索速度慢,因此需要一種能夠適應(yīng)海量小文件數(shù)據(jù)存儲、查詢等應(yīng)用需求、提高數(shù)據(jù)查詢效率的日志查詢方案。
【發(fā)明內(nèi)容】
[0005]鑒于此,本發(fā)明提供了一種新的日志查詢方案,以力圖解決或至少緩解上面存在的問題。
[0006]根據(jù)本發(fā)明的一個方面,提供了一種日志查詢方法,該方法包括:接收采集的至少一條日志,日志包括日志來源、日志生成日期和日志生成時間;將接收的每一條日志存儲為一個第一文件,該第一文件以該條日志的日志來源、日志生成日期和日志生成時間為存儲路徑;讀取日志來源相同、日志生成日期相同和日志生成時間所屬的時間段相同的存儲路徑下的至少一個第一文件;將該至少一個第一文件按照其中日志生成時間有序排列后合并為一個第二文件,該第二文件以第一文件中日志生成時間為索引,并以日志來源、日志生成日期和日志生成時間所屬的時間段為存儲路徑;接收用戶的日志分頁查詢請求,獲取相應(yīng)存儲路徑下的第二文件,對獲取的第二文件進行分頁查詢后將查詢結(jié)果返回至用戶。
[0007]可選地,在根據(jù)本發(fā)明的方法中,在將接收的每一條日志存儲為一個第一文件的步驟之前,還包括:解析日志內(nèi)容,判斷日志是否為無效日志,若是則將該條日志刪除。
[0008]可選地,在根據(jù)本發(fā)明的方法中,該日志分頁查詢請求包括日志來源、日志生成日期、日志生成時間、頁起始行和每頁日志條數(shù),獲取相應(yīng)存儲路徑下的第二文件,對獲取的第二文件進行分頁查詢后將查詢結(jié)果返回至用戶的步驟包括:根據(jù)日志分頁查詢請求中的日志來源、日志生成日期和日志生成時間確定第二文件的存儲路徑,讀取該存儲路徑下的第二文件;讀取第二文件中該日志生成時間對應(yīng)的一條日志,并以該條日志作為行號為第I行的日志;根據(jù)該頁起始行和每頁日志條數(shù)確定該頁的頁結(jié)束行;讀取并存儲第二文件中第I行日志后行號為該頁起始行至頁結(jié)束行的所有日志為查詢結(jié)果。
[0009]可選地,在根據(jù)本發(fā)明的方法中,讀取第二文件中日志生成時間對應(yīng)的一條日志的步驟包括:查詢第二文件的索引,若索引中存在該日志生成時間,則讀取第二文件中該日志生成時間對應(yīng)的一條日志;以及若索引中不存在該日志生成時間,則查詢索引中與該日志生成時間最接近的日志生成時間,讀取第二文件中最接近的日志生成時間對應(yīng)的一條日
V1、1、O
[0010]可選地,在根據(jù)本發(fā)明的方法中,在讀取并存儲第二文件中第I行日志后行號為該頁起始行至頁結(jié)束行的所有日志為查詢結(jié)果的步驟之前,還包括:根據(jù)每頁日志條數(shù)判斷該頁起始行是否位于第一頁。
[0011 ]可選地,在根據(jù)本發(fā)明的方法中,若頁起始行位于第一頁,則令該頁起始行為第I行,讀取并存儲第二文件中第I行日志后行號為該頁起始行至頁結(jié)束行的所有日志為查詢結(jié)果的步驟包括:將第I行的日志存儲至查詢結(jié)果;以第二文件中該第I行的日志為起始,重復讀取下一條日志、將該條日志存儲至查詢結(jié)果,直至重復次數(shù)為每頁日志條數(shù)減去I。
[0012]可選地,在根據(jù)本發(fā)明的方法中,若頁起始行不是位于第一頁,則讀取并存儲第二文件中第I行日志后行號為該頁起始行至頁結(jié)束行的所有日志為查詢結(jié)果的步驟包括:以第二文件中第I行的日志為起始,重復讀取下一條日志直至重復次數(shù)為頁起始行減去2;繼續(xù)重復讀取下一條日志、將該條日志存儲至查詢結(jié)果,直至重復次數(shù)為每頁日志條數(shù)。
[0013]可選地,在根據(jù)本發(fā)明的方法中,還包括:根據(jù)頁起始行和每頁日志條數(shù)確定下一頁的頁起始行,將該下一頁的頁起始行存儲至查詢結(jié)果。
[0014]可選地,在根據(jù)本發(fā)明的方法中,其中每一條日志為一行,頁結(jié)束行為頁起始行加上每頁日志條數(shù)后減去I,下一頁的頁起始行為該頁起始行加上每頁日志條數(shù)。
[0015]可選地,在根據(jù)本發(fā)明的方法中,第二文件為MapfiIe文件。
[0016]根據(jù)本發(fā)明的另一個方面,還提供了一種日志查詢系統(tǒng),該系統(tǒng)包括:接收模塊,適于接收采集的至少一條日志,該日志包括日志來源和日志時間;還適于將接收的每一條日志存儲為一個第一文件,該第一文件以該條日志的日志來源、日志生成日期和日志生成時間為存儲路徑;合并模塊,適于讀取日志來源相同、日志生成日期相同和日志生成時間所屬的時間段相同的存儲路徑下的至少一個第一文件;還適于將至少一個第一文件按照其中日志生成時間有序排列后合并為一個第二文件,該第二文件以第一文件中日志生成時間為索引,并以日志來源、日志生成日期和日志生成時間所屬的時間段為存儲路徑;查詢模塊,適于接收用戶的日志分頁查詢請求,獲取相應(yīng)存儲路徑下的第二文件,對獲取的第二文件進行分頁查詢后將查詢結(jié)果返回至用戶;以及存儲模塊,適于存儲第一文件和第二文件。
[0017]可選地,在根據(jù)本發(fā)明的系統(tǒng)中,接收模塊還適于在將接收的每一條日志存儲為一個第一文件之前,解析日志內(nèi)容,判斷日志是否為無效日志,若是則將該條日志刪除。
[0018]可選地,在根據(jù)本發(fā)明的系統(tǒng)中,日志分頁查詢請求包括日志來源、日志生成日期、日志生成時間、頁起始行和每頁日志條數(shù),查詢模塊適于根據(jù)日志分頁查詢請求中的日志來源、日志生成日期和日志生成時間確定第二文件的存儲路徑,讀取該存儲路徑下的第二文件;還適于讀取第二文件中該日志生成時間對應(yīng)的一條日志,并以該條日志作為行號為第I行的日志;還適于根據(jù)頁起始行和每頁日志條數(shù)確定該頁的頁結(jié)束行,讀取并存儲第二文件中第I行日志后行號為該頁起始行至頁結(jié)束行的所有日志為查詢結(jié)果。
[0019]可選地,在根據(jù)本發(fā)明的系統(tǒng)中,查詢模塊還適于查詢第二文件的索引,若索引中存在該日志生成時間,則讀取第二文件中該日志生成時間對應(yīng)的一條日志;若索引中不存在該日志生成時間,則查詢索引中與該日志生成時間最接近的日志生成時間,讀取第二文件中最接近的日志生成時間對應(yīng)的一條日志。
[0020]可選地,在根據(jù)本發(fā)明的系統(tǒng)中,查詢模塊還適于在讀取并存儲第二文件中第I行日志后行號為該頁起始行至頁結(jié)束行的所有日志為查詢結(jié)果之前,根據(jù)每頁日志條數(shù)判斷該頁起始行是否位于第一頁。
[0021]可選地,在根據(jù)本發(fā)明的系統(tǒng)中,查詢模塊還適于若頁起始行位于第一頁,則令該頁起始行為第I行,將第I行的日志存儲至查詢結(jié)果,并以第二文件中該第I行的日志為起始,重復讀取下一條日志、將該條日志存儲至查詢結(jié)果,直至重復次數(shù)為每頁日志條數(shù)減去
1
[0022]可選地,在根據(jù)本發(fā)明的系統(tǒng)中,查詢模塊還適于若頁起始行不是位于第一頁,則以第二文件中第I行的日志為起始,重復讀取下一條日志直至重復次數(shù)為頁起始行減去2;繼續(xù)重復讀取下一條日志、將該條日志存儲至查詢結(jié)果,直至重復次數(shù)為每頁日志條數(shù)。
[0023]可選地,在根據(jù)本發(fā)明的系統(tǒng)中,查詢模塊還適于根據(jù)頁起始行和每頁日志條數(shù)確定下一頁的頁起始行,將下一頁的頁起始行存儲至查詢結(jié)果。
[0024]可選地,在根據(jù)本發(fā)明的系統(tǒng)中,其中每一條日志為一行,頁結(jié)束行為頁起始行加上每頁日志條數(shù)后減去I,下一頁的頁起始行為該頁起始行加上每頁日志條數(shù)。
[0025]可選地,在根據(jù)本發(fā)明的系統(tǒng)中,第二文件為Mapfile文件。
[0026]根據(jù)本發(fā)明的日志查詢方案,通過對海量的小文件日志進行合并后存儲為第二文件,節(jié)省了系統(tǒng)資源,同時設(shè)置具體的查詢條件,并以日志時間為索引查詢第二文件,可以實現(xiàn)對第二文件中日志的分頁查詢,提高了查詢效率。
【附圖說明】
[0027]為了實現(xiàn)上述以及相關(guān)目的,本文結(jié)合下面的描述和附圖來描述某些說明性方面,這些方面指示了可以實踐本文所公開的原理的各種方式,并且所有方面及其等效方面旨在落入所要求保護的主題的范圍內(nèi)。通過結(jié)合附圖閱讀下面的詳細描述,本公開的上述以及其它目的、特征和優(yōu)勢將變得更加明顯。遍及本公開,相同的附圖標記通常指代相同的部件或元素。
[0028]圖1示出了根據(jù)本發(fā)明一個示例性實施例的日志查詢系統(tǒng)100的結(jié)構(gòu)框
[0029]圖;以及
[0030]圖2示出