← Geri

2026-06-11

Stored Procedure'lar Ne Zaman Doğru Cevaptır, Ne Zaman Veritabanından Çıkmalı

2015 yıllarında bir yerlerde, stored procedure'ları ölü ilan etmek moda oldu. İş mantığı uygulama katmanına aitti. Veritabanları sadece aptal birer kalıcılık katmanıydı. ORM'ler bizi kurtaracaktı. Microservice'ler her şeyi orkestre edecekti.

Sonra bir Solvency II raporlama hattının 14 saat sürdüğünü gördüm; çünkü biri 80 milyon poliçe kaydını bir Python servisine çekip teknik karşılıkları satır satır hesaplamakta ısrar etmişti. Önceki PL/SQL uygulaması 22 dakikada çalışıyordu.

Soru, stored procedure'ların iyi mi kötü mü olduğu değildir. Soru, verinin nerede yaşadığı, ne kadarının hareket ettiği ve düzenleyici sunumu kimin imzaladığıdır.

Veriyi Taşımanın Maliyeti

Mimari tartışmaların çoğu fiziği göz ardı eder. Oracle'da 50 milyon işleminiz varsa ve bunları karşı taraf, para birimi ve risk sınıfına göre toplulaştırmanız gerekiyorsa, iki seçeneğiniz vardır:

İkinci seçenek sadece daha yavaş değildir. Mertebeler düzeyinde daha yavaştır ve daha önce var olmayan arıza modları ekler: akış ortasında ağ zaman aşımları, kısmi okumalar, uygulama katmanında bellek baskısı, idempotent olabilen veya olmayabilen yeniden deneme semantiği.

BDDK ve EIOPA raporlamasında, geriye dönük test için aynı hesaplamanın yıllarca tarihsel veri üzerinde gecelik çalıştırılması gerekebildiği durumlarda, bu fark akademik değildir. Düzenleyici son tarihten önce biten bir hat ile bitmeyen bir hat arasındaki farktır.

Stored Procedure'lar Ne Zaman Doğru Cevaptır

Bankalar ve sigortacılar için 13 yıldır raporlama altyapısı kurmanın ardından, örüntü tutarlı. Mantığı veritabanına ittiğiniz durumlar:

Veritabanından Ne Zaman Çıkmalı

Tersi de eşit derecede önemlidir. Mantığı dışarı çekin:

Gerçekten İşe Yarayan Hibrit

Uygulamada, düzenleyicilerle teması sağ atlatan raporlama hatları şöyle görünür:

Veritabanı, veritabanlarının iyi olduğu şeyi yapar. Uygulama katmanı, iyi olduğu şeyi yapar. Kimse tek bir aracın her sorunu çözdüğünü iddia etmez.

Gece 2 Testi

Gerçek karar kriteri şudur: gecelik çalıştırma sabah 2'de başarısız olduğunda ve birinin bunu sabah 8'deki düzenleyici sunumdan önce düzeltmesi gerektiğinde, nereye bakar?

Cevap "Veritabanı iş günlüğüne bakarım, başarısız prosedürü bulurum, hatayı okurum ve hangi 50 satırlık PL/SQL'i inceleyeceğimi tam olarak bilirim" ise, sürdürülebilir bir sisteminiz vardır.

Cevap "İsteği altı microservice üzerinden izlerim, dört sistemdeki günlükleri ilişkilendiririm, hangi container'ın öldüğünü çözerim ve sonra veri durumunu yeniden üretmeye çalışırım" ise, beyaz tahtada temiz görünen ama işletmesi düşmanca olan bir şey inşa etmişsiniz demektir.

Düzenleyici raporlama, mimari zarafet uğruna işletilebilirlikten ödün verilecek bir yer değildir. Denetçi sizin hexagonal architecture'ınızla ilgilenmez. Denetçi sayının doğru olup olmadığını ve nasıl hesaplandığını kanıtlayıp kanıtlayamadığınızı önemser.

Dürüst Çerçeve

Stored procedure'ların modern olup olmadığını sormayı bırakın. Şunları sormaya başlayın:

Bunları yanıtlayın, mantığın doğru yeri genellikle açık hale gelir. İdeoloji, sorunu yeterince düşünmediğinizde başvurduğunuz şeydir.