IMS Veritabanı Bağımlılık Analizi

IMS Veritabanı Bağımlılık Analizi: Modernizasyon Ekiplerinin Herhangi Bir Şeyi Taşımadan Önce Bilmesi Gerekenler

COM'DA Ağustos 4, 2026 , , ,

IMS, eskimiş anlamında bir miras sistemi değildir. Büyük bankaların alacak hesaplarının, sigorta şirketlerinin poliçe yönetiminin, sağlık hizmeti ödeme kuruluşlarının talep işleme süreçlerinin arkasındaki veritabanı motorudur. IBM onu geliştirmeye devam ediyor. Sorun IMS'nin çalışmayı bırakması değil, hiyerarşik segment ağaçlarında nasıl gezineceğini bilen her geliştiricinin emekli olması, IMS destekli bir sisteme yapılan her değişikliğin SQL içermeyen bir veri modelini anlamayı gerektirmesi ve IMS'yi ilişkisel bir veritabanı gibi ele alan her geçiş planının bu farkı acı bir şekilde keşfetmesidir.

Zor yol, geçiş sırasında bir COBOL programının IMS'ye basit bir anahtar aramasıyla değil, hedef sistemde eşdeğer gezinme mantığıyla tekrarlanması gereken hiyerarşik bir geçiş yoluyla eriştiğini keşfetmektir. Veya iki fiziksel IMS veritabanı arasındaki mantıksal bir ilişkinin, her iki veritabanının DBD'sinde tam olarak belgelenmeyen bir bağımlılık yarattığını ve geçişin her iki veritabanını da bağımsız olarak dönüştürürken, bu mantıksal ilişkiyi kullanan her programı sessizce bozduğunu keşfetmektir. Veya çoğu geçiş planının asla envanterine almadığı bir yapı olan ikincil bir indeks veritabanının, kritik bir raporlama programının verilerine ulaşmasının tek yolu olduğunu keşfetmektir.

Bu sürprizlerin hiçbiri, göç öncesi titiz bağımlılık analizine dayanamaz. Varsayımlara dayanabilirler.

Portföy Ölçeğinde IMS Bağımlılık Analizi

SMART TS XL Yalnızca COBOL kaynak kodunda görünmeyen, veritabanları arası IMS bağımlılıklarını tanımlar.

Daha fazla bilgi

IMS Bağımlılık Analizini Farklı Kılan Nedir?

İlişkisel veritabanı ortamları (DB2, Oracle, SQL Server) için bağımlılık analizi, iyi bilinen bir yolu izler. Uygulama kodundaki SQL'i ayrıştırın, tablo ve sütun referanslarını belirleyin, hangi programların hangi tablolara eriştiğinin bir haritasını oluşturun ve bu haritayı kullanarak geçiş kapsamını ve sırasını belirleyin. Yapı açıktır. Bağımlılıklar SQL metninde görünür.

IMS bağımlılık analizi her boyutta daha karmaşıktır.

Yapı hiyerarşiktir, ilişkisel değildir. Bir IMS veritabanı, her segment türünün tanımlanmış bir üst-alt ilişkisine sahip olduğu bir segment türü ağacı şeklinde düzenlenmiştir. Bir IMS veritabanından hasta kayıtlarını okuyan bir COBOL programı çalıştırılmaz. SELECT * FROM PATIENTS WHERE ID = ?Program, hiyerarşide kök segmente ulaşmak için Get Unique (GU) çağrısı yapar, ardından alt öğeleri dolaşmak için Get Next Within Parent (GNP) çağrıları yapar. Programın bağımlılığı bir tabloya değil, hiyerarşik bir yapıdaki belirli bir yola bağlıdır ve bu yapıyı değiştirmek, SQL düzeyinde hiçbir analizle tespit edilemeyecek şekillerde bu yapıda gezinen programları bozabilir.

Bağımlılıklar üç ayrı yapıya dağılmıştır. Bir COBOL programının IMS ile neler yaptığının tam resmini görebilmek için şunların analiz edilmesi gerekir:

  • Veritabanı Tanımlayıcısı (DBD): Fiziksel segment hiyerarşisini, anahtar alanları, erişim yöntemlerini (HDAM, HIDAM, HISAM, HSAM) ve ikincil indeksleri veya mantıksal ilişkileri tanımlar.
  • PSB (Program Spesifikasyon Bloğu): Bir programın hangi veritabanlarına, hangi PCB'ler aracılığıyla, hangi hassasiyet ve amaç özellikleriyle erişmesine izin verildiğini tanımlar.
  • COBOL kaynak kodu: Bu, hangi segmentlere hangi çağrı fonksiyonlarıyla, hangi sırayla ve hangi SSA'larla erişileceğini belirleyen gerçek DL/I çağrılarını içerir.

Tek bir kaynak, resmin tamamını içermez. Yalnızca COBOL kaynak kodunu okuyan analiz, çağrı türlerini ve segment adlarını görür, ancak fiziksel veritabanı yapısını göremez. Yalnızca DBD ve PSB dosyalarını okuyan analiz, programın yapmasına izin verilenleri görür, ancak gerçekte ne yaptığını göremez.

Navigasyon, konuma bağlıdır. İlişkisel bir veritabanında, her satır bağımsız olarak anahtar ile adreslenebilir. IMS'de, bir programın hiyerarşideki mevcut konumu, sonraki çağrıların ne döndüreceğini etkiler. Bir GN (Sonrakini Al) çağrısı, programın şu anda bulunduğu yerden hiyerarşik sıradaki bir sonraki bölümü döndürür. Bağımlılık yalnızca bölüm türüne değil, mevcut konuma götüren geçiş yoluna da bağlıdır. IMS'nin örtük hiyerarşik sıralamasına dayanan programların, eşdeğer bir sıralamanın garanti edilmediği ilişkisel bir veritabanına veri taşındığında ortadan kalkan bir bağımlılığı vardır.

DL/I Çağrı Envanteri: COBOL Kaynak Kodunun Ortaya Çıkardıkları

Göç öncesi en doğrudan faydalı analiz, IMS'ye erişen her COBOL programındaki her DL/I çağrısının eksiksiz bir envanteridir. Bu envanter, göç ekibine her programın IMS ile ne yaptığını, izin verilenleri (ki bu PSB tarafından tanımlanır) değil, fiilen ne yaptığını gösterir.

COBOL'da DL/I çağrıları iki biçimde karşımıza çıkar:

COBOL

* Form 1: EXEC DLI interface (CICS-compatible, high-level syntax)
       EXEC DLI
           GU DB2PCB
           SEGMENT(CUSTROOT)
           WHERE(CUSTID = WS-CUST-ID)
       END-EXEC

* Form 2: xxxTDLI call interface (batch programs, assembler-compatible)
       CALL 'CBLTDLI' USING WS-FUNCTION-CODE
                            PCB-CUSTOMER
                            WS-CUSTOMER-SEGMENT
                            WS-SSA-CUSTOMER

Her iki form da aynı analitik bilgileri içerir: fonksiyon kodu, kullanılan PCB, hedeflenen segment ve isteğe bağlı olarak çağrıyı nitelendiren SSA (Segment Arama Argümanı). Eksiksiz bir DL/I çağrı envanteri, tüm bu bilgileri her programdan çıkarır.

Fonksiyon Kodu Taksonomisi ve Göçün Etkileri

DL/I fonksiyon kodu, her çağrının geçiş açısından en önemli unsurudur. Her fonksiyon kodu, hedef ilişkisel veritabanında kopyalanması gereken farklı bir veri erişim modelini ifade eder:

Salt okunur işlevler: GUBenzersiz Değerleri Al: Nitelikli SSA'ları kullanarak doğrudan bir segmente gidin. İlişkisel terimlerle WHERE yan tümceli bir SELECT sorgusuna eşdeğerdir. Segment anahtarı, ilişkisel birincil anahtara düzgün bir şekilde eşleniyorsa, geçişi kolaydır.

GNSonrakini Al: Hiyerarşik sıradaki bir sonraki bölüme geç. Bu, doğrudan ilişkisel karşılığı olmayan, IMS'nin konum durumuna ve örtük sıralamasına dayanan fonksiyon kodudur. GN'yi yoğun olarak kullanan programlar, hangi sıralamaya bağlı olduklarının dikkatli bir analizini gerektirir.

GNPÜst öğe içindeki sonraki alt öğeleri al: Geçerli üst öğenin sonraki alt öğelerini alır. Yabancı anahtar ilişkisindeki tüm satırları getirmeye eşdeğerdir. Genellikle yabancı anahtar WHERE koşuluna sahip bir SELECT sorgusuna sorunsuz bir şekilde eşlenir.

Bekletme işlevleri (güncelleme için ön koşullar): GHU, GHN, GHNPGU, GN, GNP'nin eşdeğerleri olan "Hold" komutlarını alın. "Hold" bayrağı, bir güncelleme (REPL) veya silme (DLET) işleminin ardından geleceğini gösterir. Hold çağrılarını kullanan programlar okuma-değiştirme-yazma programlarıdır; geçiş, hold işlemi ve ardından gelen güncelleme boyunca işlem bütünlüğünü korumalıdır.

Güncelleme fonksiyonları: ISRTEkle: Yeni bir segment örneği ekler. INSERT ile eşdeğerdir. DLET, Sil: Mevcut tutulan segmenti ve ona bağlı tüm segmentleri kaldırır. "Tüm bağımlılar" davranışı, hedef sistemde açıkça uygulanması gereken IMS'ye özgü bir kademeli işlemdir. REPLDeğiştir: Mevcut tutulan bölümü yeni verilerle günceller. UPDATE ile eşdeğerdir.

Bu durum geçiş kapsamı için neden önemlidir: Yalnızca GU ve GNP çağrıları içeren bir program, IMS verilerinin salt okunur bir tüketicisidir, geçiş riski daha düşüktür ve doğrulanması daha basittir. GHU, REPL ve DLET kullanan bir program ise hiyerarşik yapıları değiştiren bir işlem işleme programıdır; geçişi, IMS'nin şu anda atomik olarak uyguladığı işlemler arasında işlem bütünlüğünün korunmasını gerektirir.

Her Göçü Engelleyen Üç Bağımlılık Türü

Mantıksal İlişkiler

IMS mantıksal ilişkileri, fiziksel olarak ayrı iki veritabanındaki segmentleri birbirine bağlar. Veritabanı A'daki mantıksal bir alt segmentin, Veritabanı B'de mantıksal bir üst segmenti vardır. Bir COBOL programı mantıksal bir ilişki üzerinden ilerlediğinde, fiziksel olarak veritabanı sınırlarını aşan bir yol izler; bu geçiş IMS tarafından şeffaf bir şekilde yönetilir, ancak veritabanları bağımsız olarak taşındığında bu geçiş ortadan kalkar.

Mantıksal ilişkiler, IMS geçişinde en yüksek riskli bağımlılık türüdür ve bunun bir nedeni vardır: COBOL kaynak kodunda görünmezdirler. COBOL programı, bir segmentin alt öğelerini almak için GNP'yi çağırır. Bu GNP'nin fiziksel bir üst-alt ilişkisini mi yoksa mantıksal bir ilişkiyi mi geçtiği, COBOL kodu tarafından değil, PSB ve DBD tarafından belirlenir. Yalnızca COBOL kaynak kodunu analiz eden bir geçiş ekibi, PSB ve DBD'yi ayrı ayrı analiz etmeden bir GNP çağrısının mantıksal bir ilişki sınırını geçtiğini bilemez.

Mantıksal ilişkiler kullanan programlar, geçiş işleminin hedef sistemde mantıksal ilişkinin anlamını (genellikle ilişkisel modeldeki bir JOIN işlemi) kopyalamasını ve ilişkiyi kullanan her programın, IMS mantıksal geçişinden aldığı JOIN işleminden eşdeğer sonuçlar aldığını doğrulamasını gerektirir.

İkincil İndeks Veritabanları

IMS ikincil indeks veritabanları, birincil veritabanına alternatif bir erişim yolu sağlayarak programların kök anahtar dışında bir alana göre bölümlere erişmesine olanak tanır. İkincil indeks veritabanı, kendi DBD'sine sahip ayrı bir IMS veritabanıdır, ancak verileri birincil veritabanından türetilir.

Göç ekipleri, ikincil indeks veritabanlarını genellikle planlama aşamasından ziyade analiz aşamasında keşfederler, çünkü:

  • Bunlar, her zaman birincil veritabanı DBD'leriyle gruplandırılmayan DBD'lerde tanımlanır.
  • İkincil dizinleri kullanan programlar, PSB dosyalarında dizin veritabanının adını belirtir; ancak ikincil bir dizin aracılığıyla birincil veritabanına giden programlar, COBOL kaynak kodunda bunu açıkça belirtmeyebilir.
  • Dokümantasyonda birincil veritabanı açıklanabilir ancak ikincil indekslerden bahsedilmeyebilir.

İkincil bir dizin aracılığıyla IMS'ye erişen bir programın, hedef sistemde birincil anahtar olmayan bir dizin veya farklı bir sorgu stratejisi olarak çoğaltılması gereken bir erişim modeli bağımlılığı vardır. Geçiş sırasında bunun eksik olması, hatasız çalışan ancak aradığı kayıtları bulamayan bir program üretir.

GSAM Veritabanları

GSAM (Genelleştirilmiş Sıralı Erişim Yöntemi) veritabanları, IMS'nin sıralı toplu işleme için arayüzüdür ve temelde COBOL toplu iş programlarının işlevsel olarak sıralı dosya G/Ç'si için DL/I çağrılarını kullanmasına olanak tanır. GSAM veritabanlarında segment hiyerarşileri yoktur; IMS'nin kurtarma ve yeniden başlatma yeteneklerinden yararlanmak için IMS aracılığıyla erişilen düz sıralı yapılardır.

GSAM veritabanlarını kullanan programlar, kurtarma davranışları için IMS'nin kontrol noktası/yeniden başlatma desteğine bağlı olan toplu iş programlarıdır. Geçiş işlemi, bu kurtarma davranışını korumalı veya hedef platformda eşdeğer bir mekanizma ile değiştirmelidir.

Göç Öncesi Bağımlılık Envanterinin Oluşturulması

Tam bir IMS bağımlılık analizi, birlikte geçiş kapsamını, riskini ve sırasını tanımlayan altı çıktı üretir.

Teslim Edilecek Ürün 1: PCB'den Veritabanına Eşleme

Her PSB'deki her PCB, belirli bir DBD'ye (belirli bir IMS veritabanına) eşlenir. Tüm PSB'lerdeki her PCB'yi listelemek ve her birini DBD'sine eşlemek, hangi programların hangi veritabanlarına erişmesine izin verildiğinin yetkili listesini oluşturur. Bu, kapsamı anlamanın başlangıç ​​noktasıdır, ancak programların gerçekte kullandıklarından daha fazla veritabanı içeren PSB'lere sahip olabileceği için gerçek bağımlılıkları abartır.

Teslim Edilecek Ürün 2: Program Başına Gerçekleşen Çağrı Envanteri

Her COBOL programının DL/I çağrılarını ayrıştırmak, gerçek kullanım listesini üretir: her programın hangi PCB'leri çağırdığı, hangi fonksiyon kodlarını kullandığı, hangi segment türlerine eriştiği ve nitelikli SSA'ları (segment anahtar erişimi) mı yoksa niteliksiz gezinmeyi (konumsal geçiş) mi kullandığı. Bu, kapsamı PSB tanımlı izinlerden gerçek program davranışına daraltır.

Teslim Edilecek Ürün 3: Mantıksal İlişki Kullanım Haritası

Çağrı envanterinin DBD'lerle karşılaştırılması, hangi programların GNP veya GN çağrılarının mantıksal ilişkiler üzerinden geçtiğini belirler. Bu, yalnızca COBOL kaynak kodunu ve PSB'yi değil, aynı zamanda hangi üst-alt ilişkilerinin fiziksel, hangilerinin mantıksal olduğunu tanımlayan DBD yapılarını da analiz etmeyi gerektirir.

Teslim Edilecek Ürün 4: İkincil İndeks Kullanım Haritası

PSB'lerinde ikincil dizin veritabanlarını adlandıran veya kök olmayan anahtar alanlarına referans veren SSA'larla çağrı yapan programlar, ikincil dizin kullanıcıları olarak tanımlanır. Harita, hangi ikincil dizinlerin mevcut olduğunu, hangi birincil veritabanlarını desteklediklerini ve hangi programların bunlara bağlı olduğunu belgeler.

Teslim Edilecek 5: Veritabanına Göre Çağrı Türü Dağılımı

Kapsam dahilindeki her bir IMS veritabanı için, ona erişen tüm programlardaki çağrı türlerinin dağılımı, geçişin karmaşıklığını gösterir:

  • Yalnızca okuma fonksiyonları (GU, GN, GNP) aracılığıyla erişilen veritabanlarının taşınması daha kolaydır.
  • Bekletme fonksiyonları ve güncellemeler (GHU + REPL, GHN + DLET) tarafından erişilen veritabanları, işlem bütünlüğü replikasyonu gerektirir.
  • Yüksek GN kullanımına sahip veritabanları, sıralama analizi gerektiren konumsal navigasyon bağımlılıklarını gösterir.
  • Mantıksal ilişkilere sahip veritabanları, hedefte veritabanları arası JOIN semantiği gerektirir.

Teslim Edilecek 6: Program Risk Sınıflandırması

Çağrı türü dağılımı ve bağımlılık türü envanteri kullanılarak, her program geçiş riski açısından sınıflandırılır:

Yalnızca nitelikli SSA'lara sahip GU ve GNP kullanan, mantıksal ilişkiler içermeyen tek bir veritabanına erişen ve bekleme/güncelleme çağrıları yapmayan programlar, erken geçiş dalgaları için en düşük riskli adaylardır. GN'yi yoğun olarak kullanan, mantıksal ilişkiler yoluyla birden fazla veritabanına erişen veya karmaşık bekleme/güncelleme dizileri gerçekleştiren programlar ise, geçiş öncesinde en kapsamlı analiz ve doğrulamayı gerektiren en yüksek riskli programlardır.

Analizin Göç Planlaması Hakkında Değiştirdikleri Neler?

Bağımlılık analizi sadece var olanı belgelemekle kalmaz, sonrasında alınan kararları da değiştirir.

Sıralama kararları. Mantıksal ilişkiler yoluyla IMS veritabanlarını paylaşan programlar bağımsız olarak taşınamaz. Eğer Program A, Program B'nin kök segmentiyle aynı veritabanında mantıksal bir üst segmenti olan mantıksal bir alt segmenti okuyorsa, A'yı B'yi taşımadan (veya bir köprü oluşturmadan) taşımak A'yı bozar. Bağımlılık grafiği, hangi programların birlikte taşınması gerektiğini belirler.

Hedef tasarım kararları. Çağrı türü dağılımı, hedef ilişkisel şemanın nasıl yapılandırılması gerektiğini belirler. Yalnızca anahtar nitelikli GU ve GNP çağrıları aracılığıyla erişilen hiyerarşik bir üst-alt ilişki, hedefte yabancı anahtar ilişkisine temiz bir şekilde çevrilir. Konumsal bağımlılıklarla GN çağrıları aracılığıyla erişilen aynı ilişki, hedef şemanın eşdeğer sıralamayı korumasını gerektirir; bu, açık ORDER BY, bir sıra alanı veya aynı sonucu elde eden farklı bir erişim modeli aracılığıyla olabilir.

Doğrulama kapsamı kararları. Analiz, hangi programların IMS verilerinin salt okunur tüketicileri ve hangilerinin işlemcileri olduğunu belirler. Salt okunur programlar, orijinal IMS sistemi ile taşınan sistem arasındaki çıktı sonuçları karşılaştırılarak doğrulanabilir. İşlemciler, hedef sisteme karşı aynı işlem dizisinin orijinal sisteme eşdeğer veri durumu değişiklikleri ürettiğinden emin olmak için işlemsel eşdeğerlik testine ihtiyaç duyar.

Risk sınıflandırması. Mantıksal ilişki ve ikincil indeks bulguları, risk sınıflandırmasının birincil girdileridir. Her geçiş programının bir risk kaydı vardır. IMS bağımlılık analizi, ekibe hangi girdilerin bu kayda ekleneceğini söyler.

Ne kadar SMART TS XL IMS Bağımlılık Analizi gerçekleştirir.

SMART TS XL'S statik kod analizi Bu araç, her bir COBOL programının DL/I çağrılarını (hem EXEC DLI hem de xxxTDLI çağrı arayüzü biçimleri) ayrıştırarak, her çağrıdan fonksiyon kodunu, PCB referansını, segment adını ve SSA yapısını çıkarır. Bu sayede, çalışan bir IMS sistemine veya manuel kod incelemesine gerek kalmadan, tüm COBOL portföyünde program düzeyinde gerçek çağrı envanteri oluşturulur.

Uygulama bağımlılık eşlemesi, bu envanteri programlar arası bir bağımlılık grafiğine genişletir: hangi programlar hangi IMS veritabanlarına erişimi paylaşır, hangi programlar aynı PCB'leri kullanır, hangi programların erişim kalıpları koordineli geçiş gerektiren şekillerde örtüşür. Mantıksal bir ilişki veritabanları arasında segmentleri birbirine bağladığında, bağımlılık haritası bu veritabanları arası bağlantıyı hedef sistemde korunması gereken açık bir ilişki olarak temsil eder.

Etki analizi özelliği, herhangi bir veritabanı dönüştürülmeden önce her geçiş ekibinin yanıtlaması gereken soruyu yanıtlar: Bu IMS veritabanı taşınırsa, hangi programlar etkilenir, hangi erişim kalıpları kopyalanmalıdır ve eşdeğerliği doğrulamak için hangi test senaryoları doğrulanmalıdır. Yanıt bir tahmin değil, gerçek DL/I çağrı envanterinden türetilen numaralandırılmış bir listedir.

JCL genişletme özelliği, operasyonel bağlamı ekler: hangi JCL iş adımları, IMS'ye erişen hangi programları hangi sırayla ve hangi PSB özellikleriyle çağırır. Operasyonel bağımlılık zinciri, yani IMS verilerini birden fazla program aracılığıyla işleyen toplu iş dizisi, program düzeyindeki erişim kalıpları kadar geçiş planlaması için önemlidir. Veritabanını çevreleyen toplu iş düzenlemesini taşımadan veritabanını taşımak, kayıtları tek başına doğru şekilde işleyen ancak iş dizisi çalıştırıldığında üretimde başarısız olan bir sistem üretir.

Ekipler için miras modernizasyonu IMS destekli sistemlerde, üretilen yapısal kanıtlar SMART TS XL Bu, sonraki her geçiş kararının girdisidir: hangi programlar hangi dalgada geçiş yapacak, hangi veritabanları bağımsız olarak dönüştürülebilir ve hangileri koordineli dönüştürme gerektirir, hangi erişim modelleri doğrudan çeviri yerine yeniden mimarileştirme gerektirir. Açıklandığı gibi, IMS ve VSAM yapılarının COBOL programlarıyla birlikte taşınmasıCOBOL programları ile eski veri yapıları arasındaki bağlantı, veri geçişi ve kod analizinin paralel olarak ilerlemesi gerektiği anlamına gelir; bağımlılık envanteri ise paralel planlamayı mümkün kılan mekanizmadır.

Envanter, Göç Değildir

IMS bağımlılık analizi bilgi üretir. Geçiş işlemi yine de kararlar, mühendislik ve doğrulama gerektirir. Analizin değiştirdiği şey, kararların kalitesi, mühendislik kapsamının eksiksizliği ve doğrulamanın güvenilirliğidir.

IMS veritabanlarını başarıyla taşıyan kuruluşlar, en agresif zaman çizelgelerine veya en büyük taşıma bütçelerine sahip olanlar değil, taşıma işlemine başlamadan önce sahip olduklarını bilenlerdir: her veritabanına erişen her program, her programın erişim modelini ortaya koyan her fonksiyon kodu, veritabanları arası bağımlılıklar yaratan her mantıksal ilişki, açık çoğaltma olmadan dönüştürmeden sağ çıkamayacak bir erişim yolu sağlayan her ikincil indeks.

Bu bilgi dokümantasyondan gelmez. Kodun çözümlenmesinden gelir.