Veri taşıma
Access verisini tekrarlanabilir bir hatla PostgreSQL'e taşıdık.
- Access hiç değiştirilmedi
- Otomatik sütun eşleştirme
- Her çalıştırmada düzeltme raporu
Vida ve bağlantı elemanı üreten Ares Vida, 2006'dan beri büyüyen Access uygulamasını bıraktı. Veriyi kaybetmeden yeni bir Java web uygulamasına taşıdık, ekranları yeniden tasarladık, etiket ve belge çıktılarını sıfırdan kurduk.
Ares Vida, Tuzla'da soğuk dövme preslerle vida, cıvata ve perçin üretiyor. Hammadde tel olarak geliyor, ısıl işlem ve kaplama dış fasonda yapılıyor, ürünler hem yurt içine hem ihracata gidiyor. Bu akışın tamamı yıllardır ARPR-2021 adlı bir Access uygulamasında yürüyordu.
Uygulama iki dosyadan oluşuyordu. Formlar ve raporlar bir dosyada, veriler 202 tablolu ayrı bir veri dosyasındaydı. 2006'dan bu yana biriken kayıtlar, büyüyen tablo sayısı ve çok kullanıcılı kullanım, bakımı her yıl zorlaştırıyordu. Firma, aynı işi tarayıcıdan, uzaktan ve güvenle yapabileceği bir sisteme geçmek istedi.
Koda başlamadan önce üretimin dilini çıkardık. Bir vidanın diş tipi, baş şekli, kaplama rengi, ısıl işlemi ve hidrojen kırılganlığı kontrolü gibi özellikleri ürün modeline girdi. Sipariş, üretim planı, iş emri ve lot, tel ve kalıp, stok, satın alma, fason irsaliyeleri, ihracat ve sevkiyat ayrı alanlar olarak tasarlandı. Sonuçta 68 varlıklık bir veri modeli ortaya çıktı.
Projenin en hassas kısmı veriydi. Baştan bir kural koyduk: geçiş tamamlanana kadar Access tek doğru kaynak olarak kalacak ve hiç değiştirilmeyecek. Yeni sistem her yüklemede en güncel Access kopyasından sıfırdan dolduruluyor. Böylece iki sistem yan yana çalışabiliyor ve kullanıcılar yeni ekranlara kendi hızlarında geçiyor.
Aktarım, aşamalı bir hat olarak kuruldu. Önce hedef tablolar boşaltılıp başvuru verileri yükleniyor. Ardından her Access tablosu için ayrı bir adım, yabancı anahtar sırasına göre çalışıyor. Son aşamada temizlik yapılıyor, Türkçe İ ve I harflerine duyarlı arama alanları üretiliyor, sayaçlar ayarlanıyor.
Sütun eşleştirmesini elle yapmak yerine Python ile bir dönüştürücü yazdık. Dönüştürücü, aynı kimliğe sahip kayıtları karşılaştırarak hangi Access sütununun hangi hedef sütuna gittiğini kendisi çıkarıyor. Elle müdahale gereken birkaç sütun ayrı bir dosyada tutuluyor. Her çalıştırmada tarih biçimleri ve para tutarları dönüştürülüyor, silinmiş kayıtlara işaret eden bağlantılar satır kaybetmeden boşaltılıyor ve yapılan her düzeltme bir rapora yazılıyor.
Ekranları Vue 3 ve PrimeVue ile yeniden tasarladık. Her kayıt türü için aynı düzen kullanılıyor: liste, kayıt ve sorgu ekranı. Kullanıcı bir ekranı öğrendiğinde diğerlerini de biliyor. Sipariş, üretim, stok, satın alma, sevkiyat ve ihracat ekranları bir gösterge paneli etrafında toplanıyor.
Access raporlarının yerini, sunucuda HTML şablonlardan üretilen PDF çıktılar aldı. Türkçe karakterler için gömülü yazı tipi kullanılıyor. Toplam 64 şablon var. Bunların arasında ürün kodu, sipariş numarası ve üretim tarihini taşıyan barkodlu ürün, koli ve palet etiketleri; sipariş çıktısı ve sipariş listeleri; iş emri, proses kontrol formu ve üretim planı; ısıl işlem ve kaplama için fason irsaliyeleri; ihracat irsaliyesi, ticari fatura, proforma ve çeki listesi bulunuyor. Bazı müşteriler için etiket düzeni müşterinin istediği biçime göre ayrı hazırlandı.
Yeni sistem şirket içindeki sunucuda çalışıyor ve Access ile paralel kullanılıyor. Son tam yüklemede yaklaşık 160 bin kayıt iki buçuk dakikada aktarıldı, kullanıcılar yalnızca birkaç dakika bekledi. Kalite ve laboratuvar tabloları gibi bazı alanlar bilinçli olarak kapsam dışında bırakıldı. Kalan tablolar için karar, firmayla birlikte ihtiyaç sırasına göre veriliyor.
Her yükleme aynı adımları aynı sırayla izliyor. Hat tekrar tekrar çalıştırılabildiği için geçiş günü sürpriz yok.
Hedef tablolar boşaltılıyor, ülke gibi başvuru verileri yükleniyor. Kullanıcılar ve oturumlar korunuyor.
Her Access tablosu kendi adımında dönüştürülüyor. Sütun eşleşmesini dönüştürücü kendisi çıkarıyor.
Kopuk bağlantılar satır kaybetmeden boşaltılıyor, Türkçe arama alanları üretiliyor, sayaçlar ayarlanıyor.
Kayıt sayıları ve yapılan düzeltmeler raporlanıyor. Fark çıkarsa hat düzeltilip yeniden çalıştırılıyor.
Access verisini tekrarlanabilir bir hatla PostgreSQL'e taşıdık.
Vida üretiminin dilini yazılıma taşıdık.
Tarayıcıdan çalışan, her yerde aynı düzeni izleyen ekranlar.
Barkodlu etiketler ve tüm çıktılar sunucuda PDF olarak üretiliyor.
Mevcut uygulamanızı birlikte inceleyelim. Hangi tabloların taşınacağını, hangi ekranların yeniden tasarlanacağını ve geçişin nasıl aşamalandırılacağını size yazılı olarak çıkaralım.