Net-Base Dergi

14.06.2026

Büyümüş Delphi yazılımında veritabanı yeniden yapılandırması: kesinti olmadan güvenli modernizasyon

Olgunlaşmış Delphi yazılımında bir veritabanı yeniden yapısı, bir 'SQL projesi' olmaktan ziyade işletim, arayüzler ve veri sorumluluğuna yapılan doğrudan bir müdahaledir. Bu makale riskleri nasıl kontrol edeceğinizi, göçleri nasıl test edilebilir hale getireceğinizi ve BT ile ilgili birimlerin günlük işleyişini nasıl istikrarlı kılacağınızı gösterir...

14.06.2026

Dergi konusundan proje pratiğine

İçeriğe Uygun Hizmet ve Teknik Sayfalar

Bir gelişmiş Delphi yazılımındaki veritabanı yeniden yapılandırması nadiren yalnızca tabloların değiştirilmesi veya „yeni bir şema“ olur. Pratikte veritabanına genellikle şirketin günlük işlemesinin bağlı olduğu her şey dayanır: belgeler, ana veriler, geçmiş kayıtlar, ERP/DMS/CRM ile arayüzler, raporlamalar, yetkilendirmeler ve son olarak geçiş sırasında işletmenin kararlı kalacağı beklentisi.

Birçok Delphi uygulaması yıllar içinde güvenilir şekilde büyümüştür. Bu onların gücüdür — ve aynı zamanda veritabanı değişikliklerini hassas kılan nedendir. İş mantığı sadece kodda değil, aynı zamanda saklı prosedürlerde, tetikleyicilerde, örtük konvansiyonlarda ve „her zaman böyle olmuş“ verilerde de saklıdır. Burada yapısızca modernizasyon yapanlar, kesintiler, tutarsız veriler ve haftalar sonra ortaya çıkabilecek uzun soluklu hata tabloları riski alır.

Bu yazı, BT yöneticileri, sistem yöneticileri ve teknik proje sorumluları için dayanıklı bir yaklaşımı anlatır: Yeniden yapılandırma nasıl planlanır, hangi teknik sınırlamalar işe yarar, taşınmalar nasıl test edilebilir hale gelir ve güvenlik, sürdürülebilirlik ile entegrasyon yeteneği nasıl belirgin şekilde iyileştirilir — tam bir Big-Bang yeniden başlatma zorunluluğu olmadan.

Neden Delphi projelerinde veritabanı yeniden yapılandırması özellikle kritik?

Delphi orta ölçekli işletmelerde ve uzmanlaşmış kurumsal ortamlarda süreç yakın iş yazılımının omurgası olarak sıkça kullanılır. Bu sistemlerin birçoğu, veritabanı erişimlerinin sıklıkla UI ve iş mantığıyla sıkı şekilde iç içe geçtiği bir dönemde tasarlanmıştır. Bundan kaynaklanan tipik riskler şunlardır:

  • Güçlü şekilde bağlı veri erişimleri: Formlar, raporlar, arka plan işler ve entegrasyon bileşenleri arasında dağıtılmış SQL ifadeleri. Bir şema değişikliği birçok yerde aynı anda etkili olur.
  • Yıllar içinde oluşmuş veri modelleri: „Universal-Tabellen“, sütunların çoklu kullanımının görüldüğü durumlar, karışık veri tipleri, eksik kısıtlamalar. Veriler işlevsel ancak doğrulanması zordur.
  • Gizli bağımlılıklar: Harici araçlar, Excel dışa aktarımları, üçüncü taraf sistemler veya toplu işler, belgelenmemiş bir şekilde sütun adlarına, sıralamalara veya kimliklere güvenir.
  • Sürekli yük altındaki işletme: Yeniden yapılandırma laboratuvarda yapılmaz. Üretimde kullanıcılar, işler, importlar, gece işlemleri ve sıkı zamanlanmış bakım pencereleri vardır.

Önemli nokta: Bir veritabanı yeniden yapılandırması bir mimari projedir. Veri sorumluluğunu, arayüz sözleşmelerini, işletme süreçlerini ve test edilebilirliği eş zamanlı olarak etkiler.

Hedefleri net tanımlayın: Yeniden yapılandırmadan sonra ne daha iyi olmalı?

Açık bir hedef tanımı olmadan yeniden yapılandırma hızla dipseze dönebilir. Pratikte aşağıdaki hedef kategorileri işe yaradığı görülmüştür; bunları önceden somutlaştırmalısınız:

1) İşletme & Kararlılık

Örnekler: daha kısa bakım pencereleri, tekrarlanabilir dağıtımlar, çekirdek işlemlerde daha iyi performans, daha az deadlock, planlanabilir Backup/RESTore süreleri, net rollback.

2) Bakım & Geliştirme

Örnekler: veritabanı versiyonlaması, izlenebilir migrasyonlar, veri erişiminde daha az „istisna durum“, net varlıklar, veri düzeyinde daha iyi test kapsamı.

3) Güvenlik & Uyumluluk

Örnekler: düzgün yetkilendirme (Least Privilege), denetim izi (değişikliklerin izlenebilirliği), diskte ve aktarım sırasında şifreleme, tenant ayrımı, kontrollü yönetici erişimleri.

4) Entegrasyon & Schnittstellenfähigkeit

Örnekler: stabil API’ler, net tanımlanmış veri hakimiyeti, raporlama ile operasyonel veritabanının ayrıştırılması, sağlam veri içe/dışa aktarma süreçleri.

Bu hedefler mimari kararları etkiler: örn. paralel işletimle bir geçiş aşamasına ihtiyacınız olup olmadığı, “Zero-Downtime”in gerçekçi olup olmadığı ya da planlı bir bakım penceresi kullanıp kullanmayacağınız.

Veritabanı yeniden yapılandırması, büyümüş Delphi-yazılımı: Typische Auslöser

Mevcut kurulumlarda sıkça tekrar eden tetikleyiciler görürüz; bunlar bir yeniden yapılandırmayı zorunlu kılabilir veya en azından ekonomik açıdan mantıklı hale getirebilir:

  • BDE-değişimi: Borland Database Engine işletme açısından risklidir (sürücüler, 32-bit bağımlılıklar, dağıtım). Modern ortamlar genellikle BDE-değişimi ile yerel entegrasyon (Delphi-veri erişim katmanı) ve yerel veritabanı sürücüleri üzerine kurulur.
  • Veritabanı sisteminin değişimi: örn. Firebird veya InterBase’den PostgreSQL veya SQL Server’a; genellikle işletme kavramları, HA/yedekleme stratejileri veya standartlaştırma tarafından yönlendirilir.
  • Ölçeklendirme sorunları: Veri hacmi, kullanıcı sayısı veya toplu işleme (batch) büyümesi indeksleme, kilitlenme ve sorgu planlarını sınırlarına getirir.
  • Çoklu kiracı desteği veya yetki modeli: Sonradan gelen gereksinimler, başlangıçta “ein Mandant, ein Standort” olan bir modele denk gelir.
  • Arayüz projeleri: Bir Müşteri portalı, yeni REST-servisler veya ERP entegrasyonları açık, kararlı veri sözleşmeleri gerektirir.

Önemli olan, tetikleyiciyi çözümle karıştırmamaktır. ‚PostgreSQL’e geçmek‘ bir hedef değil, bir araçtır. Hedef örn. daha iyi işletme, daha net yetkilendirme veya kontrollü genişletilebilirliktir.

Mevcut Durum Tespiti: Veri envanteri olmadan güvenilir bir plan yok

Güvenilir bir planlama soğukkanlı bir envanterle başlar. Aylar sürmesine gerek yok, ancak kritik bağımlılıkları görünür kılmalıdır:

Teknik Analiz

  • Şema haritası: Tablolar, görünümler, prosedürler, trigger’lar, indeksler, kısıtlar, sekanslar/Identity mekanizmaları.
  • Erişim yolları: SQL nerede çalıştırılıyor? UI, servisler, arka plan işleri, rapor oluşturucular, arayüzler, içe aktarıcılar.
  • İşlem sınırları: Hangi süreçler gerçek ACID-işlemleri gerektirir (atomik, tutarlı, izole, kalıcı)? Hangi durumlarda kısmi güncellemeler tolere ediliyor?
  • Performans sıcak noktaları: En ağır sorgular, kilit bekleme süreleri, uzun işlemler, gece işleri, büyük tablolar.

Fonksiyonel Analiz

  • Veri hakimiyeti: Hangi veriler için lider sistem kim? Neler ERP’den geliyor, neler yerelde yönetiliyor?
  • Geçmiş ve saklama: Hangi veriler denetime uygun olarak saklanmalı? Hangi veriler temizlenip/arşivlenebilir?
  • Kritik süreçler: Ay sonu kapanışı, sevkiyat, fatura işlemleri, üretim/BDE, sertifika veya doğrulama kanıtları.

Özellikle büyümüş Delphi-yazılımlarda işlevsel veri hakimiyeti genellikle örtük olur. Bunu netleştirmeyenler hızla “daha güzel tablolar” inşa eder ve sorunları sadece arayüzlere ve işletmeye kaydırırlar.

Veri erişimi için hedef mimari: Her şeyi yeniden yazmadan bağımsızlaştırma

Riski azaltmada en büyük etki kontrollü veri erişimidir. Burada önemli olan programlama dili değil, açık bir katman mantığıdır (çoğunlukla „Layer“-mimarisi olarak adlandırılır): UI/Client, İş mantığı, Veri erişimi. Bu katmanlar ne kadar iyi ayrılmış olursa, şema değişikliklerinde patlama yüzeyi o kadar küçük olur.

Delphi-ortamlarında bunun için sıkça bir konsolidasyon mantıklıdır: dağıtılmış “ad-hoc” SQL’lerden merkezi veri erişim noktalarına doğru. BDE-Ablosung mit nativer Anbindung bu konuda yardımcı olabilir; çünkü sürücüler, parametre bağlama, işlemler ve havuzlamayı daha yapılandırılmış gösterir. Belirleyici olan araç değil, kuraldır: Şema değişiklikleri UI içinde 200 noktada elle güncellenmek zorunda kalmamalıdır.

Pragmatischer Zwischenschritt: Datenbank-Fassade

Büyük bir refaktör mümkün değilse, bir veritabanı fasadı yardımcı olabilir: eski sütun adlarını/yapılarını geçici olarak yansıtan view’lar veya sinonimler, iç tarafta yeni model oluşurken. Bu kalıcı bir durum değildir, ancak geçişleri iteratif olarak yaymak için denenmiş bir yöntemdir.

Schema-Refactoring: Welche Umbauten sich lohnen – und welche gefährlich sind

Tadilatta tüm değişiklikler eşit değildir. Bazıları stabiliteyi ve veri kalitesini hızla artırır, bazıları ise yüksek yan etkilere sahiptir.

„Low Risk“-Verbesserungen mit hoher Wirkung

  • Kısıtlamalar eklemek: NOT NULL, Foreign Keys, benzersiz indeksler. Bunlar hataları daha erken görünür kılar ve “sinsi” tutarsızlıkları önler.
  • Veri tiplerini konsolide etmek: örn. tarih/zaman, sayısal tutarlar, ID’ler arasında net ayrım. Özellikle arayüzler ve raporlama için önemlidir.
  • Kullanıma göre indeksleme: İndeksler gerçek filtre ve join yolları boyunca, sezgilere göre değil.
  • Audit alanları eklemek: “kim/ne/ne zaman” bilgisini kaydeder (örn. ChangedAt, ChangedBy). Bu, işletme ve hata analizleri için son derece yardımcıdır.

Änderungen mit hohem Risiko (gezielt planen)

  • Birincil anahtar/ID stratejisini değiştirmek: örn. bileşik anahtarlardan surrogate (yerel) anahtarlara veya tersine geçiş. Bu, mantık, import/export ve referanslarda derin etki yapar.
  • Büyük alanların normalizasyonu: Konusal olarak mantıklı, ancak genellikle formlar, raporlar ve arayüzlerde büyük uyarlamalar gerektirir.
  • Mandant geçişi: Kiracı sütunları, satır düzeyinde güvenlik (Row-Level-Security), veri bölümlendirmesi – burada temiz bir yetkilendirme konsepti ve test vakaları gerekir.

Deneyimli bir yaklaşım, yeniden düzenlemeyi „Güvenlik ve işletme temeli“ (Kısıtlamalar, Denetim, Versiyonlama, Yetkiler) ve „İş modelinin optimizasyonu“ olarak ayırmaktır. Bu sayede her süreci hemen değiştirmek zorunda kalmadan erken, ölçülebilir fayda elde edilir.

Migrationsstrategie: Big Bang, Parallelbetrieb oder Schrittfolge?

Strateji seçimi risk, zaman çizelgesi ve işletme konsepti üzerinde belirleyicidir. Kurumlarda üç desen yaygındır:

1) Geplantes Wartungsfenster (klassische Cutover-Migration)

Uygulamayı dondurur, verileri ve şemayı göç ettirir, doğrular ve devreye alırsınız. Avantaj: net bir kesit. Dezavantaj: kesinti süresi ve cutover sırasında yüksek baskı.

2) Parallelbetrieb mit Synchronisation

Eski ve yeni veritabanı belirli süre paralel çalışır. Değişiklikler replike edilir veya bir senkronizasyon mantığıyla iletilir. Avantaj: daha az kesinti süresi. Dezavantaj: karmaşık çatışmalar, izleme ve veri egemenliği konusunda daha yüksek gereksinimler.

3) Schrittweise Migration pro Domäne

Fonksiyon alanlarını ardışık olarak taşırsınız (ör. önce temel veriler, sonra belgeler, sonra geçmiş). Avantaj: kontrol edilebilir, iyi test edilebilir. Dezavantaj: geçiş durumları net kurallar ve bazen geçici adaptörler gerektirir.

„Kesintisiz çalışma“ mümkündür, ancak nadiren ücretsizdir. Genellikle kısa, iyi hazırlanmış bir bakım penceresi, aylara yayılan paralel senkronizasyondan daha ekonomiktir.

Test edilebilirlik sağlamak: Migrationlar tekrarlanabilir ve doğrulanabilir olmalı

Bir veritabanı yeniden düzenlemesi nadiren eksik SQL bilgisinden başarısız olur; başarısızlığın nedeni çoğu zaman yetersiz doğrulanabilirliktir. İki ilke merkezi öneme sahiptir:

Migrationlar sürümlendirme olarak, el işi değil

„İsteme üzerine değişiklikler“ yerine şema değişiklikleri sürümlendirilmiş migrationlar olarak bulunmalıdır: açıkça numaralandırılmış, bağımlılıkları belgeleyen ve Test/Stage/Prod ortamlarında aynı şekilde çalıştırılabilir. Bu, denetimleri, geri almayı ve ekip çalışmasını kolaylaştırır.

İşe özgü kontrollerle doğrulama

Teknik kontroller (satır sayıları, Foreign-Key bütünlüğü) tek başına yeterli değildir. İşe özgü tutarlılıklar gereklidir: belgeler üzerindeki toplamlar, açık kalemler, stok seviyeleri, durum zincirleri. Bu kontroller otomatikleştirilebilir olmalı, en azından tekrarlanabilir raporlar/sorgular şeklinde uygulanabilmelidir.

Uygulamada işe yaradığı görülen bir „Migration-Runbook“ vardır: her Cutover için zamanlar, sorumlular, doğrulama sorguları, iptal kriterleri ve geri dönüş planı içeren bir kontrol listesi.

Betrieb & Administration: Yedekleme, Kurtarma, İzleme projenin bir parçası olarak

Bir yeniden düzenleme yalnızca tabloları değil, aynı zamanda işletme rutinlerini de değiştirir. Bu yüzden yönetim sürece erken dahil edilmelidir:

  • Yedekleme/Geri Yükleme stratejisi: Tam yedek, artımlı, Point-in-Time-Recovery. Kurtarmanın test edilmesi, yedeğin alınmasından daha önemlidir.
  • İzleme: Veritabanı metrikleri (Locks, Slow Queries, CPU/IO), iş çalışma süreleri, arayüzlerdeki hata oranları. Bir baseline olmadan „besser“ ölçülemez.
  • Bakım penceresi ve indeks bakımı: Rebuild/REINDEX, istatistik güncellemeleri, Vacuum/Autovacuum (bei PostgreSQL). Bunlar veri hacmine uygun olmalıdır.
  • Yetki ve rol modeli: Uygulama kullanıcıları, servis hesapları, admin ayrımı. Uygulamalarda „her şeye yetkili“ hesaplar olmamalıdır.

Özellikle tarihi olarak „gevşek“ bir kurulumdan geliyorsanız, yetki konsepti genellikle bir aydınlanma anıdır: birçok uygulama daha önce pratik olduğu için çok geniş haklarla çalışır. Yeniden düzenleme sırasında bunu düzgün hale getirmek için fırsat vardır.

Arayüzleri dikkate alma: Veritabanı nadiren tek sistemdir

Zaman içinde büyümüş kurumsal yazılımlarda arayüzler çoğunlukla hafife alınan kısımdır. Bir veritabanı yeniden düzenlemesi veri sözleşmelerini örtük olarak değiştirir: IDs, veri tipleri, durum mantığı, kayıt zamanları.

Eğer bir müşteri portalı, bir DMS veya bir ERP veri alıyorsa, bunun doğrudan veritabanına erişip erişmediği (kaçınılması gereken) yoksa tanımlı arayüzler (API, dosyalar, ETL) üzerinden olup olmadığı net olmalıdır. API burada „Application Programming Interface“ anlamına gelir; işletmede sabit bir sözleşme olarak önemlidir: girdiler, çıktılar, hata durumları, sürümlendirme.

Delphi-ortamları için servis katmanına doğru bir adım genellikle mantıklıdır: „Microservices“ modern geldiği için değil, veri erişimlerini ve doğrulamayı merkezileştirmenizi sağladığı için. Bu, gelecekteki veri değişikliklerinde saldırı yüzeyini azaltır.

Burada faydalı bir dahili bağlantı bağlamı örneğin sağlam entegrasyonlar ve veri akışlarının kurulumu üzerine bir yazı ya da Delphi modernizasyonu ile iş mantığının kaybı olmadan ilgili içerikler olabilir — her ikisi de aynı arama niyetine katkı sağlar.

Veri kalitesi ve temizlik: En zor kısım genellikle eski veri stoğudur

Birçok sistem, veriler düzgün olmasa bile çalışır: yinelenen ana kayıtlar, geçersiz referanslar, “toplu hesaplar”, kodlar yerine serbest metinler. Yeni bir şema bu sorunları görünür kılar – ve bunu planlarsanız bu iyidir.

Kanıtlanmış yaklaşım

  • Taşımadan önce profilleme: Gerçekte hangi değerler mevcut? Hangi alanlar uygulamada boş kalıyor? Aykırı değerler nerede?
  • Kurallar tanımlamak: Gelecekte neye izin verilecek? Neler otomatik düzeltilir? Neler manuel olarak temizlenmeli?
  • Arşiv konsepti: Her şeyin operasyonel veritabanında kalması gerekmez. Tarihçeler, raporlama ve denetimler çalıştığı sürece ayrı yapılara aktarılabilir.

Önemli: Veri temizliği bir iş sürecidir. IT kuralları teknik olarak uygulayabilir, ancak hangi düzeltmelerin kabul edilebilir olduğuna ilişkin karar iş birimi tarafından verilmelidir.

Yapı değişikliğinden sonra performans: sadece daha hızlı değil, daha öngörülebilir

Sık hedef “performansı artırmak”tır. Pratikte ise “öngörülebilirlik” daha önemlidir: stabil çalışma süreleri, ani sapmaların olmaması, ay sonu kapanışında deadlock’ların yaşanmaması.

Etkili olduğu görülen teknik önlemler:

  • Kısa işlemler: UI eylemleri, özellikle çok kullanıcılı ortamlarda, dakikalar süren işlemlerle kilitlenmemelidir.
  • Hedeflenmiş indeksler: Gerçek sorgulara dayanmalı ve yayınlamadan sonra izlenmelidir.
  • Operasyon ve raporlama ayrımı: Raporlama yükü operasyonel süreçleri bozabilir. Read-Replicas, ETL hatları veya ayrı raporlama tabloları tipik çözümlerdir.
  • Planlanabilir batch işleri: Net çalışma süreleri, loglama, yeniden başlatma ve alarm mekanizmalarına sahip işler.

Bir yeniden yapılandırma, yalnızca bireysel sorguların daha hızlı olmasıyla değil, işletmenin daha az beklenmedik durum üretmesiyle başarılı sayılır.

Risk ve Rollback-Planı: Acil çıkış işe başlamadan önce hazırlanmalı

Rollback kötümserliğin işareti değil, profesyonel risk yönetimidir. Sağlam bir plan şu soruları yanıtlamalı:

  • Ne zaman iptal edilir? Net iptal kriterleri (ör. doğrulama kontrolleri başarısız olursa, çalışma süresi eşik değeri aşılırsa).
  • Geri dönülecek nokta nedir? Eski veritabanının snapshot/backup’ı, tanımlı uygulama sürümü, konfigürasyon durumu.
  • Nasıl iletişim kurulur? Kim uzman birimi bilgilendirir, kim karar verir, kim belgelendirir?

Özellikle paralel işletim veya kademeli göçlerde rollback genellikle daha çok “rollforward” olur: hatayı düzeltir ve göçe devam edersiniz. Bunun da bir planı olmalı, böylece bir olay sürekli bir soruna dönüşmez.

Proje organizasyonu: Roller, sorumluluklar, karar noktaları

Bir veritabanı yeniden yapılandırması, sorumluluklar net olduğunda başarılı olur:

  • Teknik liderlik (Mimari): Hedef yapı, kılavuz ilkeler, migrasyonların gözden geçirilmesi.
  • DBA/Administration: İşletme konsepti, Backup/Recovery, Monitoring, performans baz çizgisi.
  • Fonksiyonel veri sorumluluğu: Veri kalitesi kuralları, fonksiyonel doğrulamanın kabulü.
  • Release-Management: Test ortamları, Staging, Cutover-Runbook, değişiklik iletişimi.

“Karar kapıları” işe yarar: Envanter sonrası, prototip migrasyonundan sonra, performans testlerinden sonra, cutover öncesi. Bu yaklaşım projeyi kontrol edilebilir kılar; süreç içinde yeni bulgular ortaya çıksa bile.

Sonuç: Aksiyonizme bağlı riskler yerine disiplinli modernizasyon

Bir veritabanı yeniden yapılandırması, zaman içinde büyümüş Delphi-yazılımında mümkündür, eğer bunu bir mimari ve işletme projesi olarak kurgularsanız: titiz envanter tespiti, net hedefler, versiyonlanmış migrasyonlar, güvenilir doğrulama ve gerçekçi bir cutover ve rollback konsepti. Teknik kazanım genellikle “sadece” yeni bir şemadan daha büyüktür: daha iyi veri kalitesi, daha kararlı arayüzler, kontrol edilebilir işletim ve modernizasyon adımlarının (örn. servisler, portallar, yeni istemciler) belirgin şekilde daha az riskli hale geldiği bir temel.

Eğer dönüşümünüzü yapılandırılmış şekilde hazırlamak istiyorsanız – BDE-değişimi üzerinden FireDAC-geçişine ve PostgreSQL veya SQL Server’a göçe kadar – bizimle yaklaşım, riskler ve gerçekçi bir göç yolu hakkında konuşun:

İşlevsel bağlamda Delphi modernizasyonu ve veri göçü de önemli bir rol oynar, özellikle entegrasyonlar, veri akışları ve devam eden geliştirme düzgün bir şekilde birlikte çalışmak zorunda olduğunda.

Proje veya modernizasyon girişimini Net-Base ile görüşün.

Sonraki adım

Konu gerçek bir projeye dönüştüğünde, mimari, mevcut sistemler ve işletme erken dönemde birlikte değerlendirilmelidir.

Bireysel sorularda destek vermekle kalmıyoruz; kaynak kodu parçacıklarından, legacy konularından veya portal fikirlerinden sağlam bir kurumsal projeye dönüşene kadar da destek veriyoruz.

  • Mevcut durum, hedef durum ve teknik riskler birlikte değerlendirilir.
  • REST, veri erişimi, portallar ve Rollout daha sonra ortaya çıkan sonuçlar olarak ertelenmez.
  • Hangi yolun ekonomik ve işletme açısından sürdürülebilir olduğunu erken görürsünüz.

Gönderiyi paylaş

Bu gönderiyi doğrudan paylaş

LinkedIn, X, XING, Facebook, WhatsApp ve e-posta hemen kullanılabilir. Instagram için bağlantıyı ve kısa metni doğrudan hazırlıyoruz.

E-posta

Instagram yeni bir sekmede açılır. Bağlantı ve kısa metin önceden panoya kopyalanır.