日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

clickhouse的ReplacingMergeTree引擎实战

發布時間:2024/7/23 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 clickhouse的ReplacingMergeTree引擎实战 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習ReplacingMergeTree引擎,首先你得了解clickhouse的MergeTree引擎,因為ReplacingMergeTree引擎是MergeTree引擎的一個擴展版引擎,他擁有和MergeTree一樣的功能,同時新增了一個刪除相同主鍵數據的功能。
我們知道,clickhouse的MergeTree引擎,是clickhouse眾多引擎中,號稱性能最好的一個引擎,但他只能按照分區刪除數據,所以有些場景很難滿足,或者說比較麻煩,不優雅,舉個實際的例子:
比如有個系統,他的數據不是實時的,比如今天的數據,明天看會比今天多,后天看會比明天多,但你需要在你的系統中定時同步他的數據到clickhouse,
這種情況用MergeTree可以勉強實現,那就是把每天相同主鍵的數據都保存一條,查詢的時候,只取最新的一條。但這個需要寫sql解決,而且一旦查詢復雜,設計到數據合并等,sql就會變的很復雜,查詢效率也會降低,而且每天的數據都會重復保存,數據重復太多,量太大。
所以針對這種情況,我們可以考慮用clickhouse的ReplacingMergeTree引擎,這個引擎自動幫你篩選出來最新的一條數據,并刪掉之前重復的數據。類似于mongo的updateOne,先增后刪。

建表:

我們新建一個表replacing_test,用ReplacingMergeTree引擎,date作為分區鍵,id和name作為聯合主鍵,point可以理解為版本號。
value就是你實際業務要的值,我們用數字類型舉例。

create table replacing_test (date Date, id UInt8, name String, value UInt16, point DateTime) ENGINE= ReplacingMergeTree(date, (id, name), 8192,point);

這個表,相同id-name的數據,最終只會留下一條,具體留下哪一條,是由不同的point決定的。

插入測試數據

看下面的代碼,我們循環插入9*9=81條數據,聯合主鍵只有id在變,name暫時只是字符串b

public static void main(String[] args) throws SQLException {for (int i = 1;i<10;i++){for (int j = 1;j<10;j++) {int v = j+i+100;String sql = "insert into replacing_test values ('2019-12-16', "+j+", 'b',"+v+", " + System.currentTimeMillis()/1000 + ");";System.out.println(sql+"_i="+i+"_j="+j);executeSql(sql);}}}private static void executeSql(String sql) throws SQLException {ClickHouseProperties properties = new ClickHouseProperties();ClickHouseDataSource dataSource = new ClickHouseDataSource("jdbc:clickhouse://clickhouse的ip:8123/default", properties);ClickHouseConnection connection = dataSource.getConnection();ClickHouseStatement statement = connection.createStatement();boolean execute = statement.execute(sql);}

結果

我們看到,最終數據庫只有11條數據,說明大部分相同主鍵的數據都被刪除了,但還是有兩條數據是重復的,分別是id為8和9的。
這個就是官網所說的,他的這個刪除重復數據,并不是一插入就刪的,而且在Merge的時候才會刪,原話是:
數據的去重只會在合并的過程中出現。合并會在未知的時間在后臺進行,因此你無法預先作出計劃。
所以說,這個引擎是一個類似于最終一致性的機制,估計是為了性能,把刪除的邏輯做成了異步。

解決重復:

其實這種也是可以解決的,如果不是很在意性能的話,可以手動執行一個sql去觸發他的Merge就好了,sql如下:

optimize table replacing_test;

執行完再看結果,這個就對了。每個id-name為主鍵的數據只有最后一條。

總結

以上是生活随笔為你收集整理的clickhouse的ReplacingMergeTree引擎实战的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人日皮视频 | 成长快手短视频在线观看 | 丝瓜av| 久久精品免费看 | 亚洲三级电影网站 | 日韩精品人妻无码一本 | 中文字幕av久久爽 | 欧美国产激情 | 日本一区二区在线播放 | 波多野结衣潜藏淫欲 | 国产乱码在线 | 亚洲精品国产乱伦 | 欧美理论在线 | 国产污片在线观看 | 无码精品一区二区三区在线 | 亚洲av无码一区二区乱子伦 | 久久久久99精品成人片毛片 | 国产精品视频专区 | 午夜国产一级 | 亚洲激情五月 | 国产亚洲一区二区三区四区 | 久久香蕉网站 | 人妻少妇精品视频一区二区三区 | av导航福利 | 精品国产av色一区二区深夜久久 | xxxx18日本| 久久发布国产伦子伦精品 | 亚洲精品一区二区三区中文字幕 | 看免费的毛片 | 国产手机看片 | 亚洲熟女一区二区三区 | 色网在线看 | 秋霞午夜鲁丝一区二区 | 99精品久久久久久中文字幕 | 成人在线免费播放 | 成人在线短视频 | 国产视频麻豆 | 日韩在线精品视频一区二区涩爱 | 日韩毛片在线免费观看 | 久久精品综合视频 | 久久五月激情 | 欧美一级片一区二区 | 亚洲男人天堂2019 | 成人亚洲一区二区 | 尤物视频官网 | 一级成人毛片 | 亚洲av中文无码乱人伦在线观看 | 搡老熟女国产 | 国产一区二区三区在线观看视频 | 一区二区视 | www天堂在线 | 亚洲精品国产精品乱码不卡 | 日韩深夜视频 | 中文字幕在线视频免费播放 | 日本黄色网络 | 台湾swag在线播放 | 中文字幕无码精品亚洲资源网久久 | 无码人妻少妇伦在线电影 | 午夜影院入口 | 向日葵视频在线播放 | 邪恶久久 | 又色又爽又黄gif动态图 | 国产黄色一级片视频 | 天天躁日日躁狠狠躁 | 天天色天天色天天色 | 亚洲aⅴ乱码精品成人区 | 中文视频在线观看 | 超碰免费公开在线 | 欧美乱妇高清无乱码 | 又粗又猛又爽又黄的视频 | 日韩视频在线视频 | 成人听书哪个软件好 | 亚洲永久免费精品 | 欧美日韩在线免费视频 | 免看一级a毛片一片成人不卡 | 国产喷水在线 | 97福利| 日韩精品一区二区三区免费视频 | 成人免费自拍视频 | 女女调教被c哭捆绑喷水百合 | 少妇av网| 久久亚洲中文字幕无码 | 91一区二区视频 | 91成人在线观看喷潮蘑菇 | 草草影院在线播放 | 51精产品一区一区三区 | 日本a∨视频| 一本在线 | 亚洲图色av| av大帝在线观看 | 91爱爱.com | 爱爱免费网站 | 熟女人妻aⅴ一区二区三区60路 | 中文字幕视频免费 | 亚洲av少妇一区二区在线观看 | 怡红院精品视频 | 夜夜操操操 | 黄色大全在线观看 | 久久99精品久久久久久噜噜 |