progressokulu.com Advanced Business Language Slide 8

442 views

Published on

"ABL'e Giriş Eğitimi" nde kullandığımız 8. Bölüm sunumudur.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

progressokulu.com Advanced Business Language Slide 8

  1. 1.
  2. 2. Bölüm 8 : Kayıt Kilitlerini Yönetmek<br />Bu dersi tamamladığımız zaman şunları yapabileceksiniz;<br /><ul><li>Çok kullanıcılı bir ortam oluşturmak
  3. 3. Devamlılığı ve kayıt kilitlerini açıklamak
  4. 4. Optimistik kilit stratejisini uygulamak
  5. 5. Transaction kapsamı < kayıt kapsamı durumunda devamlılığı artırmak</li></li></ul><li>Veritabanı broker’ı<br />Server<br />Çok Kullanıcılı Veritabanı<br />CONNECT sports2000<br />CONNECT sports2000<br />Veritabanı<br />CONNECT sports2000<br />Paylaşılan bellek<br />Sunucu makine<br />
  6. 6. Server<br />Çok Kullanıcılı Veritabanını Başlatmak<br />proserve sports2000<br />Veritabanı broker’ı<br />Veritabanı<br />Paylaşılan bellek<br />Sunucu makine<br />
  7. 7. Server<br />Çok Kullanıcılı Bir Veritabanına Bağlanmak<br />Veritabanı broker’ı<br />Veritabanı<br />Paylaşılan bellek<br />Sunucu makine<br />
  8. 8. İki İstemci Oturumu Başlatmak<br />İstemci oturumlarını ikisiyle birlikte çalışacak şekilde ayırın<br />
  9. 9. 1 Fins 24.00<br />1 Fins 24.00<br />1 Fins 24.00<br />Çok Kullanıcılı Erişimi Yönetmek<br />Devamlılık<br />İki kullanıcı da kaydı<br />okuyabilir<br />Veri bütünlüğü<br />Biri kayda eriştiğinde diğeri aynı kayda yazamaz<br />
  10. 10. Varsayılan Kilitleme<br />Kaydı SHARE-LOCK ile okuma<br />REPEAT:<br /> PROMPT-FOR Customer.CustNum.<br /> FIND Customer USING CustNum NO-ERROR.<br /> IF AVAILABLE Customer THEN DO: <br /> DISPLAY Name Discount CreditLimit.<br /> UPDATE Discount CreditLimit.<br /> END.<br />END.<br />SHARE-LOCK kilidini bir EXCLUSIVE-LOCK kilidine yükseltme isteği<br />
  11. 11. 1 Fins 24.00<br />1 Fins 24.00<br />1 Fins 24.00<br />Önerilen Kilitleme<br />A Kullanıcısı<br />B Kullanıcısı<br />A kullanıcısı kaydı değiştirirken EXCLUSIVE-LOCK kilidine sahiptir<br />B kullancısı kaydı okurken NO-LOCK düzeyindedir<br />
  12. 12. Bir Kayıt Kapsamı Ne Anlama Gelir?<br />forord:<br />FOR EACH Order WHERE OrderNum < 5:<br /> DISPLAY OrderNum Terms SalesRep. <br />forline:<br /> FOR EACH OrderLine OF Order, EACH ITEM OF OrderLine:<br /> DISPLAY Linenum FORMAT ">9" LABEL "Line#“ <br />Item.Itemnum FORMAT ">>9" LABEL "Item #" <br />Item.ItemName FORMAT "x(10)"<br />Item.Price FORMAT ">>9.99"<br /> Qty FORMAT ">>>".<br />UPDATE Discount FORMAT ">9%".<br /> END. /*forline*/<br />END. /*forord*/<br />Order<br />OrderLine<br />Item<br />???<br />
  13. 13. OrderLine<br />Item<br />Order<br />Kayıt Kapsamını Belirlemek<br />Order kayıt kapsamı<br />forord:<br />FOR EACH Order WHERE OrderNum < 5:<br /> DISPLAY OrderNum Terms SalesRep.<br />forline:<br /> FOR EACH OrderLine OF Order, EACH ITEM OF OrderLine:<br /> DISPLAY Linenum FORMAT ">9" LABEL "Line#" <br />Item.ItemnumFORMAT ">>9" LABEL "Item #" <br />Item.ItemNameFORMAT "x(10)"<br />Item.PriceFORMAT ">>9.99"<br /> Qty FORMAT ">>>".<br /> UPDATE Discount FORMAT ">9%".<br /> END. /*forline*/<br />END. /*forord*/<br />OrderLineve Item kayıt kapsamı<br />Ayrıca transaction kapsamı<br />
  14. 14. Kayıt kapsamı transaction kapsamına eşit<br />Transaction kapsamı daha büyük<br />Kayıt kapsamı daha büyük<br />Kayıt Kapsamı ve Transaction Kapsamı<br /> <br />T<br />R<br />T<br />R<br />T<br />R<br />
  15. 15. Alt-prosedur’ler ve Kayıt Kilitleme<br />Transaction kapsamı<br />/* Main procedure eRunTrans.p */<br />REPEAT:<br /> PROMPT-FOR Customer.CustNum.<br /> . . . <br /> SET CreditLimit.<br /> . . .<br /> DO:<br />RUN eUpdOrder.p(. . .).<br /> END.<br />END.<br />/* Sub-procedure eUpdOrder.p */<br />. . .<br />FOR EACH Order OF Customer:<br /> . . .<br /> SET Carrier.<br /> FOR EACH OrderLine OF Order:<br /> . . .<br /> ASSIGN Orderline.Price = ITEM.Price.<br /> . . .<br /> END.<br />END.<br />Siparişler ve ayrıntılarındaki tüm kilitler bu noktada serbest bırakılır<br />
  16. 16. Customer<br />Customer<br />5 Match Point Tennis JAL 5000<br />5 Match Point Tennis JAL 1000<br />Record Locking Contention<br />İstemci oturumu 1<br />İstemci oturumu 2<br />
  17. 17. Uygulama 1 : Kayıt Kapsamı ve Kilitleme Düzeyini Belirleme<br />
  18. 18. 1 Fins 24.00<br />1 Fins 24.00<br />1 Fins 24.00<br />Deadlock<br />A kullanıcısı<br />B kullanıcısı<br />A kullanıcısıSHARE-LOCK<br />B kullanıcısı SHARE-LOCK<br />Kullanıcı kilidi bırakana kadar diğer kullanıcı kayda yazamaz<br />
  19. 19. 1 Fins 24.00<br />1 Fins 24.00<br />1 Fins 24.00<br />1 Fins 24.00<br />1 Fins 24.00<br />1 Fins 36.00<br />1 Fins 24.00<br />1 Fins 36.00<br />1 Fins 24.00<br />Kilitleme Stratejileri<br />SHARE-LOCK<br />SHARE-LOCK<br />Varsayılan kilitleme<br />EXCLUSIVE-LOCK<br />NO-LOCK<br />Kötümser kilitleme<br />NO-LOCK<br />NO-LOCK<br />EXCLUSIVE-LOCK<br />İyimser kilitleme<br />
  20. 20. Customer<br />Customer<br />5 Match Point Tennis JAL 1000<br />İstemci oturumu 1<br />İstemci oturumu 2<br />Varsayılan Kilitleme Metodunu Değiştirme<br />FIND Customer USING CustNum NO-LOCK:<br />5 Match Point Tennis JAL 1000<br />
  21. 21. 1 Fins 24.00<br />1 Fins 24.00<br />1 Fins 24.00<br />İyimser Kilitleme – Optimal Devamlılık<br />A kullanıcısı<br />B kullanıcısı<br />A kullanıcısı SHARE-LOCK<br />B kullanıcısıSHARE-LOCK<br />Diğer kullanıcı SHARE-LOCK düzeyini bıraktıktan sonra kullanıcının kaydı değiştirmek için EXCLUSIVE-LOCK düzeyine yükselmeye ihtiyacı vardır<br />
  22. 22. İyimser Strateji İçin Best Practise<br />Kaydı NO-LOCK NO-ERROR ile çek<br />Kullanıcı girdisini bekle<br />Kaydı yeniden NO-LOCK ile çek<br />ya da<br />Kaydı RELEASE et<br />TRANSACTION bloğu:<br />Kaydı EXCLUSIVE-LOCK ile çek<br />Varlığını doğrula<br />Değişiklikleri kontrol et<br />Aksi takdirde transaction’ı geri al<br />Değişiklikleri kaydet<br />
  23. 23. EXCLUSIVE-LOCK ile FIND CURRENT<br />Kullanıcı kaydı DEĞİŞTİREMEZ<br />PROMPT-FOR Customer.CustNum.<br />FIND Customer USING CustNum NO-LOCK NO-ERROR.<br />. . .<br />. . . <br />FIND CURRENT Customer EXCLUSIVE-LOCK NO-ERROR.<br />Kullanıcı kaydı DEĞİŞTİREBİLİR<br />
  24. 24. Customer<br />Customer<br />5 Match Point Tennis JAL 1000<br />Kayıt Değişti mi?<br />IF NOT CURRENT-CHANGED Customer THEN...<br />Orijinal değerler<br />Veritabanı<br />Şimdiki değerler<br />(değişmiş olabilir)<br />5 Match Point Tennis JAL 1000<br />
  25. 25. Kayıt Kullanılabilir Durumda mı?<br />FIND CURRENT Customer EXCLUSIVE-LOCK NO-ERROR.<br />IF AVAILABLE Customer THEN . . .<br />Evet<br />?<br />Hayır<br />Şimdi ASSIGN edilebilir<br />Kullanıcıyı bilgilendir<br />
  26. 26. Customer<br />Kayıt Kilit Mi?<br />FIND Customer USING CustNum.<br />Varsayılan kilit = SHARE-LOCK<br />5 Match Point Tennis JAL 1000<br />FIND CURRENT Customer EXCLUSIVE-LOCK NO-WAIT NO-ERROR.<br />IF LOCKED Customer THEN...<br />
  27. 27. Yeniden dene?<br />Kilitlendi mi, Yoksa Silindi Mi?<br />Kilitli mi?<br />Hayır<br />Evet<br />Kayıt silinmiş<br />Evet<br />Retry bayrağını ayarla<br />
  28. 28. Uygulama 2 : Kaydın Kilitli Olup Olmadığını Öğrenme<br />
  29. 29. İyimser Kilitleme – Tümü Birarada<br />Kaydı NO-LOCK NO-ERROR ile çek<br />Kullanıcı girdisini bekle<br />Kaydı yeniden NO-LOCK ile çek<br />ya da<br />Kaydı RELEASE et<br />TRANSACTION bloğu:<br />Kaydı EXCLUSIVE-LOCK ile çek<br />Varlığını doğrula<br />Değişiklikleri kontrol et<br />Aksi takdirde transaction’ı geri al<br />Değişiklikleri kaydet<br />
  30. 30. İyimser Kilitleme – Tümü Birarada<br />
  31. 31. Uygulama 3 : İyimser Kilitlemeyi Kullanmak<br />
  32. 32. Server<br />Broker<br />Bir BROKER’ı Başlatmak ve Durdurmak<br />proservesports2000<br />Veritabanı<br />Paylaşılan bellek<br />proshutsports2000<br />Sunucu makine<br />Paylaşılan bellek<br />Sunucu makine<br />
  33. 33. Uygulama 4 : Bir Veritabanı BROKER’ını Durdurmak<br />

×