您好,登錄后才能下訂單哦!
這篇文章給大家介紹vertica如何實現(xiàn)存儲,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
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)。集算器還提供了標(biāo)準(zhǔn)的 JDBC 接口,供 JAVA 代碼調(diào)用,實際的存儲過程則以腳本文件的形式存在,修改存儲過程不影響 JAVA 代碼。
例如:vertica 中 sales 表存儲銷售員的訂單信。
邏輯算法:對每一位銷售,找到他金額最大和最小的 3 筆訂單,分別打上 "top3" 和 "bottom3" 的標(biāo)記,考慮到訂單數(shù)太少沒意義,特規(guī)定某銷售的訂單數(shù)小于 3 時,則不計算 top3,訂單數(shù)小于 6 時,則不計算 bottom3。計算結(jié)果應(yīng)當(dā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é)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。