海量數據遷移,亞馬遜云科技云數據庫服務為大庫治理提供新思路

1.背景

?目前,文檔型數據庫由于靈活的schema和接近關系型數據庫的訪問特點,被廣泛應用,尤其是游戲、互聯網金融等行業的客戶使用MongoDB構建了大量應用程序,比如游戲客戶用來處理玩家的屬性信息;又如股票APP用來存儲與時間線相關的行情數據。隨著時間的推移和業務的發展,MongoDB庫越來越大,大庫治理是必須面臨的問題。

?一般來講,大庫治理有如下幾種方案。一是做冷熱數據隔離,將數據根據使用頻率分為熱、溫、冷、凍級別,超過一定時間的冷數據,轉儲到另一個冷庫或低成本存儲的數據庫;熱庫只保留近期訪問頻繁的數據;二是做垂直拆分,比如大系統有多個集合,按照模塊進行垂直劃分,把不同模塊對應的集合拆分到不同庫,實現數據量和訪問量的垂直分離;三是做水平拆分,比如選擇userid的哈希值,將大的集合水平拆分到多個庫,實現整體存儲和計算能力的擴展。第四,也有部分業務,它的歷史數據的使命完成,走完生命周期,可以直接刪除。這4種方案,各有利弊,且需要根據實際業務場景進行選型。而很多場景下,客戶會選擇水平sharding,主要原因如下:

  • 很多業務需要經常查詢歷史數據,水平sharding不需要刪除或分離歷史數據;

  • 長遠來看,水平sharding的擴展性更好,可以支撐更大的業務規模。

?DocumentDB Elastic Cluster是亞馬遜云科技提供的一個很好的支持水平sharding的云數據庫服務。本文,主要針對客戶從MongoDB副本集架構遷移到DocumentDB Elastic Cluster的過程中,如何進行海量數據遷移的問題,進行研究,并提供最佳實踐。

2.可選遷移方案

?眾所周知,含有大數據量的數據庫的遷移,是比較有挑戰性的問題。數據庫在不斷的讀寫,不僅需要在目標庫完成當前全量數據的初始化,也需要把初始化期間的數據變化同步到新庫。以下是遷移方案示意圖:

?MongoDB記錄文檔變化的方式有兩種:oplog和change stream。由于,oplog或change stream的存儲空間是有限的,因此全量初始化階段的遷移速度是必須要考慮的因素。另外,增量同步階段的速度也必須大于源數據庫的變化速度,這樣才能實現新舊數據庫的數據一致。這兩個階段,我們都需要依賴穩定、高效的工具來完成。尤其在大型數據庫的遷移時,甚至要配合一定的數據遷移策略(比如并行、壓縮;冷、熱數據分別遷移;不同集合分別遷移等)。

亞馬遜云科技有3種可行的遷移方案:

  • AWS DMS全量+增量遷移

  • Mongoshake全量+增量遷移

  • Mongodump/mongorestore+DMS增量遷

方案1:AWS DMS全量+增量

?DMS是亞馬遜云科技的一項云服務,允許遷移關系數據庫、MongoDB數據庫和其他類型的數據存儲。可以使用DMS執行一次性遷移,或復制源庫正在進行的更改以保持源和目標同步。DMS在全量遷移階段提供了Auto segmentation和Range segmentation的方式來并行加速遷移;在CDC增量階段,3.5 bet版也支持并發方式寫入DocumentDB。

方案2:Mongoshake全量+增量

?開源的Mongoshake,也支持遷移寫入DocumentDB。由于它屬于開源產品,優勢是社區活躍,遇到問題可以定制開發解決,遷移速度較快;劣勢是遇到問題可以獲得的技術支持力度較低,用戶需要自己定位或求助社區。

方案3:Mongodump/mongorestore+DMS增量

?mongodump是MongoDB官方提供的備份工具,它可以從MongoDB數據庫讀取數據,并生成BSON文件,然后通過mongorestore工具恢復到MongoDB。它也同樣支持從DocuemntDB備份數據。而mongodb-database-tools的6.1版本也支持恢復到DocumentDB Elastic Cluster。這種方案的優勢是穩定快速,缺點是增量同步能力不足。但是,可以借助DMS的增量同步能力。重點是需要選擇好增量同步的起始位點,防止數據丟失。

以上三種方案,各有優缺點,如下表。

使用DMS托管服務,用戶配置遷移任務最方便,整個遷移過程,日志清晰、速度直觀,可觀測性較好。Mongoshake在增量寫入DocumentDB環節速度略慢,在TPS較高的場景不適用;而mongodump和mongorestore在MongoDB大數據庫遷移場景上,速度比DMS full load更快。大庫遷移是否成功的一個非常重要因素是遷移速度。

原標題:大型MongoDB數據庫遷移到DocumentDB Elastic Cluster的最佳實踐

原鏈接:https://aws.amazon.com/cn/blogs/china/best-practices-for-migrating-large-mongodb-databases-to-documentdb-elastic-cluster/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/37987.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37987.shtml
英文地址,請注明出處:http://en.pswp.cn/news/37987.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Stable Diffusion - 幻想 (Fantasy) 風格與糖果世界 (Candy Land) 人物提示詞配置

歡迎關注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/132212193 圖像由 DreamShaper8 模型生成,融合糖果世界。 幻想 (Fantasy) 風格圖像是一種以想象力為主導的藝術形式,創造了…

27.Netty源碼之FastThreadLocal

highlight: arduino-light FastThreadLocal FastThreadLocal 的實現與 ThreadLocal 非常類似,Netty 為 FastThreadLocal 量身打造了 FastThreadLocalThread 和 InternalThreadLocalMap 兩個重要的類。下面我們看下這兩個類是如何實現的。 FastThreadLocalThread 是對…

【論文閱讀】NoDoze:使用自動來源分類對抗威脅警報疲勞(NDSS-2019)

NODOZE: Combatting Threat Alert Fatigue with Automated Provenance Triage 伊利諾伊大學芝加哥分校 Hassan W U, Guo S, Li D, et al. Nodoze: Combatting threat alert fatigue with automated provenance triage[C]//network and distributed systems security symposium.…

uniapp安卓ios打包上線注意事項

1、安卓包注意事項 隱私政策彈框提示 登錄頁面隱私政策默認不勾選隱私政策同意前不能獲取用戶權限APP啟動時,在用戶授權同意隱私政策前,APP及SDK不可以提前收集和使用IME1、OAID、IMS1、MAC、應用列表等信息 ios包注意事項 需要有注銷賬號的功能 3、安…

前后端分離------后端創建筆記(05)用戶列表查詢接口(上)

本文章轉載于【SpringBootVue】全網最簡單但實用的前后端分離項目實戰筆記 - 前端_大菜007的博客-CSDN博客 僅用于學習和討論,如有侵權請聯系 源碼:https://gitee.com/green_vegetables/x-admin-project.git 素材:https://pan.baidu.com/s/…

vue3中簡單快速的做個表單輸入框驗證

<el-form ref"formRef" :model"processingProgressForm"><el-form-item label"服務商名稱:" :label-width"120" prop"rejectRemarks" :rules"[{ required: true, message: 服務商名稱不能為空 }]">&l…

通過網關訪問微服務,一次正常,一次不正常 (nacos配置的永久實例卻未啟動導致)

微服務直接訪問沒問題&#xff0c;通過網關訪問&#xff0c;就一次正常訪問&#xff0c;一次401錯誤&#xff0c;交替正常和出錯 負載均衡試了 路由配置檢查了 最后發現nacos下竟然有2個order服務實例&#xff0c;我明明只開啟了一個呀 原來之前的8080端口微服務還殘留&…

基于架構的軟件開發方法

基于架構的軟件開發方法 基于架構的軟件開發方法是由架構驅動的&#xff0c;即指由構成體系結構的商業、質量和功能需求的組合驅動的。使用ABSD 方法&#xff0c;設計活動可以從項目總體功能框架明確就開始&#xff0c;這意味著需求抽取和分析還沒有完成(甚至遠遠沒有完成)&am…

純C#使用Visionpro工具2 操作斑點工具

結果圖 通過斑點工具中非圓性找取圓特征 代碼 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.For…

ApacheCon - 云原生大數據上的 Apache 項目實踐

Apache 軟件基金會的官方全球系列大會 CommunityOverCode Asia&#xff08;原 ApacheCon Asia&#xff09;首次中國線下峰會將于 2023 年 8 月 18-20 日在北京麗亭華苑酒店舉辦&#xff0c;大會含 17 個論壇方向、上百個前沿議題。 字節跳動云原生計算團隊在此次 CommunityOve…

OpenSSL 遠程升級到 3.2.1

OpenSSL 遠程升級到 3.2.1 文章目錄 OpenSSL 遠程升級到 3.2.1背景升級 OpenSSL1. 查看 OpenSSL版本2. 下載最新穩定版本 OpenSSL3. 解壓縮&#xff0c;安裝4. 配置 背景 最近的護網行動&#xff0c;被查出來了好幾個關于OpenSSH的漏洞。需要升級OpenSSH&#xff0c;升級OpenS…

冠達管理:價格破發是什么意思啊?

價格破發是股票商場中一個比較常見的術語&#xff0c;也是常常讓出資者感到困惑的現象之一。價格破發是指新股發行后&#xff0c;由于各種原因&#xff0c;股票價格低于發行價的現象。那么&#xff0c;價格破發的原因是什么呢&#xff1f;價格破發與出資者有哪些聯系呢&#xf…

C和指針(一)

C和指針&#xff08;一&#xff09; 預處理指令main 函數常量及變量整型字面值指針&#xff1a;基本聲明&#xff1a;隱式聲明&#xff1a;常量&#xff1a; 預處理指令 預處理器用庫函數頭文件的內容替換掉相對應的#include指令語句。 使用stdio.h頭文件可以使我們訪問標準I/…

企業直播MR虛擬直播(MR混合現實直播技術)視頻介紹

到底什么是企業直播MR虛擬直播&#xff08;MR混合現實直播技術&#xff09;&#xff1f; 企業直播MR虛擬直播新玩法&#xff08;MR混合現實直播技術&#xff09; 我的文章推薦&#xff1a; [視頻圖文] 線上研討會是什么&#xff0c;企業對內對外培訓可以用線上研討會嗎&#x…

24屆近5年南京工業大學自動化考研院校分析

今天給大家帶來的是南京工業大學控制考研分析 滿滿干貨&#xff5e;還不快快點贊收藏 一、南京工業大學 學校簡介 南京工業大學&#xff08;Nanjing Tech University&#xff09;&#xff0c;簡稱“南工”&#xff0c;位于江蘇省南京市&#xff0c;由國家國防科技工業局、住…

2023年之我拿起“java“

持續更新中………… 文章目錄 javajava基礎 了解 j a v a 的語法&#xff0c;從 H e l l o W o r l d 開始 \color{red}{了解java的語法&#xff0c;從HelloWorld開始} 了解java的語法&#xff0c;從HelloWorld開始 j a v a 語言的注釋 \color{red}{java語言的注釋} java語言的…

Vue3.2+TS的defineExpose的應用

defineExpose通俗來講&#xff0c;其實就是講子組件的方法或者數據&#xff0c;暴露給父組件進行使用&#xff0c;這樣對組件的封裝使用&#xff0c;有很大的幫助&#xff0c;那么defineExpose應該如何使用&#xff0c;下面我來用一些實際的代碼&#xff0c;帶大家快速學會defi…

VSCode 報錯 grep: /proc/version: 權限不夠

部分用戶在Linux上運行VSCode提示grep: /proc/version: 權限不夠 grep: /proc/version: 權限不夠 You are trying to start Visual Studio Code as a super user which isn’t recommended. If this was intended, please add the argument --no-sandbox and specify an alter…

GPT帶我學-設計模式-命令模式

1 你知道設計模式的命令模式嗎 是的&#xff0c;我知道設計模式中的命令模式。命令模式是一種行為型設計模式&#xff0c;它將請求封裝成一個對象&#xff0c;從而允許使用不同的請求、隊列或日志來參數化其他對象。命令模式還支持撤銷操作&#xff0c;并且可以提供事務的實現…