這篇文章給大家介紹vertica如何實現(xiàn)存儲,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供網(wǎng)站制作、網(wǎng)站建設(shè)服務(wù),網(wǎng)站設(shè)計,網(wǎng)站改版維護等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競爭對手中脫穎而出成都創(chuàng)新互聯(lián)公司。
JAVA 等通用語言缺乏結(jié)構(gòu)化計算類庫,即使最簡單的結(jié)構(gòu)化算法,比如查詢、排序、聚合,也要從零開始硬編碼。對于很常用的算法,比如分組匯總、關(guān)聯(lián)查詢,則要編寫大篇幅的代碼。對于復(fù)雜些的算法,甚至要設(shè)計多個類才能勉強實現(xiàn)。
只要多花時間,JAVA 總是可以實現(xiàn)算法的,但高耦合性的缺點卻無法避免。存儲過程本應(yīng)獨立于 JAVA 代碼,修改存儲過程本不該影響 JAVA 代碼。但 JAVA 開發(fā)的存儲過程會和其他 JAVA 代碼緊密耦合,只要修改存儲過程,就必然重新編譯打包整個項目,項目的維護成本必然升高。
如果使用集算器,實現(xiàn) vertica 存儲過程就會容易很多。
集算器具有豐富的結(jié)構(gòu)化類庫,無論查詢、排序、聚合還是分組匯總、關(guān)聯(lián)查詢,都可以用內(nèi)置函數(shù)直接實現(xiàn)。集算器也提供了針對結(jié)構(gòu)化數(shù)據(jù)的分支判斷、循環(huán)語句、動態(tài)語法,復(fù)雜業(yè)務(wù)邏輯也可輕松實現(xiàn)。集算器還提供了標準的 JDBC 接口,供 JAVA 代碼調(diào)用,實際的存儲過程則以腳本文件的形式存在,修改存儲過程不影響 JAVA 代碼。
例如:vertica 中 sales 表存儲銷售員的訂單信。
邏輯算法:對每一位銷售,找到他金額最大和最小的 3 筆訂單,分別打上 "top3" 和 "bottom3" 的標記,考慮到訂單數(shù)太少沒意義,特規(guī)定某銷售的訂單數(shù)小于 3 時,則不計算 top3,訂單數(shù)小于 6 時,則不計算 bottom3。計算結(jié)果應(yīng)當如下:
集算器代碼如下:
A | B | C | D | |
1 | =connect@l("verticaDB") | |||
2 | =A1.cursor@x("select * from sales order by sellerid,amount") | |||
3 | for A2;sellerid | /for each seller | ||
4 | if A3.len()>=3 | =A3.m(to(-1,-3)) | =C4.derive("top3":orderType) | |
5 | if A3.len()>=6 | =A3.m(to(3)) | =C5.derive("bottom3":orderType) | |
6 | =@|D4|D5 | /merge top+bottom for every seller | ||
7 | return B6 |
關(guān)于vertica如何實現(xiàn)存儲就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。