張冰冰
(黑龍江省電力醫(yī)院 微機(jī)室,黑龍江 哈爾濱 150090)
?
SQL與NoSQL數(shù)據(jù)庫(kù)間的數(shù)據(jù)查詢轉(zhuǎn)換方法研究
張冰冰
(黑龍江省電力醫(yī)院 微機(jī)室,黑龍江 哈爾濱 150090)
針對(duì)現(xiàn)有系統(tǒng)希望擴(kuò)展其服務(wù)從而支持?jǐn)?shù)據(jù)的快速增長(zhǎng)的問(wèn)題,提出了一種數(shù)據(jù)適配器系統(tǒng)來(lái)支持包括關(guān)系數(shù)據(jù)庫(kù)(RDB)和NoSQL數(shù)據(jù)庫(kù)的混合數(shù)據(jù)庫(kù)架構(gòu)。在所提出的數(shù)據(jù)適配器系統(tǒng)中提供了阻塞轉(zhuǎn)換模式(BT模式)、阻塞轉(zhuǎn)儲(chǔ)模式(BD模式)和直接訪問(wèn)模式(DA模式)共3種查詢模式。在所述的3種查詢模式下,通過(guò)實(shí)驗(yàn)研究分析了不同的數(shù)據(jù)庫(kù)大小、不同的表大小和應(yīng)用程序類型對(duì)于數(shù)據(jù)適配器中應(yīng)用程序性能的影響。結(jié)果表明,在BT模式下,應(yīng)用程序性能受到最大的影響,且BT模式下的應(yīng)用程序等待時(shí)間最長(zhǎng)。
NoSQL;數(shù)據(jù)適配器;大數(shù)據(jù);數(shù)據(jù)庫(kù)服務(wù)
隨著云服務(wù)的發(fā)展,大數(shù)據(jù)和混合數(shù)據(jù)庫(kù)系統(tǒng)應(yīng)用廣泛,NoSQL數(shù)據(jù)庫(kù)對(duì)于大數(shù)據(jù)應(yīng)用程序越來(lái)越受歡迎。大多數(shù)現(xiàn)有系統(tǒng)均基于RDB,但隨著數(shù)據(jù)量的增長(zhǎng),企業(yè)傾向于使用NoSQL數(shù)據(jù)庫(kù)來(lái)處理大數(shù)據(jù),或需要更快地訪問(wèn)大數(shù)據(jù)。在原始系統(tǒng)中,應(yīng)用程序使用SQL與關(guān)系數(shù)據(jù)庫(kù)交互。由于NoSQL數(shù)據(jù)庫(kù)不能被SQL訪問(wèn),應(yīng)用程序需要修改設(shè)計(jì)以訪問(wèn)RDB和NoSQL數(shù)據(jù)庫(kù)。本文提出了一種集成RDB和NoSQL數(shù)據(jù)庫(kù)的數(shù)據(jù)適配器系統(tǒng),其可處理數(shù)據(jù)庫(kù)的轉(zhuǎn)換。
集群是從眾多角度來(lái)看計(jì)算機(jī)科學(xué)應(yīng)用的強(qiáng)大架構(gòu)。Ali[1]等人提供了一個(gè)顯示在云平臺(tái)上共享資源安全問(wèn)題的調(diào)查。Hashem[2]等人比較Google、Microsoft、Amazon和Cloudera大數(shù)據(jù)云平臺(tái),并對(duì)大數(shù)據(jù)進(jìn)行分類,以便用戶了解云平臺(tái)和大數(shù)據(jù)之間的關(guān)系。Chen和Zhang[3]在不同的角度討論大數(shù)據(jù)工具,并提出了設(shè)計(jì)大數(shù)據(jù)系統(tǒng)的7條原則。Barbierato等人[4]提出了一種通過(guò)SIMTHESys框架評(píng)估大數(shù)據(jù)系統(tǒng)性能的方法。關(guān)于不同的NoSQL數(shù)據(jù)庫(kù)[5]已進(jìn)行了諸多研究工作,例如BigTable[6]、HBase[7]、MongoDB[8]和Cassandra[9]。本文中HBase作為數(shù)據(jù)適配器系統(tǒng)中的NoSQL數(shù)據(jù)庫(kù)。MapReduce框架[10]在Hadoop上提供可擴(kuò)展的計(jì)算服務(wù)。一些研究人員還使用Sqoop作為混合數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)轉(zhuǎn)換器[11-14]。Cho和Garcia-Molina[15]展示了如何刷新自主數(shù)據(jù)源的本地副本以保持?jǐn)?shù)據(jù)的一致性。
數(shù)據(jù)適配器系統(tǒng)是高度模塊化的,在應(yīng)用程序和數(shù)據(jù)庫(kù)之間分層,其負(fù)責(zé)同時(shí)執(zhí)行應(yīng)用程序的查詢和數(shù)據(jù)庫(kù)之間的數(shù)據(jù)轉(zhuǎn)換。系統(tǒng)提供SQL接口解析查詢語(yǔ)句以訪問(wèn)關(guān)系數(shù)據(jù)庫(kù)和NoSQL數(shù)據(jù)庫(kù)。本文提供了一種控制數(shù)據(jù)庫(kù)轉(zhuǎn)換過(guò)程的機(jī)制,讓應(yīng)用程序執(zhí)行查詢,而無(wú)論目標(biāo)數(shù)據(jù)(表)是否正在轉(zhuǎn)換。數(shù)據(jù)轉(zhuǎn)換后,文中提供了一個(gè)補(bǔ)丁機(jī)制來(lái)同步不一致的表。
大多數(shù)應(yīng)用程序通常與關(guān)系數(shù)據(jù)庫(kù)交互,如圖1所示。若開(kāi)發(fā)人員決定使用NoSQL數(shù)據(jù)庫(kù),由于數(shù)據(jù)與原始關(guān)系數(shù)據(jù)庫(kù)的增長(zhǎng),需要在這兩種數(shù)據(jù)庫(kù)之間進(jìn)行轉(zhuǎn)換。沒(méi)有提出的系統(tǒng),開(kāi)發(fā)人員必須停止其服務(wù),修改應(yīng)用程序設(shè)計(jì)以連接到NoSQL數(shù)據(jù)庫(kù)進(jìn)行服務(wù)擴(kuò)展或數(shù)據(jù)分析。為了在執(zhí)行轉(zhuǎn)換時(shí)提供不停止服務(wù),文中提出了數(shù)據(jù)適配器系統(tǒng)。沒(méi)有數(shù)據(jù)適配器,原始系統(tǒng)允許應(yīng)用程序只連接到關(guān)系數(shù)據(jù)庫(kù)。圖2給出了本文提出的數(shù)據(jù)適配器系統(tǒng)架構(gòu),其包括4個(gè)組件:(1)關(guān)系數(shù)據(jù)庫(kù);(2)NoSQL數(shù)據(jù)庫(kù);(3)DB適配器;(4)DB轉(zhuǎn)換器。該系統(tǒng)是應(yīng)用程序和兩個(gè)數(shù)據(jù)庫(kù)之間的協(xié)調(diào)器,其控制查詢流和轉(zhuǎn)換過(guò)程。應(yīng)用程序通過(guò)數(shù)據(jù)庫(kù)適配器訪問(wèn)數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)適配器解析查詢,提交查詢,并從數(shù)據(jù)庫(kù)獲取結(jié)果集。數(shù)據(jù)適配器系統(tǒng)在執(zhí)行轉(zhuǎn)換時(shí)接受查詢,兩個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù)可能不一致。DB適配器將檢測(cè)并要求DB 轉(zhuǎn)換器執(zhí)行同步過(guò)程以保持?jǐn)?shù)據(jù)一致性。
圖1 僅具有RDB的初始系統(tǒng)
圖2 具有數(shù)據(jù)適配器及其組件的系統(tǒng)架構(gòu)
數(shù)據(jù)適配器系統(tǒng)由兩部分組成:DB適配器和DB轉(zhuǎn)換器。DB適配器負(fù)責(zé)與應(yīng)用程序、兩個(gè)數(shù)據(jù)庫(kù)和DB轉(zhuǎn)換器通信。DB轉(zhuǎn)換器負(fù)責(zé)將數(shù)據(jù)從關(guān)系數(shù)據(jù)庫(kù)轉(zhuǎn)換為HBase,并同步不一致的表。本文描述每個(gè)組件的設(shè)計(jì)和實(shí)現(xiàn)如下:HBase是基于Hadoop框架的可擴(kuò)展NoSQL數(shù)據(jù)庫(kù)。HBase中表的數(shù)據(jù)模型與MySQL中表的數(shù)據(jù)模型不同。為解決這一問(wèn)題,Phoenix被用來(lái)創(chuàng)建表作為MySQL表的克隆。Phoenix是HBase的SQL翻譯器,其允許熟悉SQL的數(shù)據(jù)庫(kù)用戶使用常用的SQL命令訪問(wèn)HBase。Phoenix不再創(chuàng)建MapReduce作業(yè),而是使用協(xié)處理器訪問(wèn)HBase,并使查詢的結(jié)果更快地返回。
圖3 數(shù)據(jù)不一致的示例
3.1 阻塞轉(zhuǎn)換模式(BT模式)
由于讀取查詢不會(huì)影響RDB表,因此對(duì)于所有的讀取查詢,數(shù)據(jù)適配器將立即執(zhí)行。故需要專注于處理寫查詢。在BT模式下,主要策略是數(shù)據(jù)適配器阻止將影響要轉(zhuǎn)換表的所有查詢。BT模式轉(zhuǎn)換流程有3個(gè)階段:等待階段、轉(zhuǎn)換階段和結(jié)束階段。等待階段意味著表保留在RDB中且不被轉(zhuǎn)換。在轉(zhuǎn)換階段,RDB表被訪問(wèn)并由DB轉(zhuǎn)換器轉(zhuǎn)換為HBase表。同時(shí),若有一個(gè)查詢想在轉(zhuǎn)換階段訪問(wèn)轉(zhuǎn)換表,查詢將被控制器阻塞,并等待轉(zhuǎn)換完成。在完成階段,表完成從RDB到HBase的轉(zhuǎn)換。然后,數(shù)據(jù)適配器將在HBase上修補(bǔ)阻塞的查詢。BT模式的性能將受到轉(zhuǎn)換時(shí)間的嚴(yán)重影響。
3.2 阻塞轉(zhuǎn)儲(chǔ)模式(BD模式)
阻塞轉(zhuǎn)儲(chǔ)模式(BD模式)通過(guò)進(jìn)一步將轉(zhuǎn)換級(jí)分成轉(zhuǎn)儲(chǔ)級(jí)和轉(zhuǎn)換級(jí)來(lái)改進(jìn)BT模式,其以減少轉(zhuǎn)換時(shí)間的影響。轉(zhuǎn)換由轉(zhuǎn)儲(chǔ)階段和轉(zhuǎn)換階段組成,在轉(zhuǎn)儲(chǔ)階段,表中的數(shù)據(jù)從RDB轉(zhuǎn)儲(chǔ)到HDFS中的轉(zhuǎn)儲(chǔ)文件(CSV格式文件),并阻塞查詢以防止RDB表和轉(zhuǎn)儲(chǔ)文件之間的數(shù)據(jù)一致性。在轉(zhuǎn)換階段,Phoenix Bulk Load在HDFS中讀取CSV格式文件以創(chuàng)建HBase表。在表完成轉(zhuǎn)換后,其將進(jìn)入完成階段。在完成階段的開(kāi)始執(zhí)行補(bǔ)丁過(guò)程以在RDB和HBase之間同步表。在BD模式下,轉(zhuǎn)換會(huì)導(dǎo)致轉(zhuǎn)換階段表不一致,但應(yīng)用程序的查詢只會(huì)在轉(zhuǎn)儲(chǔ)階段被阻止。其可大幅提高性能,但應(yīng)用程序仍必須等到轉(zhuǎn)儲(chǔ)階段完成。
3.3 直接訪問(wèn)模式(DA模式)
直接訪問(wèn)模式(DA模式)的策略是隔離應(yīng)用程序執(zhí)行和數(shù)據(jù)庫(kù)轉(zhuǎn)換過(guò)程。應(yīng)用程序可在任何階段對(duì)RDB執(zhí)行查詢。無(wú)論表是在轉(zhuǎn)儲(chǔ)階段還是轉(zhuǎn)換階段,查詢均將立即在RDB上執(zhí)行,查詢將在等待稍后修補(bǔ)的本地隊(duì)列中。DA模式中的數(shù)據(jù)不一致問(wèn)題比BD模式中的問(wèn)題更嚴(yán)重,因查詢結(jié)果可能由于轉(zhuǎn)儲(chǔ)階段中的查詢中斷而部分轉(zhuǎn)換。DA模式使用同步機(jī)制來(lái)解決數(shù)據(jù)不一致問(wèn)題,使應(yīng)用程序可完全忽略數(shù)據(jù)轉(zhuǎn)換過(guò)程。由于允許查詢進(jìn)入轉(zhuǎn)儲(chǔ)階段,執(zhí)行的查詢和轉(zhuǎn)儲(chǔ)器之間的競(jìng)爭(zhēng)會(huì)對(duì)RDB性能具有一定影響。
4.1 評(píng)估環(huán)境
表1給出了實(shí)驗(yàn)環(huán)境和配置。在實(shí)驗(yàn)中,將此值設(shè)置為CPU核心數(shù),即32個(gè)映射器,以獲得最佳性能。本文還在轉(zhuǎn)儲(chǔ)器中將RDB劃分為4個(gè)拆分/文件,這意味著在所有后續(xù)實(shí)驗(yàn)中,可在Sqoop導(dǎo)入過(guò)程中使用4個(gè)映射器。變壓器(Phoenix Bulk Load)決定適當(dāng)數(shù)量的映射器以根據(jù)數(shù)據(jù)大小轉(zhuǎn)換數(shù)據(jù)。數(shù)據(jù)庫(kù)包含3個(gè)表:書(shū)、客戶和事務(wù),生成3組不同大小的實(shí)驗(yàn)。表2列出了詳細(xì)信息?;贏WS測(cè)試數(shù)據(jù)方案,查詢生成器生成合成讀/寫查詢,讀/寫查詢的比率為50/50。寫查詢可包含INSERT、UPDATE和DELETE中的一個(gè),將集中討論實(shí)驗(yàn)中的寫查詢。
表1 環(huán)境詳細(xì)信息
表2 RDB表信息
4.2 DB轉(zhuǎn)換器轉(zhuǎn)換
文中使用3組數(shù)據(jù)來(lái)執(zhí)行從MySQL到HBase的轉(zhuǎn)換,并測(cè)量每個(gè)集合的DB轉(zhuǎn)換器的性能。圖4給出了沒(méi)有任何傳入查詢的DB轉(zhuǎn)換器的轉(zhuǎn)換時(shí)間。轉(zhuǎn)換時(shí)間受到RDB表大小的影響,集合B、C的時(shí)間比集合A的時(shí)間長(zhǎng),集合C花費(fèi)的時(shí)間少于集合B,盡管兩個(gè)集合的大小相同。原因是映射器的數(shù)量由Phoenix Bulk Load決定,這取決于輸入文件的大小。集合C中的最大表大于集合B中的最大表,因此Phoenix Bulk Load要求更多的計(jì)算資源來(lái)轉(zhuǎn)換數(shù)據(jù),從而減少轉(zhuǎn)換時(shí)間。
圖4 DB轉(zhuǎn)換器轉(zhuǎn)換時(shí)間
4.3 具有多個(gè)查詢的單個(gè)應(yīng)用程序
圖5示出了具有3種查詢模式的應(yīng)用程序周轉(zhuǎn)時(shí)間。應(yīng)用程序在BT模式下完成其作業(yè)需最長(zhǎng)時(shí)間,因查詢將被阻止,直到涉及的表完成轉(zhuǎn)換。觀察到,當(dāng)數(shù)據(jù)大小較大時(shí),數(shù)據(jù)轉(zhuǎn)換時(shí)間較長(zhǎng)。與BT模式相比,BD模式與DA模式中的應(yīng)用周轉(zhuǎn)時(shí)間顯著下降。雖BD模式在轉(zhuǎn)儲(chǔ)階段阻止了涉及表的查詢,但與轉(zhuǎn)換時(shí)間相比,轉(zhuǎn)儲(chǔ)時(shí)間極短。在DA模式下,其不會(huì)在轉(zhuǎn)儲(chǔ)和轉(zhuǎn)換階段阻塞任何查詢。因此,DA執(zhí)行比BD模式稍好。在BT模式下,數(shù)據(jù)大小的影響是明顯的,但在BD和DA模式中卻不同。因在數(shù)據(jù)較大時(shí)轉(zhuǎn)儲(chǔ)時(shí)間不會(huì)過(guò)大,所以對(duì)BD模式的影響較小。DA模式在3種模式之間需要最短的周轉(zhuǎn)時(shí)間,周轉(zhuǎn)時(shí)間幾乎接近應(yīng)用程序執(zhí)行時(shí)間RDB,因DA模式不阻止對(duì)應(yīng)用程序的任何查詢。應(yīng)用周轉(zhuǎn)時(shí)間的主要影響因素是不同查詢方式的阻塞時(shí)間。應(yīng)用程序周轉(zhuǎn)時(shí)間等于應(yīng)用程序執(zhí)行時(shí)間和應(yīng)用程序空閑時(shí)間的總和。
圖5 應(yīng)用程序周轉(zhuǎn)時(shí)間
4.4 多個(gè)應(yīng)用程序行為
對(duì)于多個(gè)應(yīng)用程序的行為,發(fā)現(xiàn)除了應(yīng)用程序等待時(shí)間之外,結(jié)果與單個(gè)應(yīng)用程序?qū)嶒?yàn)中的結(jié)果相似。對(duì)于應(yīng)用程序等待時(shí)間,由于其只考慮應(yīng)用程序到達(dá)時(shí)間和何時(shí)在系統(tǒng)中執(zhí)行,文中發(fā)現(xiàn)3種模式的結(jié)果是不同的,如圖6所示。
圖6 應(yīng)用程序等待時(shí)間
BT模式的平均應(yīng)用程序等待時(shí)間是3種模式中最長(zhǎng)的一種。對(duì)在轉(zhuǎn)換過(guò)程中提交的每個(gè)應(yīng)用程序的總等待時(shí)間進(jìn)行平均,可以發(fā)現(xiàn)BT模式下的等待時(shí)間遠(yuǎn)大于BD模式和DA模式下的時(shí)間,因使用寫入查詢的應(yīng)用程序在轉(zhuǎn)換中涉及的表被阻止。在應(yīng)用程序可執(zhí)行之前,隊(duì)列中的先前應(yīng)用程序需要首先執(zhí)行。若先前的應(yīng)用程序被阻塞,當(dāng)前應(yīng)用程序的等待時(shí)間也將受到影響。在BD模式下,由于轉(zhuǎn)換過(guò)程中轉(zhuǎn)儲(chǔ)時(shí)間的比例較短,平均等待時(shí)間也較短。在DA模式中,幾乎沒(méi)有等待時(shí)間,這是因?yàn)閼?yīng)用程序不會(huì)被阻止。
本文提出了一種用于混合數(shù)據(jù)庫(kù)系統(tǒng)的靈活且高度模塊化的數(shù)據(jù)適配器。該適配器使用通用SQL層接受來(lái)自應(yīng)用程序服務(wù)的查詢,以便不需要更改原始應(yīng)用程序的設(shè)計(jì)。數(shù)據(jù)適配器還在數(shù)據(jù)庫(kù)轉(zhuǎn)換期間控制查詢流。此外,還提出了使用3種不同模式(BT、BD和DA模式)的阻塞策略的查詢方法,以執(zhí)行從MySQL到HBase的數(shù)據(jù)轉(zhuǎn)換。同時(shí),檢查影響數(shù)據(jù)適配器中應(yīng)用程序性能的因素,包括不同的數(shù)據(jù)庫(kù)大小、表大小和應(yīng)用程序類型。結(jié)果表明,數(shù)據(jù)庫(kù)和表的大小影響單個(gè)應(yīng)用程序的周轉(zhuǎn)時(shí)間。在BT模式下,其受到最大的影響,因在數(shù)據(jù)轉(zhuǎn)換階段的長(zhǎng)阻塞時(shí)間。在BT模式下單個(gè)應(yīng)用程序的等待時(shí)間最長(zhǎng),且在DA模式中最短,因?yàn)闊o(wú)論數(shù)據(jù)庫(kù)轉(zhuǎn)換如何,均可完全執(zhí)行DA模式中的應(yīng)用程序。而B(niǎo)T模式下的應(yīng)用程序等待時(shí)間最長(zhǎng)。
[1] Ali M,Khan S U,Vasilakos A V.Security in cloud computing:Opportunities and challenges[J]. Information Sciences,2015,30(5):357-383.
[2] Hashem I A T,Yaqoob I,Anuar N B,et al.The rise of "big data" on cloud computing: Review and open research issues[J].Information Systems,2015,47(2):98-115.
[3] Chen C L P,Zhang C Y.Data-intensive applications, challenges, techniques and technologies: a survey on big data[J].Information Sciences,2014,27(5):314-347.
[4] Barbierato E,Gribaudo M,Iacono M.Performance evaluation of NoSQL big-data applications using multi-formalism models[J].Future Generation Computer Systems,2014,37(7):345-353.
[5] Han J,Haihong E,Le G,et al.Survey on NoSQL database[C].Nanjing:6th International Conference on Pervasive Computing and Applications (ICPCA),2011.
[6] Chang F,Dean J,Ghemawat S,et al.Bigtable: a distributed storage system for structured data[J].ACM Transactions on Computer Systems (TOCS),2008(26):4-10.
[7] Vora M N.Hadoop-HBase for large-scale data[C].Berlin:International Conference on Computer Science and Network Technology (ICCSNT), 2011.
[8] Chodorow K.MongoDB:the definitive guide[M].Germy:O'Reilly Media, Inc.,2013.
[9] Lakshman A, Malik P.Cassandra: a decentralized structured storage system[J].ACM SIGOPS Operating Systems Review,2010(44):35-40.
[10] Dean J,Ghemawat S.MapReduce: simplified data processing on large clusters[J].Communications of the ACM,2008,51(3):107-113.
[11] Joldzic O V, Vukovic D R.The impact of cluster characteristics on HiveQL query optimization[C].Moskove:21st Telecommunications Forum (TELFOR),2013.
[12] Leavitt N.Will NoSQL databases live up to their promise[J].Computer,2010,43(7):12-14.
[13] Li C.Transforming relational database into HBase: a case study[C].Shanghai:IEEE International Conference on Software Engineering and Service Sciences (ICSESS),2010.
[14] Rith J,Lehmayr P S,Meyer-wegener K.Speaking in tongues: SQL access to NoSQL systems[C].England:Proceedings of the 29th Annual ACM Symposium on Applied Computing (SAC’14), 2014.
[15] Cho J,Garcia-Molina H.Synchronizing a database to improve freshness[J].ACM Sigmod Record,2000(9):117-128.
Research on Data Query Conversion Between SQL and NoSQL Database
ZHANG Bingbing
(Computer Room,Heilongjiang Electric Power Hospital,Harbin 150090,China)
This paper presents a data adapter system to support a hybrid database architecture that includes relational databases (RDBs) and NoSQL databases, as many existing systems want to expand their services to support the rapid growth of data. Three query modes are provided in the proposed data adapter system: blocking transition mode (BT mode), blocking dump mode (BD mode), and direct access mode (DA mode). In the three query modes, the impact of different database sizes, different table sizes, and application types on application performance in a data adapter was investigated experimentally. The results show that in BT mode, the application performance is affected the most, and the BT application waits for the longest time.
NoSQL;data adapter;big data;database services
2016- 11- 21
張冰冰(1983-),女,工程師。研究方向:計(jì)算機(jī)數(shù)據(jù)庫(kù)。
10.16180/j.cnki.issn1007-7820.2017.08.030
TP391
A
1007-7820(2017)08-109-04