數(shù)據(jù)存儲(chǔ)和查詢方法及設(shè)備的制造方法
【專利說明】數(shù)據(jù)存儲(chǔ)和查詢方法及設(shè)備 【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)存儲(chǔ)和查詢方法及設(shè)備。 【【背景技術(shù)】】
[0002] 無論是關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RelationalDatabaseManagementSystem,RDBMS) 還是各類非關(guān)系型的數(shù)據(jù)庫(NOSQL)產(chǎn)品,都支持日期(Date)、時(shí)間戳(Timestamp)等字段 的存儲(chǔ)。日期、時(shí)間戳等字段的數(shù)據(jù)一般為周期型數(shù)據(jù),為了提升檢索性能,開發(fā)者通常會(huì) 直接利用這些字段并全部為這些字段創(chuàng)建次級(jí)索引。但隨著時(shí)間的增長(zhǎng),日期、時(shí)間戳等字 段的數(shù)據(jù)量會(huì)不斷增多,為這些字段創(chuàng)建并維護(hù)次級(jí)索引會(huì)嚴(yán)重影響存儲(chǔ)系統(tǒng)的性能,存 儲(chǔ)速度較低;另外,使用次級(jí)索引檢索數(shù)據(jù)還會(huì)帶來不容忽視的I/O開銷,查詢速度較低。 【
【發(fā)明內(nèi)容】
】
[0003] 本發(fā)明的多個(gè)方面提供一種數(shù)據(jù)存儲(chǔ)和查詢方法及設(shè)備,用以提高存儲(chǔ)和查詢數(shù) 據(jù)的速度,并提高存儲(chǔ)系統(tǒng)的性能。
[0004] 本發(fā)明的一方面,提供一種數(shù)據(jù)存儲(chǔ)方法,包括:
[0005] 客戶端獲取數(shù)據(jù)記錄,所述數(shù)據(jù)記錄包括關(guān)鍵字、時(shí)間戳和數(shù)值;
[0006] 所述客戶端確定所述關(guān)鍵字對(duì)應(yīng)的元數(shù)據(jù),所述元數(shù)據(jù)包括存儲(chǔ)服務(wù)器的標(biāo)識(shí)和 存儲(chǔ)標(biāo)識(shí);
[0007] 所述客戶端根據(jù)所述存儲(chǔ)服務(wù)器的標(biāo)識(shí),向所述存儲(chǔ)服務(wù)器發(fā)送寫入請(qǐng)求,所述 寫入請(qǐng)求包括所述存儲(chǔ)標(biāo)識(shí)、所述時(shí)間戳和所述數(shù)值;
[0008] 所述存儲(chǔ)服務(wù)器將所述數(shù)值存儲(chǔ)到所述存儲(chǔ)標(biāo)識(shí)和所述時(shí)間戳指示的存儲(chǔ)位置。
[0009] 本發(fā)明的另一方面,提供一種數(shù)據(jù)查詢方法,包括:
[0010] 客戶端獲取待查詢數(shù)值對(duì)應(yīng)的關(guān)鍵字和時(shí)間戳;
[0011] 所述客戶端確定所述關(guān)鍵字對(duì)應(yīng)的元數(shù)據(jù),所述元數(shù)據(jù)包括存儲(chǔ)服務(wù)器的標(biāo)識(shí)和 存儲(chǔ)標(biāo)識(shí);
[0012] 所述客戶端根據(jù)所述存儲(chǔ)服務(wù)器的標(biāo)識(shí),向所述存儲(chǔ)服務(wù)器發(fā)送讀請(qǐng)求,所述讀 請(qǐng)求包括所述時(shí)間戳和所述存儲(chǔ)標(biāo)識(shí);
[0013] 所述存儲(chǔ)服務(wù)器從所述存儲(chǔ)標(biāo)識(shí)和所述時(shí)間戳指示的存儲(chǔ)位置讀取所述數(shù)值,并 將所述數(shù)值發(fā)送給所述客戶端。
[0014] 本發(fā)明的又一方面,提供一種客戶端,包括:
[0015] 獲取模塊,用于獲取數(shù)據(jù)記錄,所述數(shù)據(jù)記錄包括關(guān)鍵字、時(shí)間戳和數(shù)值;
[0016] 確定模塊,用于確定所述關(guān)鍵字對(duì)應(yīng)的元數(shù)據(jù),所述元數(shù)據(jù)包括存儲(chǔ)服務(wù)器的標(biāo) 識(shí)和存儲(chǔ)標(biāo)識(shí);
[0017] 發(fā)送模塊,用于根據(jù)所述存儲(chǔ)服務(wù)器的標(biāo)識(shí),向所述存儲(chǔ)服務(wù)器發(fā)送寫入請(qǐng)求,以 使所述存儲(chǔ)服務(wù)器將所述數(shù)值存儲(chǔ)到所述存儲(chǔ)標(biāo)識(shí)和所述時(shí)間戳指示的存儲(chǔ)位置;所述寫 入請(qǐng)求包括所述存儲(chǔ)標(biāo)識(shí)、所述時(shí)間戳和所述數(shù)值。
[0018] 本發(fā)明的又一方面,提供一種存儲(chǔ)服務(wù)器,包括:
[0019] 接收模塊,用于接收客戶端根據(jù)存儲(chǔ)服務(wù)器的標(biāo)識(shí)發(fā)送的寫入請(qǐng)求;所述寫入請(qǐng) 求包括存儲(chǔ)標(biāo)識(shí)、數(shù)據(jù)記錄中的時(shí)間戳以及所述數(shù)據(jù)記錄中的數(shù)值,所述存儲(chǔ)標(biāo)識(shí)是所述 客戶端根據(jù)所述數(shù)據(jù)記錄中的關(guān)鍵字確定的;
[0020] 寫入模塊,用于將所述數(shù)值存儲(chǔ)到所述存儲(chǔ)標(biāo)識(shí)和所述時(shí)間戳指示的存儲(chǔ)位置。
[0021] 本發(fā)明的又一方面,提供一種客戶端,包括:
[0022] 獲取模塊,用于獲取待查詢數(shù)值對(duì)應(yīng)的關(guān)鍵字和時(shí)間戳;
[0023] 確定模塊,用于確定所述關(guān)鍵字對(duì)應(yīng)的元數(shù)據(jù),所述元數(shù)據(jù)包括存儲(chǔ)服務(wù)器的標(biāo) 識(shí)和存儲(chǔ)標(biāo)識(shí);
[0024] 發(fā)送模塊,用于根據(jù)所述存儲(chǔ)服務(wù)器的標(biāo)識(shí),向所述存儲(chǔ)服務(wù)器發(fā)送讀請(qǐng)求,以使 所述存儲(chǔ)服務(wù)器從所述存儲(chǔ)標(biāo)識(shí)和所述時(shí)間戳指示的存儲(chǔ)位置讀取所述數(shù)值,所述讀請(qǐng)求 包括所述時(shí)間戳和所述存儲(chǔ)標(biāo)識(shí);
[0025] 接收模塊,用于接收所述存儲(chǔ)服務(wù)器返回的所述數(shù)值。
[0026] 本發(fā)明的又一方面,提供一種存儲(chǔ)服務(wù)器,包括:
[0027] 接收模塊,用于接收客戶端根據(jù)存儲(chǔ)服務(wù)器的標(biāo)識(shí)發(fā)送的讀請(qǐng)求,所述讀請(qǐng)求包 括待查詢數(shù)值對(duì)應(yīng)的時(shí)間戳和存儲(chǔ)標(biāo)識(shí),所述存儲(chǔ)標(biāo)識(shí)是所述客戶端根據(jù)所述數(shù)值對(duì)應(yīng)的 關(guān)鍵字確定的;
[0028] 讀取模塊,用于從所述存儲(chǔ)標(biāo)識(shí)和所述時(shí)間戳指示的存儲(chǔ)位置讀取所述數(shù)值;
[0029] 發(fā)送模塊,用于將所述數(shù)值發(fā)送給所述客戶端。
[0030] 本發(fā)明提供的數(shù)據(jù)存儲(chǔ)和查詢方法及設(shè)備,確定關(guān)鍵字對(duì)應(yīng)的元數(shù)據(jù),元數(shù)據(jù)包 括存儲(chǔ)服務(wù)器的標(biāo)識(shí)和存儲(chǔ)標(biāo)識(shí);存儲(chǔ)服務(wù)器的標(biāo)識(shí)指示數(shù)值所在的存儲(chǔ)服務(wù)器,存儲(chǔ)標(biāo) 識(shí)和時(shí)間戳指示數(shù)值在存儲(chǔ)服務(wù)器上的存儲(chǔ)位置,這樣既可以確定數(shù)值的存儲(chǔ)位置又可以 不用存儲(chǔ)時(shí)間戳,也就避免了為時(shí)間戳建立次級(jí)索引影響存儲(chǔ)系統(tǒng)性能的問題,提高了存 儲(chǔ)速度;同時(shí)檢索不再基于時(shí)間戳的次級(jí)索引,避免了通過次級(jí)索引檢索數(shù)值時(shí)帶來的1/ 〇開銷,提高了查詢速度。 【【附圖說明】】
[0031] 為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述 中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí) 施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附 圖獲得其他的附圖。
[0032] 圖1為本發(fā)明一實(shí)施例提供的數(shù)據(jù)存儲(chǔ)方法的流程示意圖;
[0033] 圖2為本發(fā)明一實(shí)施例提供的數(shù)據(jù)查詢方法的流程示意圖;
[0034] 圖3為本發(fā)明一實(shí)施例提供的客戶端的結(jié)構(gòu)示意圖;
[0035] 圖4為本發(fā)明一實(shí)施例提供的存儲(chǔ)服務(wù)器的結(jié)構(gòu)示意圖;
[0036] 圖5為本發(fā)明另一實(shí)施例提供的存儲(chǔ)服務(wù)器的結(jié)構(gòu)示意圖;
[0037] 圖6為本發(fā)明另一實(shí)施例提供的客戶端的結(jié)構(gòu)示意圖;
[0038] 圖7為本發(fā)明又一實(shí)施例提供的存儲(chǔ)服務(wù)器的結(jié)構(gòu)示意圖。 【【具體實(shí)施方式】】
[0039] 為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例 中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是 本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員 在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0040] 圖1為本發(fā)明一實(shí)施例提供的數(shù)據(jù)存儲(chǔ)方法的流程示意圖。如圖1所示,該方法 包括:
[0041] 101、客戶端獲取數(shù)據(jù)記錄,該數(shù)據(jù)記錄包括關(guān)鍵字(key)、時(shí)間戳和數(shù)值 (value)〇
[0042] 數(shù)據(jù)記錄是指對(duì)應(yīng)于數(shù)據(jù)源中一組完整的相關(guān)信息,在本實(shí)施例中,數(shù)據(jù)記錄至 少包括關(guān)鍵字、時(shí)間戳和數(shù)值。關(guān)鍵字也可以理解為可以代表該數(shù)據(jù)記錄的數(shù)據(jù)標(biāo)識(shí)。例 如,以表1所示高速公路收費(fèi)站對(duì)車輛通過情況的記錄信息為例,其中一行信息就是一條 數(shù)據(jù)記錄。以表1中第一條數(shù)據(jù)記錄為例,其表示在2013-11-11的00:00這一分鐘,有999 輛小型車在杭州通過轉(zhuǎn)塘收費(fèi)站進(jìn)入了G50高速。其中,2013-11-11的00:00為時(shí)間戳,關(guān) 鍵字是[小型車.杭州.G50.轉(zhuǎn)塘],數(shù)值為999。
[0043] 表 1
[0044]
[0045]
[0046] 通常,當(dāng)有新的數(shù)據(jù)記錄產(chǎn)生時(shí),客戶端就會(huì)獲取該數(shù)據(jù)記錄。數(shù)據(jù)記錄可以由客 戶端自身產(chǎn)生,也可以由其它設(shè)備產(chǎn)生并提供給客戶端。其它設(shè)備向客戶端提供數(shù)據(jù)記錄 的方式可以有多種,例如可以是其它設(shè)備直接傳輸給客戶端,也可以是客戶端登錄其它設(shè) 備去獲取,還可以是其它設(shè)備將數(shù)據(jù)記錄存儲(chǔ)到中間設(shè)備并由客戶端從中間設(shè)備獲取,等 等。
[0047]102、客戶端確定上述關(guān)鍵字對(duì)應(yīng)的元數(shù)據(jù),該元數(shù)據(jù)包括存儲(chǔ)服務(wù)器的標(biāo)識(shí)和存 儲(chǔ)標(biāo)識(shí)。
[0048]客戶端在獲取數(shù)據(jù)記錄之后,首先確定數(shù)據(jù)記錄中關(guān)鍵字對(duì)應(yīng)的元數(shù)據(jù)。該元數(shù) 據(jù)至少包括:存儲(chǔ)服務(wù)器的標(biāo)識(shí)和存儲(chǔ)標(biāo)識(shí)。這里存儲(chǔ)服務(wù)器的標(biāo)識(shí)用于指示數(shù)據(jù)記錄 中的數(shù)值所屬的存儲(chǔ)服務(wù)器。舉例說明,存儲(chǔ)服務(wù)器的標(biāo)識(shí)可以是存儲(chǔ)服務(wù)器的網(wǎng)際協(xié)議 (InternetProtocol,IP)地址、介質(zhì)訪問控制(MediaAccessControl,MAC)地址、名稱 等。本實(shí)施例中的存儲(chǔ)服務(wù)器是真正的存儲(chǔ)機(jī)器,存儲(chǔ)服務(wù)器至少包括一個(gè)文件,每個(gè)文件 可以包括一個(gè)或多個(gè)存儲(chǔ)頁。在本實(shí)施例中,用存儲(chǔ)標(biāo)識(shí)和時(shí)間戳共同指示數(shù)據(jù)記錄中的 數(shù)值在存儲(chǔ)服務(wù)器上的存儲(chǔ)位置。
[0049] 在一可選實(shí)施方式中,客戶端確定數(shù)據(jù)記錄中關(guān)鍵字對(duì)應(yīng)的元數(shù)據(jù)的方式可以包 括:客戶端可以根據(jù)該關(guān)鍵字在本地查詢,以判斷該元數(shù)據(jù)是否存在本地;當(dāng)元數(shù)據(jù)存在 客戶端本地時(shí),客戶端從本地獲取該元數(shù)據(jù);當(dāng)元數(shù)據(jù)不存在客戶端本地時(shí),客戶端向元數(shù) 據(jù)服務(wù)器發(fā)送獲取請(qǐng)求,然后接收元數(shù)據(jù)服務(wù)器根據(jù)該獲取請(qǐng)求返回的元數(shù)據(jù),該獲取請(qǐng) 求包括上述關(guān)鍵字。優(yōu)選的,客戶端本地主要是指本地緩存。對(duì)于元數(shù)據(jù)服務(wù)器來說,接收 客戶端發(fā)送的獲取請(qǐng)求,根據(jù)該獲取請(qǐng)求,確定關(guān)鍵字對(duì)應(yīng)的元數(shù)據(jù)并返回給客戶端。
[0050] 客戶端首先在本地查找元數(shù)據(jù),當(dāng)元數(shù)據(jù)存在本地時(shí),直接從本地獲取元數(shù)據(jù),有 利于提高獲取元數(shù)據(jù)的效率,進(jìn)而提高存儲(chǔ)效率;當(dāng)元數(shù)據(jù)不存在本地時(shí),再通過元數(shù)據(jù)服 務(wù)器獲取元數(shù)據(jù),又可以保證成功獲取元數(shù)據(jù)。
[0051] 對(duì)元數(shù)據(jù)服務(wù)器來說,可以根據(jù)關(guān)鍵字在本地查詢,以判斷關(guān)鍵字對(duì)應(yīng)的元數(shù)據(jù) 是否存在本地;當(dāng)元