java基礎(chǔ)教程欄目介紹萬億級數(shù)據(jù)應(yīng)該遷移的方法。
背景
在星爺?shù)摹洞笤捨饔巍分杏幸痪浞浅3雒呐_(tái)詞:“曾經(jīng)有一份真摯的感情擺在我的面前我沒有珍惜,等我失去的時(shí)候才追悔莫及,人間最痛苦的事莫過于此,如果上天能給我一次再來一次的機(jī)會(huì),我會(huì)對哪個(gè)女孩說三個(gè)字:我愛你,如果非要在這份愛上加一個(gè)期限,我希望是一萬年!”在我們開發(fā)人員的眼中,這個(gè)感情就和我們數(shù)據(jù)庫中的數(shù)據(jù)一樣,我們多希望他一萬年都不改變,但是往往事與愿違,隨著公司的不斷發(fā)展,業(yè)務(wù)的不斷變更,我們對數(shù)據(jù)的要求也在不斷的變化,大概有下面的幾種情況:
- 分庫分表:業(yè)務(wù)發(fā)展越來越快,導(dǎo)致單機(jī)數(shù)據(jù)庫承受的壓力越來越大,數(shù)據(jù)量也越來越多,這個(gè)時(shí)候通常會(huì)使用分庫的方法去解決這個(gè)問題,將數(shù)據(jù)庫的流量均分到不同的機(jī)器上。從單機(jī)數(shù)據(jù)庫到分庫這個(gè)過程,我們就需要完整的遷移我們的數(shù)據(jù),我們才能成功的分庫的方式上使用我們的數(shù)據(jù)。
- 更換存儲(chǔ)介質(zhì):上面介紹的分庫,一般來說我們遷移完之后,存儲(chǔ)介質(zhì)依然是同樣的,比如說之前使用的是單機(jī)Mysql,分庫之后就變成了多臺(tái)機(jī)器的Mysql,我們的數(shù)據(jù)庫表的字段都沒有發(fā)生變化,遷移來說相對比較簡單。有時(shí)候我們分庫分表并不能解決所有的問題,如果我們需要很多復(fù)雜的查詢,這個(gè)時(shí)候使用Mysql可能就不是一個(gè)靠譜的方案,那么我們就需要替換查詢的存儲(chǔ)介質(zhì),比如使用elasticsearch,這種的遷移就會(huì)稍微要復(fù)雜一些,涉及到不同存儲(chǔ)介質(zhì)的數(shù)據(jù)轉(zhuǎn)換。
- 切換新系統(tǒng):一般公司在高速發(fā)展中,一定會(huì)出現(xiàn)很多為了速度快然后重復(fù)建設(shè)的項(xiàng)目,當(dāng)公司再一定時(shí)間段的時(shí)候,往往這部分項(xiàng)目會(huì)被合并,變成一個(gè)平臺(tái)或者中臺(tái),比如我們一些會(huì)員系統(tǒng),電商系統(tǒng)等等。這個(gè)時(shí)候往往就會(huì)面臨一個(gè)問題,將老的系統(tǒng)中的數(shù)據(jù)需要遷移到新的系統(tǒng)中,這個(gè)時(shí)候就更加復(fù)雜了,有可能不僅是存儲(chǔ)介質(zhì)有變動(dòng),有可能項(xiàng)目語言也不同,從更上層的角度來看,部門有可能也不同,所以這種數(shù)據(jù)遷移的難度是比較高,風(fēng)險(xiǎn)也更加的大。
在實(shí)際業(yè)務(wù)開發(fā)中,我們會(huì)根據(jù)不同的情況來做出不同的遷移方案,接下來我們來討論一下到底應(yīng)該怎么遷移數(shù)據(jù)。
數(shù)據(jù)遷移
數(shù)據(jù)遷移其實(shí)不是一蹴而就的,每一次數(shù)據(jù)遷移都需要一段漫長的時(shí)間,有可能是一周,有可能是幾個(gè)月,通常來說我們遷移數(shù)據(jù)的過程基本都和下圖差不多:‘
首先我們需要將我們數(shù)據(jù)庫已經(jīng)存在的數(shù)據(jù)進(jìn)行批量的遷移,然后需要處理新增的這部分?jǐn)?shù)據(jù),需要實(shí)時(shí)的把這部分?jǐn)?shù)據(jù)在寫完原本的數(shù)據(jù)庫之后然后寫到我們的新的存儲(chǔ),在這一過程中我們需要不斷的進(jìn)行數(shù)據(jù)校驗(yàn)。當(dāng)我們校驗(yàn)基本問題不大的時(shí)候,然后進(jìn)行切流操作,直到完全切流之后,我們就可以不用再進(jìn)行數(shù)據(jù)校驗(yàn)和增量數(shù)據(jù)遷移。
存量數(shù)據(jù)遷移
首先我們來說一下存量數(shù)據(jù)遷移應(yīng)該怎么做,存量數(shù)據(jù)遷移在開源社區(qū)中搜索了一圈發(fā)現(xiàn)沒有太好用的工具,目前來說阿里云的DTS提供了存量數(shù)據(jù)遷移,DTS支持同構(gòu)和異構(gòu)不同數(shù)據(jù)源之間的遷移,基本支持業(yè)界常見的數(shù)據(jù)庫比如Mysql,Orcale,SQL Server等等。DTS比較適合我們之前說的前兩個(gè)場景,一個(gè)是分庫的場景,如果使用的是阿里云的DRDS那么就可以直接將數(shù)據(jù)通過DTS遷移到DRDS,另外一個(gè)是數(shù)據(jù)異構(gòu)的場景,無論是Redis還是ES,DTS都支持直接進(jìn)行遷移。
那么DTS的存量遷移怎么做的呢?其實(shí)比較簡單大概就是下面幾個(gè)步驟:
- 當(dāng)存量遷移任務(wù)啟動(dòng)的時(shí)候,我們獲取當(dāng)前需要遷移的最大的id和最小id
- 設(shè)置一個(gè)分段,比如1萬,從最小id開始每次查詢1萬的數(shù)據(jù)給DTS服務(wù)器,交給DTS處理。sql如下:
select?*?from?table_name?where?id?>?curId?and?id?<?curId?+?10000;復(fù)制代碼
3.當(dāng)id大于等于maxId之后,存量數(shù)據(jù)遷移任務(wù)結(jié)束
當(dāng)然我們在實(shí)際的遷移過程中可能不會(huì)去使用阿里云,或者說在我們的第三個(gè)場景下,我們的數(shù)據(jù)庫字段之間需要做很多轉(zhuǎn)換,DTS不支持,那么我們就可以模仿DTS的做法,通過分段批量讀取數(shù)據(jù)的方式來遷移數(shù)據(jù),這里需要注意的是我們批量遷移數(shù)據(jù)的時(shí)候需要控制分段的大小,以及頻率,防止影響我們線上的正常運(yùn)行。
增量數(shù)據(jù)遷移
存量數(shù)據(jù)的遷移方案比較有限,但是增量的數(shù)據(jù)遷移方法就是百花齊放了,一般來說我們有下面的幾種方法:
- DTS: 阿里云的DTS算是一條龍服務(wù)了,在提供存量數(shù)據(jù)遷移的同時(shí)也提供了增量數(shù)據(jù)遷移,只不過需要按量收費(fèi)。
- 服務(wù)雙寫:比較適合于系統(tǒng)沒有切換的遷移,也就是只換了存儲(chǔ)但是系統(tǒng)還是同一個(gè),比如說分庫分表,redis數(shù)據(jù)同步等,這個(gè)的做法比較簡單直接在代碼里面同步的去寫入需要遷移的數(shù)據(jù),但是由于不是同一個(gè)數(shù)據(jù)庫就不能保證事務(wù),有可能導(dǎo)致遷移數(shù)據(jù)的時(shí)候會(huì)出現(xiàn)數(shù)據(jù)丟失,這個(gè)過程通過后續(xù)的數(shù)據(jù)校驗(yàn)會(huì)進(jìn)行解決。
- MQ異步寫入:這個(gè)可以適用于所有的場景,當(dāng)有數(shù)據(jù)修改的時(shí)候發(fā)送一個(gè)MQ消息,消費(fèi)者收到這個(gè)消息之后再進(jìn)行數(shù)據(jù)更新。這個(gè)和上面的雙寫有點(diǎn)類似,但是他把數(shù)據(jù)庫的操作變成了MQ異步了出問題的概率就會(huì)小很多
- 監(jiān)聽binlog: 我們可以使用之前說過的canal或者其他的一些開源的如databus去進(jìn)行binlog監(jiān)聽,監(jiān)聽binlog的方式 就和上面的消息MQ方式一樣,只是發(fā)送消息的這一步被我們省略了。這個(gè)方式的一個(gè)開發(fā)量來說基本是最小的。
這么多種方式我們應(yīng)該使用哪種呢?我個(gè)人來說是比較推薦監(jiān)聽binlog的做法的,監(jiān)聽binlog減少開發(fā)成本,我們只需要實(shí)現(xiàn)consumer邏輯即可,數(shù)據(jù)能保證一致性,因?yàn)槭潜O(jiān)聽的binlog這里不需要擔(dān)心之前雙寫的時(shí)候不是一個(gè)事務(wù)的問題。
數(shù)據(jù)校驗(yàn)
前面所說的所有方案,雖然有很多是成熟的云服務(wù)(dts)或者中間件(canal),但是他們都有可能出現(xiàn)一些數(shù)據(jù)丟失,出現(xiàn)數(shù)據(jù)丟失的情況整體來說還是比較少,但是非常難排查,有可能是dts或者canal不小心抖了一下,又或者是接收數(shù)據(jù)的時(shí)候不小心導(dǎo)致的丟失。既然我們沒有辦法避免我們的數(shù)據(jù)在遷移的過程中丟失,那么我們應(yīng)該通過其他手段來進(jìn)行校正。
通常來說我們遷移數(shù)據(jù)的時(shí)候都會(huì)有數(shù)據(jù)校驗(yàn)這一個(gè)步驟,但是在不同團(tuán)隊(duì)可能會(huì)選取不同的數(shù)據(jù)校驗(yàn)方案:
- 之前在美團(tuán)的時(shí)候,我們會(huì)做一個(gè)雙讀,也就是我們所有的讀取都會(huì)從新的里面讀取一份,但是返回的還是老的,這個(gè)時(shí)候我們需要做這部分?jǐn)?shù)據(jù)的校驗(yàn),如果有問題可以發(fā)出報(bào)警人工修復(fù)或者自動(dòng)修復(fù)。通過這種方式,我們常用的數(shù)據(jù)就能很快的進(jìn)行一個(gè)修復(fù),當(dāng)然也會(huì)不定時(shí)的去跑一個(gè)全量的數(shù)據(jù)check,只是這種check出來修復(fù)數(shù)據(jù)的時(shí)間就比較滯后。
- 現(xiàn)在在猿輔導(dǎo)之后,我們沒有采用之前的那種方式,因?yàn)殡p讀check雖然能很快發(fā)現(xiàn)數(shù)據(jù)的不對,但是我們并沒有對這部分?jǐn)?shù)據(jù)有那么高的一個(gè)實(shí)時(shí)性校驗(yàn)并且雙讀的一個(gè)代碼開發(fā)量還是稍微比較大的,但是又不能依靠不定時(shí)全量check去保證,這樣就會(huì)導(dǎo)致我們的數(shù)據(jù)校驗(yàn)時(shí)間會(huì)非常的延長。我們采取了一個(gè)折中的方法,我們借鑒了對賬里面的T+1的一個(gè)思路,我們每天凌晨獲取老數(shù)據(jù)庫中昨天更新的數(shù)據(jù),然后和我們新數(shù)據(jù)庫中的數(shù)據(jù)做一一比對,如果有數(shù)據(jù)不一樣或者數(shù)據(jù)缺失,我們都可以立馬進(jìn)行一個(gè)修復(fù)。
當(dāng)然在實(shí)際開發(fā)過程中我們也需要注意下面幾點(diǎn):
- 數(shù)據(jù)校驗(yàn)任務(wù)的一個(gè)正確性如何保證,校驗(yàn)任務(wù)本來就是去校正其他數(shù)據(jù)的,但是如果他自身出現(xiàn)了問題,就失去了校驗(yàn)的意義,這里目前來說只能靠review代碼這種方式去保證校驗(yàn)任務(wù)的正確性。
- 校驗(yàn)任務(wù)的時(shí)候需要注意日志的打印,有時(shí)候出現(xiàn)問題可能是直接所有數(shù)據(jù)出現(xiàn)問題,那么校驗(yàn)任務(wù)就有可能會(huì)打出大量的錯(cuò)誤日志,然后進(jìn)行報(bào)警,有可能會(huì)將系統(tǒng)打掛,或者說影響其他人的服務(wù)。這里如果要簡單一點(diǎn)搞,可以將一些非人工處理的報(bào)警搞成warn,復(fù)雜一點(diǎn)搞得話,可以封裝一個(gè)工具,某個(gè)error打印再某個(gè)時(shí)間段超過一定量然后就不用再打印了。
- 校驗(yàn)任務(wù)注意不要影響線上運(yùn)行的服務(wù),通常校驗(yàn)任務(wù)會(huì)寫很多批查詢的語句,會(huì)出現(xiàn)批量掃表的情況,如果代碼沒有寫好很容易導(dǎo)致數(shù)據(jù)庫掛掉。
切流
當(dāng)我們數(shù)據(jù)校驗(yàn)基本沒有報(bào)錯(cuò)了之后,說明我們的遷移程序是比較穩(wěn)定的了,那么我們就可以直接使用我們新的數(shù)據(jù)了嗎?當(dāng)然是不可以的,如果我們一把切換了,順利的話當(dāng)然是很好的,如果出現(xiàn)問題了,那么就會(huì)影響所有的用戶。
所以我們接下來就需要進(jìn)行灰度,也就是切流。 對于不同的業(yè)務(wù)切流的的維度會(huì)不一樣,對于用戶維度的切流,我們通常會(huì)以userId的取模的方式去進(jìn)行切流,對于租戶或者商家維度的業(yè)務(wù),就需要按照租戶id取模的方式去切流。這個(gè)切流需要制定好一個(gè)切流計(jì)劃,在什么時(shí)間段,放出多少的流量,并且切流的時(shí)候一定要選擇流量比較少的時(shí)候進(jìn)行切流,每一次切流都需要對日志做詳細(xì)的觀察,出現(xiàn)問題盡早修復(fù),流量的一個(gè)放出過程是一個(gè)由慢到快的過程,比如最開始是以1%的量去不斷疊加的,到后面的時(shí)候我們直接以10%,20%的量去快速放量。因?yàn)槿绻霈F(xiàn)問題的話往往在小流量的時(shí)候就會(huì)發(fā)現(xiàn),如果小流量沒有問題那么后續(xù)就可以快速放量。
注意主鍵ID
在遷移數(shù)據(jù)的過程中特別要注意的是主鍵ID,在上面雙寫的方案中也提到過主鍵ID需要雙寫的時(shí)候手動(dòng)的去指定,防止ID生成順序錯(cuò)誤。
如果我們是因?yàn)榉謳旆直矶M(jìn)行遷移,就需要考慮我們以后的主鍵Id就不能是自增id,需要使用分布式id,這里比較推薦的是美團(tuán)開源的leaf,他支持兩種模式一種是雪花算法趨勢遞增,但是所有的id都是Long型,適合于一些支持Long為id的應(yīng)用。還有一種是號(hào)段模式,這種會(huì)根據(jù)你設(shè)置的一個(gè)基礎(chǔ)id,從這個(gè)上面不斷的增加。并且基本都走的是內(nèi)存生成,性能也是非常的快。
當(dāng)然我們還有種情況是我們需要遷移系統(tǒng),之前系統(tǒng)的主鍵id在新系統(tǒng)中已經(jīng)有了,那么我們的id就需要做一些映射。如果我們在遷移系統(tǒng)的時(shí)候已經(jīng)知道未來大概有哪些系統(tǒng)會(huì)遷移進(jìn)來,我們就可以采用預(yù)留的方式,比如A系統(tǒng)現(xiàn)在的數(shù)據(jù)是1到1億,B系統(tǒng)的數(shù)據(jù)也是1到1億,我們現(xiàn)在需要將A,B兩個(gè)系統(tǒng)合并成新系統(tǒng),那么我們可以稍微預(yù)估一些Buffer,比如給A系統(tǒng)留1到1.5億,這樣A就不需要進(jìn)行映射,B系統(tǒng)是1.5億到3億,那么我們轉(zhuǎn)換成老系統(tǒng)Id的時(shí)候就需要減去1.5億,最后我們新系統(tǒng)的新的Id就從3億開始遞增。 但是如果系統(tǒng)中沒有做規(guī)劃的預(yù)留段怎么辦呢?可以通過下面兩種方式:
- 需要新增一個(gè)表,將老系統(tǒng)的id和新系統(tǒng)的id做一個(gè)映射記錄,這個(gè)工作量還是比較大的,因?yàn)槲覀円话氵w移都會(huì)涉及幾十上百張表,記錄的成本還是非常的高。
- 如果id是Long型的話,我們可以好好利用long是64位這個(gè)因素,我們可以制定一個(gè)規(guī)則,我們新系統(tǒng)的id都是從一個(gè)比較大的數(shù)開始,比如從大于Int的數(shù)開始,將小Int的那部分?jǐn)?shù)都可以留給我們的老系統(tǒng)做Id遷移,比如我們上面的1.5億的數(shù)據(jù)量,其實(shí)只用了28位,我們的Int是32位,那么還有4位可以使用,這個(gè)4位可以代表16個(gè)系統(tǒng)做遷移,當(dāng)然如果規(guī)劃中有更多的系統(tǒng)做遷移,可以將新系統(tǒng)的id起始點(diǎn)設(shè)置得更大一點(diǎn)。如下圖所示:
總結(jié)
最后簡單來總結(jié)下這個(gè)套路,其實(shí)就是四個(gè)步驟,一個(gè)注意:存量,增量,校驗(yàn),切流,最后再注意一下id。不管是多大量級的數(shù)據(jù),基本上按照這個(gè)套路來遷移就不會(huì)出現(xiàn)大的問題。希望能在大家的后續(xù)遷移數(shù)據(jù)工作中,這篇文章能幫助到你。
如果大家覺得這篇文章對你有幫助,你的關(guān)注和轉(zhuǎn)發(fā)是對我最大的支持,O(∩_∩)O:
相關(guān)免費(fèi)學(xué)習(xí)推薦:java基礎(chǔ)教程
Atas ialah kandungan terperinci 萬億級數(shù)據(jù)應(yīng)該遷移的方法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Dalam masyarakat hari ini, telefon bimbit telah menjadi sebahagian daripada kehidupan orang ramai, dan dengan perkembangan pesat teknologi, kemas kini telefon bimbit menjadi semakin kerap. Apabila kami membeli telefon Huawei baharu, salah satu isu yang paling menjengkelkan ialah cara memindahkan data penting daripada telefon lama ke telefon baharu dengan lancar. Sebagai pengeluar peralatan komunikasi domestik terkemuka, alat pemindahan data Huawei sendiri boleh menyelesaikan masalah ini. Artikel ini akan memperkenalkan secara terperinci cara menggunakan alat pemindahan data yang disediakan secara rasmi oleh telefon mudah alih Huawei untuk memindahkan telefon lama dan baharu dengan mudah.

Menggunakan Laravel untuk pemindahan dan pengisian data: Pengurusan struktur pangkalan data yang fleksibel Ringkasan: Laravel ialah rangka kerja PHP yang sangat popular yang menyediakan cara mudah untuk mengurus struktur pangkalan data, termasuk migrasi data dan pengisian data. Dalam artikel ini, kami akan membincangkan cara menggunakan ciri migrasi dan isi Laravel untuk mengurus struktur pangkalan data anda secara fleksibel. 1. Migrasi data Migrasi data ialah alat yang digunakan untuk mengurus perubahan dalam struktur pangkalan data. Ia membolehkan anda menggunakan kod PHP untuk mentakrif dan mengubah suai jadual pangkalan data, lajur, indeks, kekangan, dll.

Dengan perkembangan teknologi Internet dan pengembangan skop aplikasinya yang berterusan, migrasi data telah menjadi lebih biasa dan penting. Penghijrahan data merujuk kepada proses memindahkan struktur pangkalan data dan data sedia ada ke persekitaran atau sistem baharu yang berbeza. Proses pemindahan data boleh termasuk dari satu enjin pangkalan data ke enjin pangkalan data yang lain, dari satu versi pangkalan data ke versi pangkalan data yang lain, contoh pangkalan data yang berbeza, atau dari satu pelayan ke pelayan lain. Dalam bidang pembangunan PHP, Phinx ialah perpustakaan migrasi data yang digunakan secara meluas. Nombor sokongan Phinx

MySQL ialah sistem pengurusan pangkalan data hubungan sumber terbuka yang sangat popular yang digunakan secara meluas dalam pelbagai aplikasi web, sistem perusahaan, dll. Dalam senario aplikasi perniagaan moden, kebanyakan pangkalan data MySQL perlu digunakan pada berbilang pelayan untuk menyediakan ketersediaan dan prestasi yang lebih tinggi, yang memerlukan penghijrahan dan penyegerakan data MySQL. Artikel ini akan memperkenalkan cara melaksanakan penghijrahan dan penyegerakan data MySQL antara berbilang pelayan. 1. Migrasi data MySQL Migrasi data MySQL merujuk kepada migrasi data dalam pelayan MySQL.

Penyegerakan data perkhidmatan mikro dan alat pemindahan data yang ditulis dalam Java Dalam era Internet hari ini, seni bina perkhidmatan mikro telah menjadi corak reka bentuk yang digunakan secara meluas. Dalam seni bina perkhidmatan mikro, penyegerakan data dan pemindahan antara perkhidmatan telah menjadi tugas kritikal. Untuk menyelesaikan masalah ini, kami boleh menggunakan Java untuk menulis alat penyegerakan data perkhidmatan mikro yang mudah dan berkuasa dan alat pemindahan data. Dalam artikel ini, saya akan memperincikan cara menulis alat ini dalam Java dan memberikan beberapa contoh kod. Kerja penyediaan Pertama, kita perlu menyediakan beberapa

Bagi orang yang baru menggunakan sistem pengendalian Apple, macOS, berpindah dari Windows ke Mac boleh menjadi idea yang bagus tetapi menakutkan. Berikut ialah segala-galanya yang perlu dipertimbangkan oleh penukar PC ke Mac yang berpotensi semasa membuat lompatan platform. Orang ramai menukar platform atas pelbagai sebab, daripada kekecewaan dengan persekitaran sedia ada mereka kepada keperluan untuk berpindah untuk bekerja atau rasa ingin tahu yang mudah. Dalam sesetengah kes, suis mungkin dipaksa pada pengguna yang tidak curiga, seperti jika ahli keluarga memberi mereka Mac. Walau apa pun alasan anda untuk berpindah dari Windows ke Mac, keputusan untuk berbuat demikian hanyalah langkah pertama. Seterusnya, anda mesti memindahkan persekitaran pengkomputeran anda daripada Windows ke persekitaran baharu dan tidak dikenali. nampaknya

Bagaimana dengan cepat mengimport data telefon lama ke telefon mudah alih Huawei? Dalam masyarakat bermaklumat hari ini, telefon bimbit telah menjadi sebahagian daripada kehidupan manusia yang amat diperlukan. Dengan perkembangan teknologi dan permintaan yang semakin meningkat untuk fungsi telefon mudah alih, menggantikan telefon bimbit telah menjadi fenomena biasa. Dan apabila kami menaik taraf kepada telefon Huawei baharu, cara memindahkan data dari telefon lama ke telefon baharu dengan cepat dan berkesan menjadi masalah yang perlu diselesaikan. Bagi kebanyakan pengguna yang menggunakan telefon bimbit lama, mereka menyimpan sejumlah besar kenalan, mesej teks, foto, muzik dan video.

Rangka kerja Gin ialah rangka kerja web yang ringan dengan penghalaan yang fleksibel dan mekanisme perisian tengah, sesuai untuk pembangunan pesat aplikasi web. Dalam pembangunan sebenar, migrasi data dan penyegerakan data adalah keperluan biasa Artikel ini akan memperkenalkan secara terperinci cara menggunakan rangka kerja Gin untuk pemindahan data dan penyegerakan data. 1. Apakah pemindahan data dan penyegerakan data? Penghijrahan data dan penyegerakan data adalah kaedah manipulasi data yang biasa dalam pembangunan web. Penghijrahan data biasanya
