楊美鈺 付玉濤
摘要:隨著大數(shù)據(jù)的發(fā)展,對數(shù)據(jù)存儲、數(shù)據(jù)查詢響應(yīng)時(shí)間的要求越來越高,MPP數(shù)據(jù)庫(大規(guī)模并行處理數(shù)據(jù)庫)、全文數(shù)據(jù)庫、圖數(shù)據(jù)庫等成為大數(shù)據(jù)應(yīng)用所需產(chǎn)品。本文針對國產(chǎn)全文數(shù)據(jù)庫提出一套從全文數(shù)據(jù)庫功能、接口、可管理性、可靠性、可擴(kuò)展性和性能進(jìn)行客觀評價(jià)的測評指標(biāo)及其測試方法,為選用國產(chǎn)化全文數(shù)據(jù)庫提供一套依據(jù),為指導(dǎo)產(chǎn)品的研發(fā)和性能的不斷改進(jìn)提供指導(dǎo)意義。
關(guān)鍵詞:大數(shù)據(jù);國產(chǎn)化;全文數(shù)據(jù)庫;測評指標(biāo)
引言
隨著當(dāng)前對數(shù)據(jù)挖掘、數(shù)據(jù)分析的需求越來越大,對數(shù)據(jù)規(guī)模、數(shù)據(jù)查詢響應(yīng)速度等的要求越來越高。從數(shù)據(jù)結(jié)構(gòu)來看,數(shù)據(jù)主要分為結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù),本文主要針對非結(jié)構(gòu)化數(shù)據(jù)的存儲與檢索進(jìn)行研究。對于非結(jié)構(gòu)數(shù)據(jù)的檢索,基于Hbase[1]的設(shè)計(jì),比較占空間,硬件配置要求比較高,且在ID超過200之后,查詢性能直線下降,很難符合線上的要求。ElasticSearch[2](以下簡稱ES)基于Lunce,優(yōu)點(diǎn)是搜索速度快,方便建立索引。本文針對基于ES設(shè)計(jì)的全文數(shù)據(jù)庫進(jìn)行研究。
當(dāng)涉及到選購全文數(shù)據(jù)庫時(shí),對其功能、接口、可管理性、可靠性、可擴(kuò)展性、性能的客觀評價(jià)還缺少相應(yīng)的依據(jù)。因此,建立一種合理、適用性強(qiáng)的全文數(shù)據(jù)庫測評指標(biāo)及其測試方法意義重大,幫助用戶評估和選型全文數(shù)據(jù)庫的同時(shí),對產(chǎn)品性能的不斷改進(jìn)有著重要的意義。本文依據(jù)全文數(shù)據(jù)庫的特點(diǎn),提出了一套關(guān)于國產(chǎn)全文數(shù)據(jù)庫功能、接口、可管理性、可靠性、可擴(kuò)展性、性能的測評指標(biāo),為廣大用戶選用和評價(jià)國產(chǎn)全文數(shù)據(jù)庫提供方法。
一、全文數(shù)據(jù)庫簡介
(一)數(shù)據(jù)、檢索的分類
我們生活中的數(shù)據(jù)總體分為兩種:結(jié)構(gòu)化數(shù)據(jù) 和非結(jié)構(gòu)化數(shù)據(jù)。
結(jié)構(gòu)化數(shù)據(jù): 指具有固定格式或有限長度的數(shù)據(jù),如數(shù)據(jù)庫,元數(shù)據(jù)等;非結(jié)構(gòu)化數(shù)據(jù): 指不定長或無固定格式的數(shù)據(jù),如郵件,word文檔等。
按照數(shù)據(jù)的分類,搜索也分為兩種:對結(jié)構(gòu)化數(shù)據(jù)的搜索 :如對數(shù)據(jù)庫的搜索,用SQL語句。再如對元數(shù)據(jù)的搜索,如利用windows搜索對文件名,類型,修改時(shí)間進(jìn)行搜索等。對非結(jié)構(gòu)化數(shù)據(jù)的搜索:如利用windows的搜索也可以搜索文件內(nèi)容,如用Google和百度可以搜索大量內(nèi)容數(shù)據(jù)。
(二) ES簡介
1 ES架構(gòu)及與傳統(tǒng)數(shù)據(jù)庫的區(qū)別
ES是一款分布式全文檢索框架,底層基于Lucene實(shí)現(xiàn),其架構(gòu)如圖1所示。
ES與傳統(tǒng)數(shù)據(jù)的區(qū)別主要有:
1)結(jié)構(gòu)名稱不同:一個(gè)ES集群可以包含多個(gè)索引,每個(gè)索引又包含了很多類型,類型中包含了很多文檔,每個(gè)文檔使用JSON 式存儲數(shù)據(jù),包含了很多字段。
2)ES采用分布式搜索,傳統(tǒng)數(shù)據(jù)庫進(jìn)行遍歷式搜索。
3)ES采用倒排索引,傳統(tǒng)數(shù)據(jù)庫采用B+樹索引。
2 ES基本概念
集群:指的是一個(gè)或者多個(gè)節(jié)點(diǎn)(服務(wù)器)的集合,這些節(jié)點(diǎn)會一起保存數(shù)據(jù),并且會在所有的節(jié)點(diǎn)上提供聯(lián)合索引和搜索的功能。一個(gè)集群通常會被一個(gè)名字所標(biāo)示,必須說明的是,確保不要在不同的環(huán)境中使用相同的集群名稱。否則節(jié)點(diǎn)可能會加入錯(cuò)誤的集群。
節(jié)點(diǎn):指的是一個(gè)集群中的單個(gè)機(jī)器,它存儲數(shù)據(jù)、并且參與集群的索引和搜索功能,實(shí)際上就像一個(gè)集群。一個(gè)節(jié)點(diǎn)也是被一個(gè)名字所標(biāo)示,其默認(rèn)的名稱是在節(jié)點(diǎn)啟動(dòng)時(shí)候的分配給他的唯一標(biāo)示符(UUID)。一個(gè)節(jié)點(diǎn)可以通過一個(gè)集群名加入某一個(gè)集群。默認(rèn)情況下,每一個(gè)節(jié)點(diǎn)都會加入名為ES的集群中。
索引:指的是一系列文檔的集合,這些文檔有著共同的特性和特征。
類型:在索引中,可以定義一種或者多種類型。一般而言,一種類型定義是為了給一個(gè)擁有共同的元素的集合。
文檔:可以被索引的基本單元。例如,你可以擁有一個(gè)針對單個(gè)消費(fèi)者的文檔,另一個(gè)用于單個(gè)訂單信息的文檔。該文檔以JSON(JavaScript Object Notation)表示,JOSN是一種無處不在的互聯(lián)網(wǎng)數(shù)據(jù)的交換格式。
分片&副本:一個(gè)索引中可能存放非常多的數(shù)據(jù),這些數(shù)據(jù)甚至有可能超越一個(gè)單節(jié)點(diǎn)機(jī)器的資源限制。例如一個(gè)索引中如果有十億個(gè)文檔的話將會占用多達(dá)1Tb的空間,而這些是無法從單個(gè)節(jié)點(diǎn)提供搜索請求的,因?yàn)檫@將十分緩慢。想要解決這個(gè)問題,ES提供了可以將你的索引分片的能力,這些分片成為切片。每當(dāng)你創(chuàng)建一個(gè)索引的時(shí)候,你可以十分輕松的制定這個(gè)索引的分片個(gè)數(shù)。每個(gè)分片就是一個(gè)功能完整且獨(dú)立的索引,當(dāng)然,他們可以分布在集群的任意一個(gè)節(jié)點(diǎn)上。
二、 測評指標(biāo)及方法
(一) 測試指標(biāo)
2017年9月至2018年1月,項(xiàng)目組對阿里云、浪潮、拓爾思、星環(huán)科技等國內(nèi)7個(gè)廠商的全文數(shù)據(jù)庫進(jìn)行了測試,并對數(shù)據(jù)庫的業(yè)務(wù)應(yīng)用進(jìn)行了進(jìn)一步的分析,為更加規(guī)范地開展未來全文數(shù)據(jù)庫測試及符合性評價(jià),依據(jù)GB/T16260《軟件工程產(chǎn)品質(zhì)量》和GB/T20273《信息安全技術(shù)數(shù)據(jù)庫管理系統(tǒng)安全技術(shù)要求》,結(jié)合全文數(shù)據(jù)庫自身的特點(diǎn),制定了全文數(shù)據(jù)庫產(chǎn)品的功能、接口、可管理性、可靠性、可擴(kuò)展性、性能的測評指標(biāo)體系,如圖3所示。在實(shí)際測評工作中,用戶可根據(jù)實(shí)際使用情況合理裁剪,以滿足產(chǎn)品測試的個(gè)性化要求。
(1)功能指標(biāo):主要評價(jià)全文數(shù)據(jù)庫應(yīng)具有的基本功能。指標(biāo)包括支持對二維表的管理,類SQL的查詢語法,支持相關(guān)度排序,詞庫可配置,地理位置檢索功能,支持時(shí)間、IP、數(shù)值、全文、地理經(jīng)緯度、二進(jìn)制等數(shù)據(jù)類型,支持算術(shù)、關(guān)系、邏輯等操作符類型,支持等值和區(qū)間兩種分區(qū)計(jì)算,支持SQL方式進(jìn)行表的管理、數(shù)據(jù)查詢、二進(jìn)制檢索。
(2)接口指標(biāo):評價(jià)全文數(shù)據(jù)庫的接口支持情況。指標(biāo)包括支持SQL檢索語法、支持Java和C加載接口、提供Shell交互接口。
(3)可管理性指標(biāo):評價(jià)全文數(shù)據(jù)庫的基本管理能力。指標(biāo)包括索引/表管理、用戶權(quán)限管理、集群狀態(tài)監(jiān)控。
(4)可靠性指標(biāo):評價(jià)全文數(shù)據(jù)庫是否支持副本策略,且不存在單點(diǎn)故障。
(5)可擴(kuò)展性指標(biāo):評價(jià)全文數(shù)據(jù)庫線性擴(kuò)展的能力。
(6)性能指標(biāo):主要評價(jià)全文數(shù)據(jù)庫的業(yè)務(wù)性能。指標(biāo)包括數(shù)據(jù)加載、熱數(shù)據(jù)查詢、并發(fā)查詢。
(二)功能、接口、可管理性、可靠性、可擴(kuò)展性測試方法
對于功能、接口、可管理性、可靠性、可擴(kuò)展性的測試指標(biāo)的測試,測試方法及流程可概括為三方面:
(1)生成數(shù)據(jù)階段:用于全文數(shù)據(jù)庫功能、接口、可管理性、可靠性、可擴(kuò)展性測試的數(shù)據(jù)準(zhǔn)備;
(2)生成測試語句階段:用于功能、接口、可管理性、可靠性、可擴(kuò)展性測試;
(3)輸出結(jié)果及分析:查看輸出結(jié)果與預(yù)期結(jié)果的符合性。
(三) 性能測試方法
1 測試數(shù)據(jù)設(shè)計(jì)
測試數(shù)據(jù)采用通訊郵件數(shù)據(jù),以.json文件進(jìn)行存儲,包括了14個(gè)常用業(yè)務(wù)字段類型,具體見表1所示。
2 數(shù)據(jù)加載測試方法
數(shù)據(jù)加載測試方法同樣可歸納為三個(gè)方面:
(1)生成數(shù)據(jù):根據(jù)設(shè)計(jì)的場景,搭建數(shù)據(jù)生成環(huán)境并生成200億條數(shù)據(jù);
(2)數(shù)據(jù)記載:執(zhí)行數(shù)據(jù)加載語句,直至索引建立完畢;
(3)記錄數(shù)據(jù)加載速率并核實(shí)入庫數(shù)據(jù)量。
3 熱數(shù)據(jù)查詢、并發(fā)查詢測試方法
(一)熱數(shù)據(jù)查詢
a.精確查詢:基于入庫的郵件數(shù)據(jù),分別對字符串、IP類型、數(shù)值三種類型的數(shù)據(jù)進(jìn)行精確查詢;
b.全文查詢:基于入庫的郵件數(shù)據(jù),分別對關(guān)鍵字、通配符、短語進(jìn)行查詢;
c.相關(guān)度查詢:基于入庫的郵件數(shù)據(jù),進(jìn)行相關(guān)度查詢;
d.多個(gè)關(guān)鍵詞查詢;
e.聚合函數(shù)查詢;
f.表達(dá)式查詢;
(二)并發(fā)查詢
準(zhǔn)備查詢語句執(zhí)行并發(fā)查詢,查看結(jié)果返回時(shí)間,例如:
Select * from d6 where subject=full_text("經(jīng)理") limit 1000
三、結(jié)束語
本文從全文數(shù)據(jù)庫的應(yīng)用出發(fā)角度,提出了一套對其功能、接口、可管理性、可靠性、可擴(kuò)展性、性能的客觀評價(jià)的依據(jù)和測試方法,并針對數(shù)據(jù)加載、熱數(shù)據(jù)查詢、并發(fā)查詢進(jìn)行了測試,驗(yàn)證了測試方法的可行性。實(shí)際測評工作中,用戶可根據(jù)實(shí)際使用情況合理裁剪,以滿足產(chǎn)品測試的個(gè)性化要求。隨著全文數(shù)據(jù)庫應(yīng)用的越來越廣泛,還需在今后的大量實(shí)驗(yàn)和總結(jié)的基礎(chǔ)上對性能測試做進(jìn)一步的研究。
參考文獻(xiàn):
[1] 陳棟波,高躍明.基于HBase的海量文件的檢索方案研究,設(shè)計(jì)研究與應(yīng)用,2016
[2] 楊麗萍,張希翔,孟椿智,謝瑞浩.基于Elasticsearch的大數(shù)據(jù)搜索引擎在電力企業(yè)的應(yīng)用研究,數(shù)字技術(shù)與應(yīng)用,2017
作者簡介:
楊美鈺(1985-),女,山西運(yùn)城人,桂林電子科技大學(xué)碩士,工程師。從事軍用軟件試驗(yàn)鑒定與研究工作。
付玉濤(1982-),女,山東聊城人,北京郵電大學(xué)碩士,工程師。從事軍用軟件試驗(yàn)鑒定與研究工作。