資料重新整理中的並行改進(一)
昨天按照計劃進行了系統升級,多多少少還是碰到了一些問題。
有一個問題不算緊急,但是也在計劃之中需要進行調優和改進。是關於資料的複製重新整理的使用。為了更加清楚的描述問題,自己畫了下面的一個簡單的示意圖來說明。
其實真實環境要遠遠比這個複雜,這是簡單說明問題點到為止即可。
這是一個資料字典資料型資料,也算是靜態資料,配置資料等的重新整理示意圖,資料的源頭只有一個,資料都在active的一個schema上,其他幾個類似的節點都在維護這樣一套類似的結構,但是因為節點都是分散式的,所以都分散在不同的機器上,資料的重新整理目前是採用物化檢視來做的。遠端的重新整理是透過db link+物化檢視來完成的。
對於下層應用來說,還是根據業務規則連線到不同的節點中。
大體的情況就是如此,在生產中進行資料重新整理的時候,如果進行並行複製,其實對於主節點還是有很大的壓力的。而且目前的重新整理情況也是一個序列的方式。
比如我們存在表a,b,c
則在不同的節點中進行重新整理的時候,是先重新整理a,在各個節點一次重新整理,然後重新整理b,然後繼續重新整理c,依次類推。在最後的時候,只需要切換對應的快照schema即可。即上圖中紅色和藍色的部分,最後把schema進行切換即可,對於應用來說是透明的,如果資料出現問題進行undo也是很輕鬆的事情。
所以在採用重新整理的時候,也是考慮了主節點中的負載和壓力,採用了序列的方式進行重新整理,但是一方面保證了壓力,但是重新整理時間就是一個比較明顯的問題了。時間會隨著節點的增多而進行指數級增長。
在儘可能不改動邏輯,少改動邏輯的情況進行的調研情況,得知這種資料的重新整理頻率還是不高的,可能幾周才會進行這樣的一次重新整理,而且在重新整理的過程中,對於應用app1來說優先順序是比較高的,app1中的重新整理完成之後,會有一些業務的預處理,對於app2,app3的資料重新整理速度就沒有很嚴格的要求了。慢一些還是可以接受的。
所以的改進思路就是分成兩部分來處理,兩條腿走路。對於app1優先重新整理,而且對於app1中的表進行並行切分。
比如裡面有15張表,就可以分成多個並行重新整理session來處理。一方面重新整理的都是不同的表,不會有之前熱點快的爭用的情況,而且這個過程完成了就對後續的處理優先順序就會大大降低。依賴性就大大降低了。
當然了這個過程還有很多的細節需要考慮,主要的一個思路就是對於近上千張靜態資料表進行快速的重新整理,有幾個要點需要考慮。
一個就是並行切分的把握,因為資料字典表的資料量相對來說不算很大,總體來說分割槽表還是很少存在的,所以進行並行切分的時候可能直接根據segment的情況就能夠得到一個大體的資料分佈情況了。
優先重新整理app1需要的節點之後,對於後續的節點可以還是保留原有的方式進行重新整理即可。
看起來思路還是比較簡單的,但是能夠使得方案落地還是需要做不少的工作,後續對切分的細節進行分享。
有一個問題不算緊急,但是也在計劃之中需要進行調優和改進。是關於資料的複製重新整理的使用。為了更加清楚的描述問題,自己畫了下面的一個簡單的示意圖來說明。
其實真實環境要遠遠比這個複雜,這是簡單說明問題點到為止即可。
這是一個資料字典資料型資料,也算是靜態資料,配置資料等的重新整理示意圖,資料的源頭只有一個,資料都在active的一個schema上,其他幾個類似的節點都在維護這樣一套類似的結構,但是因為節點都是分散式的,所以都分散在不同的機器上,資料的重新整理目前是採用物化檢視來做的。遠端的重新整理是透過db link+物化檢視來完成的。
對於下層應用來說,還是根據業務規則連線到不同的節點中。
大體的情況就是如此,在生產中進行資料重新整理的時候,如果進行並行複製,其實對於主節點還是有很大的壓力的。而且目前的重新整理情況也是一個序列的方式。
比如我們存在表a,b,c
則在不同的節點中進行重新整理的時候,是先重新整理a,在各個節點一次重新整理,然後重新整理b,然後繼續重新整理c,依次類推。在最後的時候,只需要切換對應的快照schema即可。即上圖中紅色和藍色的部分,最後把schema進行切換即可,對於應用來說是透明的,如果資料出現問題進行undo也是很輕鬆的事情。
所以在採用重新整理的時候,也是考慮了主節點中的負載和壓力,採用了序列的方式進行重新整理,但是一方面保證了壓力,但是重新整理時間就是一個比較明顯的問題了。時間會隨著節點的增多而進行指數級增長。
在儘可能不改動邏輯,少改動邏輯的情況進行的調研情況,得知這種資料的重新整理頻率還是不高的,可能幾周才會進行這樣的一次重新整理,而且在重新整理的過程中,對於應用app1來說優先順序是比較高的,app1中的重新整理完成之後,會有一些業務的預處理,對於app2,app3的資料重新整理速度就沒有很嚴格的要求了。慢一些還是可以接受的。
所以的改進思路就是分成兩部分來處理,兩條腿走路。對於app1優先重新整理,而且對於app1中的表進行並行切分。
比如裡面有15張表,就可以分成多個並行重新整理session來處理。一方面重新整理的都是不同的表,不會有之前熱點快的爭用的情況,而且這個過程完成了就對後續的處理優先順序就會大大降低。依賴性就大大降低了。
當然了這個過程還有很多的細節需要考慮,主要的一個思路就是對於近上千張靜態資料表進行快速的重新整理,有幾個要點需要考慮。
一個就是並行切分的把握,因為資料字典表的資料量相對來說不算很大,總體來說分割槽表還是很少存在的,所以進行並行切分的時候可能直接根據segment的情況就能夠得到一個大體的資料分佈情況了。
優先重新整理app1需要的節點之後,對於後續的節點可以還是保留原有的方式進行重新整理即可。
看起來思路還是比較簡單的,但是能夠使得方案落地還是需要做不少的工作,後續對切分的細節進行分享。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-1704559/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料重新整理中的並行改進(二)並行
- 資料重新整理中的並行改進(三)並行
- [譯] 在 Python 中,如何運用 Dask 資料進行並行資料分析Python並行
- js操作 新增刪除table行,並進行重新整理JS
- 記一次資料同步需求的改進(一)
- 記一次資料同步需求的改進(三)
- 記一次資料同步需求的改進(二)
- 【譯】.NET 7 中的效能改進(一)
- 用R讀取PDF並進行資料探勘
- Oracle 中的並行系列(一)Oracle並行
- 建立一個加密表空間並對錶內資料進行加密的示例加密
- elmentplus中刪除el-treen 資料時,樹的資料改變了,但是樹不重新整理
- php 建立頁面表單並進行增刪改查PHP
- 向資料庫中插入一條新的資料,並返回新增資料的ID資料庫
- MySQL資料清理的需求分析和改進MySql
- Spring 通過Spring容器獲得資料來源物件並改進Spring物件
- 大資料正在改變每一個行業大資料行業
- 【python】爬取疫情資料並進行視覺化Python視覺化
- Spotify如何改進資料科學家的資料發現?資料科學
- mogoose 建立資料庫並增刪改查Go資料庫
- 如何使用ISqlSugarClient進行資料訪問,並實現了統一的批次依賴注入SqlSugarclient依賴注入
- LLM並行訓練3-資料並行並行
- Oracle資料庫中一致讀行為的改變Oracle資料庫
- Swift 4.1 中的 Codable 改進Swift
- 一個資料倉儲資料重新整理的實現機制(一)
- 如何用 Scrapy 爬取網站資料並在 Easysearch 中進行儲存檢索分析網站
- 使用 refreshNuxtData 重新整理 Nuxt應用 中的資料UX
- 聚焦“智改數轉” ,三路並進推動企業資料安全建設
- dbms_mview 並行重新整理 refresh parallelView並行Parallel
- Oracle中的並行Oracle並行
- 並行智慧 | 社交媒體資料在品牌資產管理中的力量並行
- Vue 中利用 eventBus 進行資料通訊的問題Vue
- tomcat+mysql+eclipse 開發的第一個例子:對資料庫進行增刪查改TomcatMySqlEclipse資料庫
- 動態改變Drawable中我們自定義背景的顏色並設定顏色以16進位制進行設定
- 用一行Python進行資料收集探索Python
- 用 Python 進行資料分析 pandas (一)Python
- Netty整合SpringBoot並使用Protobuf進行資料傳輸NettySpring Boot
- vuex配sessionStorage進行自動儲存,解決重新整理資料丟失的問題。VueSession