Ana Sayfa

Moldova Veri Boru Hattımızı Nasıl Kırdı?

1 dk okuma

Yazar, veri boru hattında yaşanan ilginç bir hatayı anlatıyor. DMS replikasyonunun başarısız olduğunu ve Redshift'in satırları reddettiğini fark ederler. Boru hattında hiçbir değişiklik yapılmamış olmasına rağmen bu durumun nedeni merak edilir. Suçlu, Shopify'ın "Moldova, Republic of" olarak adlandırdığı ülkenin ismindeki virgül blijkt.

Sorun, Shopify API'sinden alınan teslimat ülkeleri verilerinin işlenmesi sırasında ortaya çıkar. DMS, RDS tablolarını Redshift'e kopyalamak için S3'e CSV dosyaları yazar ve ardından bir COPY komutu kullanır. Ancak DMS, alan değerlerini tırnak içine almıyordu. Bu nedenle, "Moldova, Republic of" gibi virgül içeren bir ülke adı, CSV dosyasında fazladan bir sütun olarak algılanarak Redshift'in hata vermesine neden oluyordu. Redshift, 5 sütun yerine 6 sütun görüyor ve boru hattı çöküyordu.

İlk akla gelen çözüm, kaynak veritabanındaki kaydı yeniden adlandırmaktı, ancak Shopify'ın bir sonraki senkronizasyonda orijinal değeri geri göndermesi nedeniyle bu geçici bir düzeltmeydi. Daha iyi bir çözüm, veritabanına yazılmadan önce senkronizasyon işinde ülke adını değiştirmekti (örn: "Moldova, Republic of" -> "Moldova - Republic of"). En sağlam çözümler ise CSV ayırıcısını değiştirmek (virgül yerine boru veya tab kullanmak) veya tamamen CSV'den Parquet gibi şema farkındalığına sahip, sütun bazlı bir formata geçmekti. Parquet, virgül, yeni satır veya tırnak işaretleri gibi özel karakterlerle sorunsuz çalışır.

İçgörü

Veri boru hatlarında basit bir veri formatlama hatası, beklenmedik ülke adı formatları nedeniyle tüm sistemin çökmesine neden olabilir.

Kaynak