楊美鈺 付玉濤



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