您好,登錄后才能下訂單哦!
這篇文章給大家介紹vertica如何實現存儲,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
JAVA 等通用語言缺乏結構化計算類庫,即使最簡單的結構化算法,比如查詢、排序、聚合,也要從零開始硬編碼。對于很常用的算法,比如分組匯總、關聯查詢,則要編寫大篇幅的代碼。對于復雜些的算法,甚至要設計多個類才能勉強實現。
只要多花時間,JAVA 總是可以實現算法的,但高耦合性的缺點卻無法避免。存儲過程本應獨立于 JAVA 代碼,修改存儲過程本不該影響 JAVA 代碼。但 JAVA 開發的存儲過程會和其他 JAVA 代碼緊密耦合,只要修改存儲過程,就必然重新編譯打包整個項目,項目的維護成本必然升高。
如果使用集算器,實現 vertica 存儲過程就會容易很多。
集算器具有豐富的結構化類庫,無論查詢、排序、聚合還是分組匯總、關聯查詢,都可以用內置函數直接實現。集算器也提供了針對結構化數據的分支判斷、循環語句、動態語法,復雜業務邏輯也可輕松實現。集算器還提供了標準的 JDBC 接口,供 JAVA 代碼調用,實際的存儲過程則以腳本文件的形式存在,修改存儲過程不影響 JAVA 代碼。
例如:vertica 中 sales 表存儲銷售員的訂單信。
邏輯算法:對每一位銷售,找到他金額最大和最小的 3 筆訂單,分別打上 "top3" 和 "bottom3" 的標記,考慮到訂單數太少沒意義,特規定某銷售的訂單數小于 3 時,則不計算 top3,訂單數小于 6 時,則不計算 bottom3。計算結果應當如下:
集算器代碼如下:
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 |
關于vertica如何實現存儲就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。