Pages

Monday, June 17, 2013

Transaction Processing ගැන ඉගෙන ගනිමු.


transaction management කියන්නෙ   ව්්යාපාර කටයුතු වලට අදාල applications develop කරද්දි අතිශයින්ම වැදගත් වෙන දෙයක්.මූල්්ය,බැංකු සහ e-commerce වැනි ක්ශේත්‍රයන්හි  යෙදෙන බොහෝමයක් applications රදා පවතින්නෙ මේ සංකලප මත.අපි අද ඉන් කිහිපයක් ගැන ටිකක් හොයල බලමු.මේ ලිපි මාලාව කොටස් කිහිපයකින් ඉදිරිපත් කරන්නයි කල්පනා කලේ.

  1.   transaction එකක් කියන්නෙ මොකද්ද? මොනවද මේ ACID ?
  2.   transactional applications develop කරද්දි එන ගැටලු මොනවාද?  transaction     management middleware වැදගත් වන්නේ ඇයි?
  3.   transaction processing application එකක සාමාන්්ය ආකෘතිය මොකක්ද? මේ ආකෘතියේ විවිධ කොටස් වල කාර්යභාරය මොකක්ද?
  4.  transaction management systems හා බැදි සංකල්ප මොනවාද?
  5.   transaction management විශයෙහි ලා සැලකෙන standards මොනවාද?
transaction එකක් යනු කුමක්ද?
enterprise applications වලදි නිතරම,,, application එකේ කොටස් ගනනාවක් පුරා පැතිරී පවතින දත්ත වලට සමගාමී ලෙස (concurrently) access කරන්න වෙනවා,එම දත්ත මත විවිද operations-ක්‍රියාවලි සිදු කිරීමට.එහෙම කරද්දි ඒ දත්ත වල පරිපූර්නභාවය(integrity) රැක ගන්න ඕනා, විශේෂයෙන් මෙන්න මේ තත්ව යටතේදී,

  • application components ගනනාවක් මගින් එකම දත්ත මූලයක් (resource එකක්) access කරන කොට.
  • පැතිරී පවතින  දත්ත මූලයන් (resource) ගනනාවක් ,එකම application component එකෙන් access කරන කොට.
මෙවැනි සිද්ධියකදී, පැතිරී පවතින data resources මත ක්‍රියාවලි ගනනාවක් සිදු වෙනවා විය හැකියි.ඒ හැම operation එකක්ම එකම කාර්ය ඒකකයක [one unit of work] කොටස් ලෙසයි සලකන්නෙ.එක් එක් operation එක හරියට සම්පූර්න කිරීම හෝ නොකිරීම මත අදාල කාර්ය ඒකකය සිදු වෙනවද නැද්ද කියන එක තීරනය වෙනවා.එක operation එකක් හරි fail වුනොත් එම කාර්ය ඒකකය (transaction එක) සිදුවෙනවා  බොරු. මේ ප්‍රශ්නය තවත් උග්‍ර වෙන්නෙ,

  • data resources රැසක් මත යැපෙන, පැතිර පවතින application components ගනනාවක් පුරා අනු ක්‍රියාවලීන් දිවෙන ආකාරයෙන් පිහිටන transactions වලදී ..
  • එම අනු ක්‍රියාවලීන්(operations) එකක් පසු එකක් ලෙස හෝ,සමාන්තර ලෙස ක්‍රියා කරවීමට නිසි ලෙස කාලය වෙන් කරගත යුතුයි වගේම,පාලනයක් තිබිය යුතුයි.(coodination and synchronization) 
එක් එක් කාර්ය කොටස නිසි ලෙස සම්පූර්න වීම, application එකට බල පානවා.හදිසියේ වත් එක කාර්ය කොටසක්( transaction )හරි  fail වුනොත්, එයට සම්බන්ධ වූ සියලු data resources වල අගයන් fail වූ transaction එක පටන් ගන්න කොට තිබුනු මුල් අගයන් කරා ගෙන යා යුතු වෙනවා. transaction සංකල්ප හා transaction කලමනාකරන විධි දැන ගන්න ඕන වෙන්නෙ මෙන්න මෙතනදි.

"""A transaction is a unit of work """    transaction එකකට මෙන්න මේ ගති ගුන තියෙන්න ඕනේ.

  • Atomicity        - transaction එකක් එකක් ඉවර කරනව නම්, ඉවර වෙන්නම කරන්න      ඕනා.කර ගන්න බැරි වුනොත් එච්චරයි.අතර මැදි තත්ව ගනන් ගන්නෙ නෑ. එක්කො 1, නැත්නම් 0 වගේ.කිසිම සැකයක් තියෙන්න බෑ. ඒවගෙම transaction එකක් fail වුනාම ඒකට සම්බන්ද වුනු සියලු data නැවත පෙර තත්වයට ගෙන යා යුතුයි.
  • consistency         - data  මත අප විසින් විචල්ය නොවිය යුතු යැයි define  කරනු ලැබූ (integrity constraints) උදා: primary keys,foriegn keys,not null,unique constraints properties transaction එක පුරා දිගටම ආරක්ශා කර ගත යුතු වෙනවා. එනම් transaction එකකින් පසු data තිබිය යුත්තේ ස්ථාවර මට්ටමකයි.තව දුරටත් කියනවා නම් transaction එකකින් අනතුරුව system එක පරිවර්තනය වෙන්නේ එක්තරා ස්ථාවර මට්ටමක සිට තවත් ස්ථාවර මට්ටමකටයි.
  • Isolation            -එකම පරිසරයක් තුල සමගාමීව execute වෙන transactions වුනත් එකිනෙක මත බලපැමක් ඇති නොවන ආකාරයට ස්වාධීනව සිදු විය යුතුයි.[1] එනම් transaction එකක් අතරතුරදී එහි අතරමැදි තත්වය (state) අනෙකුත්  transactions  වලට නිරාවරනය නොවිය යුතුයි.  [2] එකම දත්තයක් මත එකවිට සම ගාමී transactions දෙකක් සිදු විය නොහැකියි.මෙය ඉටු කර ගැනීම සඳහා DBMS විසින් යොදා ගනු ලබන්නේ Locking කියා ක්‍රම ශිල්පයක්.          
  • Durability             -transaction එකකින් පසු එහි බල පෑම පද්ධතිය මත බල පැවැත්විය යුතුයි.


මෙම ACID properties මගින් තහවුරු කරනු ලබන්නේ transaction එකක් කිසිදා අසම්පූර්නව නොපවතින බව පමනක් නොවේ.data අස්ථාවරව නොපවතින බව,සමගාමීව සිදු වන transactions  එකිනෙකින් ස්වාධීන බව, වගේම එහි බලපෑම පද්දතිය තුල රඳන බවත් කියවෙනවා.

transactions ගැන තවත් කරුනු අලුත් post එකකින් කතා කරමු.
                                                 

                                                                                    අචිනි  
                                                                                          







Don't forget to become a follower of SeethaGangula.!!!

No comments:

Post a Comment