溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

vertica如何實現(xiàn)存儲

發(fā)布時間:2021-11-24 17:11:12 來源:億速云 閱讀:158 作者:柒染 欄目:互聯(lián)網(wǎng)科技

這篇文章給大家介紹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 存儲過程就會容易很多。

vertica如何實現(xiàn)存儲

集算器具有豐富的結(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 表存儲銷售員的訂單信。

vertica如何實現(xiàn)存儲

邏輯算法:對每一位銷售,找到他金額最大和最小的 3 筆訂單,分別打上 "top3" 和 "bottom3" 的標(biāo)記,考慮到訂單數(shù)太少沒意義,特規(guī)定某銷售的訂單數(shù)小于 3 時,則不計算 top3,訂單數(shù)小于 6 時,則不計算 bottom3。計算結(jié)果應(yīng)當(dāng)如下:

vertica如何實現(xiàn)存儲

集算器代碼如下:


ABCD
1=connect@l("verticaDB")


2=A1.cursor@x("select   * from sales  order by   sellerid,amount")
3for   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
7return   B6



關(guān)于vertica如何實現(xiàn)存儲就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(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)容。

AI