乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      輕量級(jí)高性能多維分析套件

       raqsoft 2019-08-06

      什么是輕量級(jí)?拋開(kāi)技術(shù)術(shù)語(yǔ),從效果上看就是為了實(shí)現(xiàn)操作目的,使用更輕便、更省時(shí)的方法;那么什么是高性能呢?最直接的說(shuō)法就是比常用方法更加高效、更快。

      下面就來(lái)介紹潤(rùn)乾提供的這一套輕量級(jí)、高性能的多維分析套件。

       

      輕量級(jí)的準(zhǔn)確含義,是相對(duì)于重量級(jí)框架而言的一種程序設(shè)計(jì)模式。輕量級(jí)的優(yōu)點(diǎn)在于對(duì)容器沒(méi)有依賴(lài)性,易于配置,更加通用,啟動(dòng)時(shí)間較短,并能充分減少開(kāi)發(fā)復(fù)雜度;而高性能,則是指相比于常用方法而言,獲取期望結(jié)果更加快速、準(zhǔn)確的實(shí)現(xiàn)方法。具體到潤(rùn)乾報(bào)表,這里將給大家介紹通過(guò)多維分析頁(yè)面對(duì)簡(jiǎn)單SQL進(jìn)行查詢(xún)。

      這個(gè)過(guò)程其實(shí)很簡(jiǎn)單:我們?cè)诙嗑S分析頁(yè)面輸入簡(jiǎn)單 SQL語(yǔ)句,通過(guò)集算器 JDBC 提交,然后對(duì)組表執(zhí)行 SQL 查詢(xún),將結(jié)果返回給多維分析前端。結(jié)構(gòu)圖如下:

      undefined 

      其中,組表文件由集算器從各種異構(gòu)數(shù)據(jù)源采集數(shù)據(jù)并計(jì)算而來(lái),具體做法可以參考《集算器教程 - 組表》。

       

      由于組表文件具備獨(dú)立計(jì)算的能力,可以脫離數(shù)據(jù)庫(kù)為前端提供數(shù)據(jù)源服務(wù),因此非常適合作為中間件,并以此為基礎(chǔ)實(shí)現(xiàn)這套o(hù)lap套件。下面我們就使用集算器做一個(gè)測(cè)試,進(jìn)一步了解和使用組表文件,并與oracle做對(duì)比,更加直觀(guān)的了解這個(gè)套件的輕量級(jí)、高性能特點(diǎn)。

      測(cè)試環(huán)境

      處理器Inter(R) Core(TM) i5-6200U CPU @ 2.30GHz 2.40GHz
      內(nèi)存8G
      硬盤(pán)1TB
      操作系統(tǒng)Windows10 家庭中文版(64 位)

      測(cè)試使用的設(shè)備不算高端,但因?yàn)闇y(cè)試的目的是對(duì)組表以及oracle進(jìn)行對(duì)比,因此在相同環(huán)境下的數(shù)據(jù)之間作對(duì)比,設(shè)備影響因素不大,性能對(duì)比仍然是有效的參考。

      設(shè)置授權(quán)

      我們使用集算器對(duì)數(shù)據(jù)進(jìn)行查詢(xún)比對(duì),為此我們需要在官網(wǎng)或乾學(xué)院中下載含高性能存儲(chǔ)的集算器試用授權(quán)到本地,然后在【工具-選項(xiàng)-環(huán)境】中選擇授權(quán)文件,設(shè)置后的結(jié)果如下:

      undefined 

       

      生成測(cè)試數(shù)據(jù)

      為了充分體現(xiàn)測(cè)試效果,測(cè)試用例的數(shù)據(jù)必須足夠大。我們將創(chuàng)建一個(gè)5000萬(wàn)條數(shù)據(jù)、至少十個(gè)字段的數(shù)據(jù)表。

      首先,在集算器中生成測(cè)試數(shù)據(jù)的txt格式文件:


      AB
      1=create(ID,產(chǎn)品編號(hào),顏色,內(nèi)存,擴(kuò)展容量,核心數(shù),主屏尺寸,電池容量,后置攝像頭,前置攝像頭,機(jī)身重量,質(zhì)保時(shí)間,雙卡雙待,上市時(shí)間,單價(jià),庫(kù)存量)
      2[黑,白,銀,玫瑰金,土豪金][0,0.5,0.75,0.9,0.95,1]
      3[32,128,64,16,8]
      4[64,16,8,128,32]
      5[2,8,4][0,0.5,0.9,1]
      62018-01-01=workdays(A6,A6+364)
      7for 500=100000.new((A7-1)*100000+#:ID,rands("abcdefghijklmnopqrstuvwxyz0123456789",36): 產(chǎn)品編號(hào),A2(B2.pseg(rand())): 顏色,A3(B2.pseg(rand())): 內(nèi)存,A4(B2.pseg(rand())): 擴(kuò)展容量,A5(B5.pseg(rand())): 核心數(shù),(string(round((rand()*(6-5)+5),1))+"寸"): 主屏尺寸,(string(int(round((rand()*(4-3)+3),1)*1000))+"mAh"): 電池容量,(string(int(round((rand()*(3-2)+2),1)*1000))+"萬(wàn) / 像素"): 后置攝像頭,(string(int(round((rand()*(2-1)+1),1)*1000))+"萬(wàn) / 像素"): 前置攝像頭,(string(int(round((rand()*(2-1)+1),2)*100))+"克"): 機(jī)身重量,(string(int(rand()*3+1))+"年"): 質(zhì)保時(shí)間,if(rand()<0.5,"支持","不支持"): 雙卡雙待,string(elapse(A6,-rand(100))): 上市時(shí)間,int(rand()*(4999-1999)): 單價(jià),int(rand()*(999-9)): 庫(kù)存量 )
      8
      >file("D:\\test.txt").export@ta(B7)

      生成的txt文件大小為6284M。

      undefined 

      然后我們要將這個(gè)txt中的手機(jī)產(chǎn)品表數(shù)據(jù),用 SPL 語(yǔ)言腳本轉(zhuǎn)儲(chǔ)到集算器組表文件 test.ctx 中。SPL 腳本如下:


      A
      1=file("D:\\test.ctx")
      2=A1.create(ID,產(chǎn)品編號(hào),顏色,內(nèi)存,擴(kuò)展容量,核心數(shù),主屏尺寸,電池容量,后置攝像頭,前置攝像頭,機(jī)身重量,質(zhì)保時(shí)間,雙卡雙待,上市時(shí)間,單價(jià),庫(kù)存量)
      3=file("D:\\test.txt").cursor@t()
      4=A2.append(A3)

      test.ctx 是組表文件,默認(rèn)采用列式存儲(chǔ)的,支持任意分段的并行計(jì)算,從而可以有效提升查詢(xún)速度。要注意在生成組表時(shí),數(shù)據(jù)需要預(yù)先排序并合理定義維字段。

      組表文件的大小大約為3312M,而將txt中的數(shù)據(jù)轉(zhuǎn)儲(chǔ)到組表中所需的時(shí)間為968s。

      undefined 

      與之對(duì)應(yīng),我們使用sqlloader將txt中的數(shù)據(jù)導(dǎo)入到oracle中,所需時(shí)間為18小時(shí)左右,并且相同字段及數(shù)據(jù)量的oracle表所占空間為6683M。

      undefined 

      可以看出,將txt數(shù)據(jù)分別導(dǎo)入組表文件和oracle表中的時(shí)間真的是相差很大,而且,將數(shù)據(jù)導(dǎo)入oracle后所占空間的大小與txt文件的大小所差無(wú)幾,相比之下,組表文件所占空間只有一半,這得益于組表文件的壓縮效果。后面我們還會(huì)進(jìn)一步討論分析與高性能相關(guān)的特性。

      查詢(xún)數(shù)據(jù)

      下面我們來(lái)對(duì)比一下用SQL查詢(xún)oracle表以及組表文件所需的時(shí)間,直接用效果說(shuō)話(huà):

      查詢(xún)指定字段:

      查詢(xún)組表:select ID,產(chǎn)品編號(hào),庫(kù)存量 from test.ctx limit 5000

      查詢(xún)oracle:select ID,產(chǎn)品編號(hào),庫(kù)存量 from myTestTable where rownum <= 5000

      查詢(xún)ID、產(chǎn)品編號(hào)以及庫(kù)存量:查詢(xún)組表用時(shí)1s;查詢(xún)oracle表用時(shí)33s;

      添加where查詢(xún)條件:

      查詢(xún)組表:select ID,產(chǎn)品編號(hào),庫(kù)存量 from test.ctx where 顏色=’土豪金’ limit 5000

      查詢(xún)oracle:select ID,產(chǎn)品編號(hào),庫(kù)存量 from myTestTable where 顏色=’土豪金’ and rownum <= 5000

      查詢(xún)表中產(chǎn)品顏色為土豪金的數(shù)據(jù):查詢(xún)組表用時(shí)1s;查詢(xún)oracle表用時(shí)58s;

      select ID,產(chǎn)品編號(hào),單價(jià),庫(kù)存量 from myTestTable/test.ctx where 顏色=’黑’ and 庫(kù)存量 > 500 and 單價(jià) > 2000

      查詢(xún)顏色為黑且?guī)齑媪看笥?00、單價(jià)大于2000的數(shù)據(jù):查詢(xún)組表用時(shí)92s;查詢(xún)oracle表用時(shí)2353s;

      此時(shí)我們還可以嘗試并行查詢(xún):

      select /*+ parallel(4) */ID,產(chǎn)品編號(hào),單價(jià),庫(kù)存量 from myTestTable/test.ctx where 顏色=’黑’ and 庫(kù)存量 > 500 and 單價(jià) > 2000

      查詢(xún)組表用時(shí)84s;查詢(xún)oracle表用時(shí)2105s;

       

      執(zhí)行以上查詢(xún)語(yǔ)句后我們可以發(fā)現(xiàn),查詢(xún)組表的速度要比直接查詢(xún)oracle表快很多。當(dāng)然,多維分析中很少用到明細(xì)查詢(xún),對(duì)明細(xì)查詢(xún)的性能要求也不高,我們更關(guān)注匯總統(tǒng)計(jì)的性能,也就是有GROUP BY的情況,下面來(lái)試一下。:

      查詢(xún)組表/oracle:select 顏色,max(庫(kù)存量) from test.ctx/myTestTable group by 顏色

      查詢(xún)產(chǎn)品每個(gè)顏色的最大庫(kù)存量:查詢(xún)組表用時(shí)12s;查詢(xún)oracle表用時(shí)297s;

      查詢(xún)組表/oracle:select 顏色,內(nèi)存,max(庫(kù)存量) from test.ctx/myTestTable group by 顏色,內(nèi)存

      查詢(xún)產(chǎn)品每個(gè)顏色中,各內(nèi)存的最大庫(kù)存量:查詢(xún)組表用時(shí)17s;查詢(xún)oracle表用時(shí)334s;

      查詢(xún)組表/oracle:select /*+ parallel(4) */顏色,內(nèi)存,max(庫(kù)存量) from test.ctx/myTestTable group by 顏色,內(nèi)存

      嘗試并行查詢(xún)產(chǎn)品每個(gè)顏色中,各內(nèi)存的最大庫(kù)存量:查詢(xún)組表用時(shí)13s;查詢(xún)oracle表用時(shí)308s;

      查詢(xún)組表:select 內(nèi)存,sum(庫(kù)存量) from test.ctx where 上市時(shí)間 between date('2018-01-01') and date('2018-12-31')  group by 內(nèi)存

      查詢(xún)oracle:select 內(nèi)存,sum(庫(kù)存量) from myTestTable where 上市時(shí)間 between to_date('2018-01-01',’yyyy-mm-dd’) and to_date('2018-12-31',’yyyy-mm-dd’)  group by 內(nèi)存

      查詢(xún)2018年上市的產(chǎn)品中各種內(nèi)存的總庫(kù)存量:查詢(xún)組表用時(shí)5s;查詢(xún)oracle表用時(shí)10s;

      查詢(xún)組表:select 內(nèi)存,min(機(jī)身重量),avg(單價(jià)) from test.ctx where 上市時(shí)間 between date('2018-01-01') and date('2018-12-31')  group by 內(nèi)存

      查詢(xún)oracle:select 內(nèi)存,min(機(jī)身重量),avg(單價(jià)) from myTestTable where 上市時(shí)間 between to_date('2018-01-01',’yyyy-mm-dd’) and to_date('2018-12-31',’yyyy-mm-dd’)  group by 內(nèi)存

      查詢(xún)2018年上市產(chǎn)品的最小機(jī)身重量和平均單價(jià):查詢(xún)組表用時(shí)6s;查詢(xún)oracle表用時(shí)11s;

      查詢(xún)組表:select 內(nèi)存,min(機(jī)身重量),avg(單價(jià)) from test.ctx where 上市時(shí)間 between date('2018-01-01') and date('2018-12-31') group by 內(nèi)存 having avg(單價(jià))>=1500

      查詢(xún)oracle:select 內(nèi)存,min(機(jī)身重量),avg(單價(jià)) from myTestTable where 上市時(shí)間 between to_date('2018-01-01',’yyyy-mm-dd’) and to_date('2018-12-31',’yyyy-mm-dd’)  group by 內(nèi)存 having avg(單價(jià))>=1500

      查詢(xún)2018年上市產(chǎn)品中,單價(jià)不小于1500的最小機(jī)身重量和平均單價(jià):查詢(xún)組表用時(shí)14s;查詢(xún)oracle表用時(shí)38s;

      毫無(wú)懸念,對(duì)于匯總統(tǒng)計(jì),查詢(xún)組表的速度也要顯著快于查詢(xún)oracle。

       

      根據(jù)上面對(duì)大數(shù)據(jù)量的組表以及數(shù)據(jù)庫(kù)的查詢(xún)速度比較,可以發(fā)現(xiàn)查詢(xún)條件越少,兩者之間的效率對(duì)比也就越明顯,查詢(xún)組表數(shù)據(jù)始終快于查詢(xún)數(shù)據(jù)庫(kù),這就清晰地體現(xiàn)除了組表高性能的特點(diǎn)。由此我們推斷,在多維分析頁(yè)面下,對(duì)組表進(jìn)行查詢(xún)要比對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢(xún)更加高效。

      下面我們就將組表與分析界面結(jié)合起來(lái)進(jìn)行查詢(xún)。

      與分析界面結(jié)合

      (1)在報(bào)表中添加集算器JDBC并連接數(shù)據(jù)源:

      undefined 

       

      (2)集算器raqsoftConfig.xml復(fù)制到報(bào)表WEB-INF的類(lèi)路徑下:

      將[集算器目錄](méi)\esProc\config下的raqsoftConfig.xml復(fù)制到[報(bào)表目錄](méi)\report\web\webapps\demo\WEB-INF\classes中;

       

      (3)將組表文件放到集算器尋址路徑路徑下:

      本例中,我們將使用組表文件test.ctx。

      undefined 

      undefined 

       

      (4)修改多維分析頁(yè)面

      打開(kāi)[報(bào)表目錄](méi)\report\web\webapps\demo\raqsoft\guide\jsp\olap.jsp,將jsp中的DataSource修改為(1)中設(shè)置的數(shù)據(jù)源名稱(chēng)“esproc”;依舊使用上述的示例,sql語(yǔ)句這里我們用“select 內(nèi)存,avg(單價(jià)) as 單價(jià)平均值 from test.ctx where 上市時(shí)間 between date('2018-01-01') and date('2018-12-31')  group by 內(nèi)存”;

      undefined 

      undefined 

       

      (5)訪(fǎng)問(wèn)頁(yè)面

      我們通過(guò)雙擊[報(bào)表目錄](méi)\report\bin下的startdemo.bat啟動(dòng)服務(wù)器,或者在報(bào)表IDE中點(diǎn)擊undefined啟動(dòng)Tomcat服務(wù)器。

      在瀏覽器地址欄輸入“http://localhost:6868/demo/raqsoft/guide/jsp/olap.jsp?sqlId=sqlId1”對(duì)頁(yè)面進(jìn)行訪(fǎng)問(wèn),這時(shí)頁(yè)面中就可以展現(xiàn)從集算器JDBC中所返回的數(shù)據(jù),并且可以在頁(yè)面中進(jìn)行拖拽等操作。

      undefined 

      當(dāng)然,這里還是要對(duì)比一下查詢(xún)組表文件與查詢(xún)oracle的時(shí)間:查詢(xún)組表文件用時(shí)7s,查詢(xún)oracle用時(shí)22s,組表明顯更勝一籌。

       

       

      將組表與多維分析界面進(jìn)行結(jié)合,從組表而不是從數(shù)據(jù)庫(kù)中取數(shù),用戶(hù)可以更方便的制作數(shù)據(jù)量大的報(bào)表,大大縮短了等待數(shù)據(jù)顯示的時(shí)間;對(duì)比昂貴的專(zhuān)業(yè)數(shù)據(jù)庫(kù)和相對(duì)封閉的 BI 自帶數(shù)據(jù)源,集算器可以提供更加經(jīng)濟(jì)、簡(jiǎn)便的解決方案,并能夠從各種異構(gòu)數(shù)據(jù)源采集數(shù)據(jù)生成組表文件以供使用。同時(shí)整個(gè)配置過(guò)程非常簡(jiǎn)單,這些都體現(xiàn)了這個(gè)套件的輕量級(jí)、高性能的特點(diǎn)。

      和普通數(shù)據(jù)庫(kù)方案相比,集算器列存的二進(jìn)制文件,也就是組表文件,能夠直接提升性能。在生成組表時(shí),指定了維字段,數(shù)據(jù)本身將按照維字段有序存放,這樣,常用的條件過(guò)濾計(jì)算不依賴(lài)索引也能保證高性能。另外,更加輕量的一點(diǎn)是,組表文件采用壓縮存儲(chǔ),顯著減少了所占用的硬盤(pán)空間,讀取也就更快了。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多