精品秘无码一区二区三区老师-精品秘一区二三区免费雷安-精品蜜桃秘一区二区三区-精品蜜桃秘一区二区三区粉嫩-精品蜜桃一区二区三区-精品蜜臀国产aⅴ一区二区三区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

整理常見的千萬級數(shù)據(jù)分表的遷移方案

admin
2024年12月28日 20:59 本文熱度 235

    在互聯(lián)網(wǎng)業(yè)務(wù)中我們會遇到千萬級別數(shù)據(jù)量的表需要拆分成多表存儲,或者底層的數(shù)據(jù)存儲介質(zhì)的變更等原因都需要做數(shù)據(jù)的遷移,今天我們來聊聊數(shù)據(jù)的遷移方案。

1、數(shù)據(jù)的遷移策略

    假設(shè)現(xiàn)在又一張千萬級別的訂單明細表,我們需要拆分成多張子表存儲,那么我們按照什么規(guī)則來將訂單的明細放入子表中呢?

(1)哈希取模方式

    訂單明細中可以選擇訂單id作為key進行哈希取模來確定數(shù)據(jù)應(yīng)該存儲在哪個子表中,如下所示:

    在具體選擇哪個字段為key的時候,我們能需要根據(jù)實際的業(yè)務(wù)中哪個字段的查詢最為頻繁,目的是盡量減少跨表查詢。常見的key可以選擇如訂單id、用戶id等等字段,用這些字段作為分表的key,可以避免跨表查詢的問題。

(2)基于范圍分表

    首先需要確定一個合適的范圍來進行數(shù)據(jù)遷移,常見的方案又基于時間范圍或基于id范圍進行分表遷移。

    基于時間分表遷移是根據(jù)時間范圍(如同一年的數(shù)據(jù)放在一個表)將數(shù)據(jù)劃分出來,如下所示:

    基于id范圍進行數(shù)據(jù)遷移的方案是維護一張id訪問表,然后將指定的id范圍放入某張表中,如下所示:

    具體要用哪種遷移數(shù)據(jù)的策略要根據(jù)具體的業(yè)務(wù)場景,主要是基于性能、可維護性等方面考慮,最后再確定遷移的策略。

2、數(shù)據(jù)的遷移方案

2.1 停機遷移

    停機遷移是一種直接且粗暴的方法,停機遷移會影響用戶的正常訪問,所以通常會提前給用戶一個友好的通知,如下是停機遷移的圖:

    為了降低遷移過程中帶來的影響,一般都是選在凌晨進行數(shù)據(jù)的遷移,這樣盡量將風(fēng)險降到最小。許多游戲公司的服務(wù)器升級,游戲分區(qū)與合區(qū),都可能會采用類似的方案。

2.2 雙寫策略

    雙寫策略是繼續(xù)向老表寫入數(shù)據(jù),同時再根據(jù)分表策略把數(shù)據(jù)寫入到新的分表中,并記錄開始同步新表數(shù)據(jù)的時間,如下圖所示:

    為了保證數(shù)據(jù)雙寫一致性,我們需要使用定時任務(wù)對新舊表中的數(shù)據(jù)進行對比,確保數(shù)據(jù)寫入無錯誤。經(jīng)過一段時間的雙寫之后,如果沒有任何的問題,基于最早同步的時間點把原始表之前的數(shù)據(jù)遷移到新表。

2.3 MQ+Redis實現(xiàn)數(shù)據(jù)的遷移

    使用MQ+Redis做數(shù)據(jù)遷移是一種比較平滑遷移方案,方案的流程圖如下所示:

(1)制定遷移方案

?

    對于千萬級別的數(shù)據(jù)量遷移,首先根據(jù)id范圍劃分的策略,如每一萬個數(shù)據(jù)劃分成一組,然后對遷移的原始表和目標(biāo)都使用Redis的bitmap記錄每條數(shù)據(jù)的遷移情況,數(shù)據(jù)分成多少組,就使用多個Redis的key,key的命名含義如下:

redis_source_key:表示遷移表中Redis的key

source_tb_s1e10:表示遷移表中開始的id從1開始,結(jié)束的id是10000,這樣就表示id在1-10000范圍的數(shù)據(jù)。

redis_target_key:表示目標(biāo)表的Redis的key

target_tb_s1e10表示目標(biāo)表中開始的id從1開始,結(jié)束的id是10000,這樣表示id在1-10000范圍的數(shù)據(jù)在目標(biāo)表中的保存情況(主要是記錄是否保存到目標(biāo)表)

    同時在Redis中也需要記錄每個分組(如1-10000)中本次遷移的開始時間,使用key單獨記錄(如source_tb_s1e10_startTime);記錄每個分組中遷移的狀態(tài)(如遷移完成、正在遷移),使用key單獨記錄(如source_tb_s1e10_status)。

    記錄分組開始的時間和分組的遷移狀態(tài)的目的是為了定時任務(wù)做數(shù)據(jù)的補償。

(2)執(zhí)行遷移方案

    執(zhí)行遷移方案就是將源表中的數(shù)據(jù)分組后使用MQ的方式發(fā)送到消息隊列中,然后在Redis的bitmap中記錄每條數(shù)據(jù)的遷移情況,如下所示:

對應(yīng)的bit位上為1就表示數(shù)據(jù)已經(jīng)發(fā)送MQ中等待消費。

    在消費端來消費隊列中的消息,然后按照遷移數(shù)據(jù)的策略將數(shù)據(jù)落目標(biāo)表中保存下來,保存成功之后在Redis的目標(biāo)key中并記錄消費情況,如下所示:

對應(yīng)的bit位上為1就表示數(shù)據(jù)已經(jīng)消費成功。

(3)數(shù)據(jù)補償

    為了保存數(shù)據(jù)遷移中不被遺漏,我們可以采用定時做補償機制,原理是通過掃描Redis中分組遷移狀態(tài)是key(如source_tb_s1e10_status)是成功狀態(tài),如下所示:

    然后把遷移狀態(tài)是成功為key的生產(chǎn)端和消費端的bitmap做異或處理,將異或結(jié)果為1的數(shù)據(jù)拿出來,如下所示:

    通過比對發(fā)現(xiàn)bit位的3和4位置上數(shù)據(jù)不一致(也就是生產(chǎn)端生成成功,但是消費端消費失敗),那么根據(jù)這個分組的開始遷移的時間與當(dāng)前的時間做比對,如過大于設(shè)置的時間(如1小時),那么我們就需要手動的補償數(shù)據(jù)。

總結(jié):

(1)數(shù)據(jù)的遷移策略有哈希取模、基于時間、基于id范圍等常見的方案。

(2)常見的數(shù)據(jù)遷移的方案有停機遷移、雙寫遷移以及MQ+Redis方案遷移。


閱讀原文:原文鏈接


該文章在 2024/12/30 15:23:24 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 久久99热在线观看7 久久99热这里只频精品6 | 久久久久久久综合色一本 | 在线小香蕉精品 | 国产亚洲成av人片在线观看 | 国产亚洲精品久久AV | 三级片网站日本视频 | 亚洲精品午夜久久亚洲精品免费网址 | 久久久精品国产sm调教网站 | 亚洲欧美日韩精品综合网 | 亚洲欧美国产视频 | 成年网站免费观看精品少妇人妻av一区二区三区 | 国产精品久久久久9999高清 | 国产自在现偷国产精品一区二区 | 国产农村一国产农村无码毛片 | 韩国精品一区二区无码视频 | 精品日产卡一卡二卡麻豆 | 国产爆乳无码视频在线观 | 丰满少妇大力进入av亚洲 | 极品美女aⅴ在线观看 | 9I免费网站无码 | 亚洲av日韩av永久无码下载 | 乱伦高清综合影视 | 国产麻豆老师在线观看 | 成人无码α片在线观看不卡 | 国产精品高潮呻吟爱久久AV无码 | 国产精品久久国产精品99 gif | 最新国产在线播放2025 | 一本一道久久综合狠狠老 | 免费看国产曰批40分钟 | 亚洲精品国产第一区二区尤物 | 精品少妇一区二区三区免费观 | 国产精品视频一区二区三区 | 女人让男人桶爽30分钟 | 中日av乱码一区二区三区乱码 | 777精品出轨人妻国产 | 国产山东熟女48嗷嗷叫 | 久久AV无码乱码A片无码蜜桃 | 国产成人免费视频精品一区二区 | 国产精品久久久久久52avav | 欧美日韩亚洲国产综合乱 | 日本高清视频一区二区 |