Data Migration — məlumatların saxlama sistemləri, formatlar və ya proqram təminatı versiyaları arasında köçürülməsi prosesidir. Tətbiq inkişafında məlumat miqrasiyası verilənlər bazasının yenilənməsi, provayderin dəyişdirilməsi və ya yeni saxlama arxitekturasına keçid zamanı tələb olunur. Gartner (2025) məlumatına görə, məlumat miqrasiyası layihələrinin 60%-i kifayət qədər test edilməməsi və geri qayıtma strategiyasının olmaması səbəbindən planlaşdırılmış büdcəni aşır. Düzgün planlaşdırılmış miqrasiya dayanma müddətini minimuma endirir və məlumat itkisini aradan qaldırır.
Əsas məqamlar
Data Migration — məlumatların bir mənbədən digərinə bütövlük, ardıcıllıq və tamamlandıqdan sonra əlçatanlıq təmin edilməklə köçürülməsi prosesidir. Sadə kopyalamadan fərqli olaraq, miqrasiya formatların transformasiyası, dublikatların təmizlənməsi, referensial bütövlüyün yoxlanılması və nəticənin validasiyasını əhatə edir.
Data Migration ehtiyacı DBMS yeniləməsi (məsələn, MySQL 5.7-dən MySQL 8.0-a), bulud provayderinin dəyişdirilməsi, monolitdən mikroxidmətlərə keçid və ya sxemdən NoSQL-ə keçid zamanı yaranır. Stripe (2024) məlumatına görə, şirkətlərin 89%-i ən azı iki ildə bir dəfə məlumat miqrasiyası ilə qarşılaşır, 43%-i isə bunu texniki yeniləmənin ən çətin mərhələsi hesab edir.
Birinci məqsəd — daha müasir saxlama həllinə keçməklə məhsuldarlığın artırılması. İkinci — infrastruktur təchizatçısını dəyişdirməklə əməliyyat xərclərinin azaldılması. Üçüncü — məlumatların müəyyən yurisdiksiyada saxlanmalı olduğu tənzimləyici tələblərə (GDPR, 152-FZ) uyğunluğun təmin edilməsi.
İnteqrasiya iki işləyən sistem arasında daimi sinxronizasiyanı nəzərdə tutur. Miqrasiya — mənbənin sonradan söndürülməsi ilə birdəfəlik köçürmədir. İnteqrasiya mənbədəki məlumatları silmir, miqrasiya isə qəbuledici sistemin primary statusuna keçirilməsi ilə tamamlanır. Bu prinsipial fərq alətlərin və validasiya yanaşmalarının seçimini müəyyənləşdirir.
İstənilən Data Migration-un əsas arxitekturası ETL (Extract, Transform, Load) modelinə əsaslanır. Extract — məlumatların mənbədən çıxarılması. Transform — hədəf sxemə uyğun çevrilmə. Load — qəbulediciyə yükləmə. Hər bir mərhələnin öz keyfiyyətə nəzarət metodları var.
Çıxarma mərhələsində məlumatlar mənbə verilənlər bazasından, fayl anbarından və ya API-dən oxunur. Artımlı boşaltma (CDC — Change Data Capture) yalnız dəyişdirilmiş qeydləri köçürməyə imkan verir, trafik həcmini azaldır. Tam dump kiçik həcmlər üçün uyğundur, lakin terabayt verilənlər bazaları üçün Debezium və ya Kafka Connect vasitəsilə axın replikasiyası üstünlük təşkil edir.
Çevrilmə sütunların adlandırılması, məlumat tiplərinin dəyişdirilməsi, dəyərlərin normallaşdırılması və aqreqasiyanı əhatə edir. Məsələn, MySQL-dən PostgreSQL-ə miqrasiya zamanı DECIMAL rəqəm tipi NUMERIC-ə, tarix formatı isə ISO 8601-ə çevrilməlidir. Talend (2024) məlumatına görə, miqrasiya vaxtının 70%-i məhz transformasiyaya sərf olunur, köçürməyə deyil.
Yükləmə paketlərlə (batch insert) və ya axınla həyata keçirilir. Dublikatları aradan qaldırmaq üçün idempotentlik açarı istifadə olunur. Yükləmədən sonra məcburi validasiya addımı tələb olunur: qeydlərin sayının müqayisəsi, nəzarət məbləğlərinin hesablanması və biznes qaydalarının yoxlanılması. Validasiya olmadan Data Migration tamamlanmış sayılmır.
Data Migration strategiyasının seçimi sistemin dayanma müddətini, geri qayıtma mürəkkəbliyini və hazırlıq işlərinin həcmini müəyyən edir. Əsas strategiyalar — Big Bang, Trickle və paralel işə salma (Parallel Run). Hər biri müxtəlif ssenarilərdə tətbiq olunur.
| Strategiya | Dayanma müddəti | Mürəkkəblik | İtki riski |
|---|---|---|---|
| Big Bang | Saat-gün | Aşağı | Yüksək |
| Trickle | Dəqiqə | Yüksək | Aşağı |
| Parallel Run | Yox | Çox yüksək | Minimal |
Big Bang — köhnə sistemin birdəfəlik söndürülməsi, məlumatların köçürülməsi və yenisinin işə salınması. Kiçik həcmlər və sadə sxemlər üçün uyğundur. Risk: nasazlıq zamanı sistem ehtiyat nüsxədən tam bərpa olunana qədər əlçatan deyil. 2024-cü ildə GitLab Big Bang-dən istifadə edərək 5 TB məlumatı AWS RDS-dən GCP Cloud SQL-ə 14 saatlıq dayanma pəncərəsi ilə köçürdü.
Trickle — kiçik hissələrlə axın sinxronizasiyası. Köhnə və yeni sistem paralel işləyir, dəyişikliklər real vaxtda replikasiya olunur. Məlumatlar sabitləşdikdən sonra köhnə mənbə söndürülür. Bu yanaşma ikitərəfli sinxronizasiya və konfliktlərin həllini tələb edir. Dayanma müddəti olmadan verilənlər bazası sxeminin yenilənməsi zamanı Continuous Delivery-də istifadə olunur.
Parallel Run — hər iki sistem eyni vaxtda işləyir, tətbiq hər iki mənbədən yazır və oxuyur. Qəbuledicidə məlumatların yoxlanılmasından sonra köhnə mənbə söndürülür. Bu ən təhlükəsiz strategiyadır, eyni zamanda ən bahalıdır — iki infrastrukturun dəstəklənməsi tələb olunur. Kritik maliyyə sistemlərinin miqrasiyasında tətbiq edilir.
Tətbiq inkişafında Data Migration-un köçürmə obyekti və kontekstinə görə bir neçə növü fərqləndirilir. Hər növün öz metodologiyası və alətləri var. Növü başa düşmək düzgün strategiya seçiminə ilk addımdır.
Database Migration — müxtəlif satıcıların DBMS-ləri arasında köçürmə: Oracle-dan PostgreSQL-ə, SQL Server-dən MySQL-ə, MongoDB-dən DynamoDB-yə. Çətinlik məlumat tiplərinin, SQL dialektlərinin və indeksləmə mexanizmlərinin uyğunsuzluğundadır. Alətlər: AWS DMS, Debezium, Liquibase.
Eyni tətbiqin müxtəlif versiyaları arasında məlumatların köçürülməsi — məsələn, varlıq strukturunun dəyişməsi ilə kod yeniləməsi zamanı. Çox vaxt tətbiq dilində miqrasiya skriptlərinin icrası ilə müşayiət olunur: Ruby on Rails-də Active Record Migrations, Java üçün Flyway, .NET-də Entity Framework Migrations. Bu skriptlər sxemi və məlumatları ardıcıl olaraq çevirir.
Cloud Data Migration — məlumatların on-premise infrastrukturdan buluda və ya buludlar arasında köçürülməsi. AWS Snowball, Azure Data Box və Google Transfer Appliance terabayt həcmlərin fiziki daşınması üçün istifadə olunur. Onlayn miqrasiya üçün VPN tunelləri və replikasiya tətbiq edilir. Gartner məlumatına görə, 2027-ci ilə qədər miqrasiyaların 70%-i hibrid bulud mühitində həyata keçiriləcək.
Plansız Data Migration — zəmanətli uğursuzluq. Planlaşdırma cari sxemin auditi, məlumatların profilləşdirilməsi, strategiyanın seçilməsi, mühitin hazırlanması, test və geri qayıtma planının təsdiqini əhatə edir. McKinsey (2024) araşdırmasına görə, uğursuz miqrasiyaların 54%-i formal planın olmamasından qaynaqlanır.
Miqrasiyadan əvvəl mənbə sistemin auditi aparılmalıdır: məlumatların həcmi, cədvəllərin sayı, varlıqlar arası asılılıqlar, nullable sahələrin tipləri və dublikatların mövcudluğu müəyyən edilməlidir. Profilləşdirmə anomaliyaları aşkar edir — əsas sahələrdə NULL dəyərlər, format uyğunsuzluqları, qırıq istinadlar. Bu məlumatlar tam dump-un əsasını təşkil edir.
Test miqrasiyası əsas işə salınmadan əvvəl istehsal məlumatlarının surətində aparılır. Məqsəd ETL boru kəmərinin məhsuldarlığını, transformasiyanın düzgünlüyünü və yükləmə sürətini yoxlamaqdır. Big Bang-dən əvvəl ən azı üç tam dövr test tövsiyə olunur. Hər dövr tam köçürmə, validasiya və geri qayıtmanı əhatə edir.
Geri qayıtma — kritik səhvlər aşkar edildikdə orijinal sistemə qayıdış. Geri qayıtma planına daxildir: başlamazdan əvvəl mənbəyin tam ehtiyat nüsxəsi, sxemin bərpası skriptləri, köhnə sistemin işə salınması üçün addım-addım təlimat və istifadəçilərin məlumatlandırılması planı. Təsdiqlənmiş geri qayıtma planı olmadan Data Migration istehsal mühitində işə salınmamalıdır.
Flyway ilə birlikdə Kotlin-də Data Migration-un praktiki nümunəsinə baxaq. V1 miqrasiya skripti users cədvəlini yaradır və məlumatları legacy formatdan köçürür. Flyway tətbiq edilmiş miqrasiyaları avtomatik izləyir və idempotentliyi təmin edir.
// V1__Migrate_Users.kt — legacy formatdan məlumat miqrasiyası
import org.flywaydb.core.api.migration.BaseJavaMigration
import java.sql.Connection
import java.sql.PreparedStatement
class V1__MigrateUsers : BaseJavaMigration() {
override fun migrate(connection: Connection) {
val legacyUsers = connection.prepareStatement(
"SELECT id, name, legacy_role FROM users_legacy"
).executeQuery()
val insertStmt: PreparedStatement = connection.prepareStatement(
"INSERT INTO users (id, name, role, migrated_at) VALUES (?, ?, ?, NOW())"
)
while (legacyUsers.next()) {
insertStmt.setInt(1, legacyUsers.getInt("id"))
insertStmt.setString(2, legacyUsers.getString("name"))
val role = mapLegacyRole(legacyUsers.getString("legacy_role"))
insertStmt.setString(3, role)
insertStmt.executeUpdate()
}
}
}
SQLAlchemy istifadə edərək Python-da CSV-dən PostgreSQL-ə məlumat köçürmə nümunəsi. Skript fayldan çıxarma aparır, tipləri çevirir və hədəf cədvəlləri yükləyir.
# migrate_data.py — CSV-nin transformasiya ilə PostgreSQL-ə yüklənməsi
import pandas as pd
from sqlalchemy import create_engine
engine = create_engine("postgresql://user:pass@host/db")
df = pd.read_csv("legacy_orders.csv")
df["order_date"] = pd.to_datetime(df["order_date"])
df["amount"] = df["amount"].astype("float")
df.to_sql("orders", engine, if_exists="append", index=False)
print("Data Migration tamamlandı")
Tez-tez verilən suallar
Data Migration — məlumatların sistemlər arasında köçürülməsinin bütün prosesi. ETL — miqrasiyanın mərhələlərindən birini təsvir edən texniki modeldir (Extract, Transform, Load). ETL — icra üsulu, Data Migration — ümumi vəzifə.
Parallel Run ən təhlükəsizdir: hər iki sistem eyni vaxtda işləyir, məlumatlar avtomatik yoxlanılır. Lakin bu ən bahalı strategiyadır. Adi tapşırıqlar üçün replikasiya və geri qayıtma planı ilə Trickle kifayətdir.
Vaxt həcmdən, transformasiya mürəkkəbliyindən və strategiyadan asılıdır. Big Bang ilə 100 GB-a qədər verilənlər bazası üçün — 2–6 saat. Trickle ilə terabayt həcmlər üçün — paralel sinxronizasiya ilə bir neçə gündən həftələrə qədər.
Əsas alətlər: AWS DMS, Azure Data Factory, CDC üçün Debezium, sxem miqrasiyaları üçün Flyway və Liquibase, ETL boru kəmərləri üçün Apache NiFi. Seçim mənbə növündən və hədəf platformadan asılıdır.
Dərhal qəbuledici sistemə yazmağı dayandırın, geri qayıtma planına uyğun olaraq mənbəyə keçin və məlumatları ehtiyat nüsxədən bərpa edin. Uğursuzluğun səbəbini təhlil etdikdən sonra test miqrasiyasını təkrarlayın. Geri qayıtma planı başlamazdan əvvəl hazır olmalıdır.
Xülasə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun