ProgramlamaBackend geliştirici, Veri Mühendisi, DBA

Büyük veri hacimlerinin SQL sunucuları arasında nasıl işleneceğini ve aktarılacağını anlatın. Veri aktarımı için hangi mekanizmalar vardır, veri kaybını/bozulmasını nasıl önleyebiliriz? Bir yazılım çözümü örneği verin.

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap

SQL sunucuları arasında büyük veri hacimlerinin aktarımı için, bulk insert, ETL süreçleri (Extract-Transform-Load), replikasyon ve yedekleme/kurtarma mekanizmaları, db-linkler ve yerleşik veri dışa/dışa aktarma araçları gibi birkaç strateji kullanılmaktadır.

Paketli (batch) veri aktarım mekanizmaları kullanmak en iyisidir. SQL Server'de büyük dosyalar yüklemek için BULK INSERT veya karmaşık ETL senaryoları için SSIS/Integration Services gibi örnekler mevcuttur. Daha taşınabilir versiyonlarda LIMIT/OFFSET mantığı ile birlikte veri aktarım konumunu “kaydetme” ile ilgili scriptler kullanılır. Güvenliği sağlamak için sıkça şunlar uygulanır:

  • Kontrol toplamaları ile veri parçaları gönderme,
  • Sonrasında bütünlük kontrolü (check constraints, hash'ler) ile geçici staging tabloları,
  • Aktarım aşamalarının günlüğe kaydedilmesi.

Örnek

-- Verileri parçalar halinde aktarma (PostgreSQL) INSERT INTO target_db.public.data_table (col1, col2) SELECT col1, col2 FROM source_db.public.data_table WHERE transferred = FALSE LIMIT 10000;

Kandırmaca Soru

Replikasyon ile dışa/dışa aktarma arasındaki fark nedir ve neden replikasyon büyük tarihi arşivlerin taşınması için her zaman uygun değildir?

Cevap: Replikasyon, güncel değişikliklerin senkronizasyonunu destekler ve "canlı" veriler için verimli çalışır. Tarihi arşivlerin veri taşınması için replikasyon, özel dönüşüm sağlanmadığı ve tek seferlik büyük veri aktarımı sorununu çözmediği için yeterince hızlı ve esnek olmayabilir - burada sıkça ETL kullanılır.

Gerçek Hata Örnekleri


Hikaye

Bir şirket, birkaç bölgesel veritabanını tek bir depoya entegre etti. Paket olmadan toplu içe aktarma sırasında sistem "dondu", bu da kısmi taahhüt ile yarı otomatik durum kurtarmaya yol açtı. Çözüm, geçici tablolar aracılığıyla ilerleme kaydederek paketli dışa aktarmaya geçmek oldu.


Hikaye

BULK INSERT ile büyük dosyaların aktarımında kontrol toplamlarının yanlış kontrol edilmesi nedeniyle bazı bilgiler bozuldu, ancak bu durum birkaç hafta sonra keşfedildi. Çözüm, her bir paket öncesi ve sonrası kontrol toplamlarının yeniden hesaplanması ve tutarsızlık durumunda otomatik tekrar olmaktı.


Hikaye

100+ milyon satırı standart dışa/dışa aktarma ile taşımaya çalışırken bir geliştirici kilit yönetimini dikkate almadı: hedef sunucudaki tabloların kilitlenmesi birkaç saat iş operasyonlarının durmasına yol açtı. Sonuç — bu tür görevler için yalnızca gece pencerelerini ve geçici yeniden dizinlemeyle aşamalı kopyalamayı kullanmak.