එකම දේ කිරීම නතර කරන්නේ කෙසේද

ඔබ සාමාන්‍ය මෙහෙයුම් නැවත නැවතත් කිරීමට කැමතිද? ඉතින් මම එහෙම කරන්නේ නැහැ. නමුත් Rostelecom ගබඩාව සමඟ වැඩ කරන විට SQL සේවාලාභියාගේ සෑම අවස්ථාවකදීම, මම වගු අතර ඇති සියලුම සම්බන්ධ කිරීම් අතින් ලියාපදිංචි කිරීමට සිදු විය. 90% ක්ම වගු සම්බන්ධ කිරීම සඳහා ක්ෂේත්‍ර සහ කොන්දේසි විමසුමෙන් විමසුමට සමපාත වුවද මෙය සිදු වේ! ඕනෑම SQL සේවාදායකයකුට ස්වයංක්‍රීයව සම්පූර්ණ කිරීමේ කාර්යයන් ඇති බව පෙනේ, නමුත් ගබඩා සඳහා එය සැමවිටම ක්‍රියා නොකරයි: කාර්ය සාධනය වැඩි දියුණු කිරීම සඳහා ඒවාට අනන්‍ය බාධාවක් සහ විදේශීය යතුරක් ඇතුළත් වන්නේ කලාතුරකිනි, මෙය නොමැතිව එක් එක් ආයතන සම්බන්ධ වන්නේ කෙසේදැයි වැඩසටහන නොදනී. වෙනත් සහ ඔබට පිරිනැමීම සඳහා එය කළ හැකි දේ.

එකම දේ කිරීම නතර කරන්නේ කෙසේද

ප්‍රතික්ෂේප කිරීම, කෝපය, කේවල් කිරීම, මානසික අවපීඩනය සහ පිළිගැනීමට ළඟා වීමෙන් පසු මම තීරණය කළෙමි - බ්ලැක් ජැක් සමඟ ස්වයංක්‍රීය පිරවීම ක්‍රියාත්මක කර එය නිවැරදි ආකාරයෙන් කිරීමට උත්සාහ නොකරන්නේ මන්ද? මම java වලින් ලියා ඇති dbeaver client එක භාවිතා කරමි, එහි විවෘත මූලාශ්‍ර ප්‍රජා අනුවාදයක් ඇත. සරල සැලැස්මක් පරිණත වී ඇත:

  1. ස්වයං සම්පූර්ණ කිරීම සඳහා වගකිව යුතු මූලාශ්‍ර කේතයේ පන්ති සොයන්න
  2. බාහිර පාර-දත්ත සමඟ වැඩ කිරීමට ඔවුන්ව හරවා යවන්න සහ සම්බන්ධවීම් පිළිබඳ තොරතුරු එතැනින් අදින්න
  3. ??????
  4. ලාභයක්

මම පළමු කරුණ ඉතා ඉක්මනින් හදුනා ගත්තෙමි - ස්වයං පිරවුම සීරුමාරු කිරීම සඳහා දෝෂ ලුහුබැඳීම සඳහා ඉල්ලීමක් මට හමු විය. කැප කරනවා SQLCcompletionAnalyzer පන්තිය සොයා ගන්නා ලදී. මම කෝඩ් එක බැලුවා මට අවශ්‍ය දේ. ඉතිරිව ඇත්තේ සියල්ල ක්‍රියාත්මක වන පරිදි එය නැවත ලිවීම පමණි. මම නිදහස් සන්ධ්‍යාවක් එනතෙක් බලා සිටි අතර ක්‍රියාත්මක කිරීම ගැන සිතන්නට පටන් ගතිමි. මම json හි වගු සබැඳි රීති (පාර-දත්ත) ලිවීමට තීරණය කළෙමි. මෙම ආකෘතිය සමඟ වැඩ කිරීමට මට ප්‍රායෝගික අත්දැකීමක් නොතිබූ අතර වර්තමාන කාර්යය මෙම අතපසුවීම නිවැරදි කිරීමට අවස්ථාවක් ලෙස සලකනු ලැබීය.

json සමඟ වැඩ කිරීමට මම පුස්තකාලය භාවිතා කිරීමට තීරණය කළෙමි json-සරල Google වෙතින්. විස්මයන් ආරම්භ වූයේ මෙහිදීය. එය සිදු වූ පරිදි, dbeaver, සැබෑ යෙදුමක් ලෙස, OSGi රාමුව භාවිතයෙන් Eclipse වේදිකාවේ ලියා ඇත. පළපුරුදු සංවර්ධකයින් සඳහා, මෙය පරායත්තතා කළමනාකරණය කිරීම පහසු කරයි, නමුත් මට එය අඳුරු මැජික් මෙන් විය, ඒ සඳහා මම පැහැදිලිවම සූදානම් නැත: සුපුරුදු පරිදි, මම මට අවශ්‍ය පන්ති ශීර්ෂයේ ඇති json-simple library වෙතින් ආනයනය කරමි. සංස්කරණය කරන ලද පන්තිය, එය pom. xml හි සඳහන් කරන්න, ඉන්පසු ව්‍යාපෘතිය සාමාන්‍ය ලෙස එකලස් කිරීම ප්‍රතික්ෂේප කරන අතර දෝෂ සහිතව බිඳ වැටේ.

අවසානයේදී, ගොඩනැගීමේ දෝෂ නිවැරදි කිරීමට මට හැකි විය: මම පුස්තකාලය ලියාපදිංචි කළේ pom.xml හි නොව, OSGI විසින් අවශ්‍ය වන පරිදි මැනිෆෙස්ට්.mf මැනිෆෙස්ටයේ, ආනයන-පැකේජය ලෙස සඳහන් කරමින්. වඩාත්ම ලස්සන විසඳුම නොවේ, නමුත් එය ක්රියා කරයි. එවිට ඊළඟ පුදුමය මතු විය. ඔබ Intellij Idea හි සංවර්ධනය කරන්නේ නම්, ඔබට ගොස් සූර්යග්‍රහණ වේදිකාව මත පදනම්ව ඔබේ ව්‍යාපෘතිය නිදොස් කිරීම ආරම්භ කළ නොහැක: අද්දැකීම් අඩු සංවර්ධකයෙකු විමසුම සම්පූර්ණ කිරීමකින් තොරව විශ්ලේෂකයෙකුට වඩා නොඅඩු දුක් විඳිය යුතුය. බීවර් සංවර්ධකයින් විසින්ම ගලවා ගැනීමට පැමිණි අතර, කළ යුතු රබන් සමඟ සියලුම නැටුම් විකියේ දක්වයි. වඩාත්ම කරදරකාරී දෙය නම්, මෙම සියලු squat වලින් පසුව පවා, ආනයන-පැකේජය හරහා සම්බන්ධ වූ json පුස්තකාලය සමඟ දෝෂහරණය කිරීමේදී ව්‍යාපෘතිය දියත් කිරීමට අවශ්‍ය නොවීමයි (එය තවමත් නිමි භාණ්ඩයට සාර්ථකව එකලස් කර තිබියදීත්).

ඒ වන විට, මගේ කාර්යය සඳහා json භාවිතා කිරීමේ අපහසුතාවය මම දැනටමත් තේරුම් ගෙන තිබුණි - සියල්ලට පසු, පාර-දත්ත අතින් සංස්කරණය කළ යුතු අතර, xml ආකෘතිය මේ සඳහා වඩාත් සුදුසු වේ. Xml ට පක්ෂව දෙවන තර්කය වූයේ JDK හි අවශ්‍ය සියලුම පන්ති තිබීමයි, එමඟින් බාහිර පුස්තකාලයක් සමඟ සටන් කිරීම නැවැත්වීමට හැකි විය. ඉමහත් සතුටකින්, මම සියලු පාරදත්ත json සිට xml වෙත මාරු කර ස්වයං සම්පූර්ණ තර්කනය සංස්කරණය කිරීමට පටන් ගතිමි.

පාරදත්ත උදාහරණය

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<tableRelations>
    <tableRelation>
        <leftTable>dim_account</leftTable>
        <rightTable>dim_partner</rightTable>
        <joinColumnPair leftColumn="partner_key" rightColumn="partner_key"/>
        <joinColumnPair leftColumn="src_id" rightColumn="src_id"/>
    </tableRelation>
    <tableRelation>
        <leftTable>dim_account</leftTable>
        <rightTable>dim_branch</rightTable>
        <joinColumnPair leftColumn="src_id" rightColumn="src_id"/>
        <joinColumnPair leftColumn="branch_key" rightColumn="branch_key"/>
    </tableRelation>
</tableRelations>

එහි ප්‍රතිඵලයක් ලෙස අයි වෙනස්කම් කළා SQLUtils සහ SQLCcompletionAnalyzer පන්ති වලට. අදහස මෙයයි: වැඩසටහනට මූලික තර්කනය භාවිතයෙන් සුදුසු ස්වයං සම්පූර්ණ යෝජනා සොයා ගැනීමට නොහැකි වූයේ නම්, එය බාහිර xml ගොනුවක් භාවිතයෙන් හැකි සම්බන්ධක තිබේදැයි පරීක්ෂා කරයි. ගොනුව විසින්ම මෙම වගු සම්බන්ධ කිරීමට අවශ්‍ය ක්ෂේත්‍ර දැක්වෙන වගු යුගල ගබඩා කරයි. Eff_dttm සහ exp_dttm වාර්තා වල තාක්ෂණික වලංගු දිනයන් සහ තාර්කික මකාදැමීමේ ධජය deleted_ind පෙරනිමියෙන් සකසනු ලැබේ.

කේතයේ වෙනස්කම් සිදු කළ විට, ප්රශ්නය මතු විය - පාර-දත්ත සමඟ ගොනුව පුරවන්නේ කවුද? ගබඩාවේ බොහෝ ආයතන තිබේ, සියලු සම්බන්ධතා ඔබම ලියාපදිංචි කිරීම මිල අධිකය. එහි ප්රතිඵලයක් වශයෙන්, මෙම කාර්යය මගේ සෙසු විශ්ලේෂකයින්ට පැවරීමට මම තීරණය කළෙමි. මම පාර-දත්ත ගොනුව svn හි පළ කළෙමි, එහිදී වැඩසටහන සමඟ දේශීය නාමාවලියට පිටවීමක් සිදු කෙරේ. මූලධර්මය මෙයයි: ගබඩාවේ නව ආයතනයක් දර්ශනය වී තිබේද? එක් විශ්ලේෂකයෙකු ගොනුව තුළට සම්බන්ධ විය හැකි අතර, වෙනස්කම් සිදු කරයි, ඉතිරිය තමන් විසින්ම පරීක්ෂා කර බලා ස්වයංක්‍රීයව සම්පූර්ණ කිරීම භුක්ති විඳිති: ප්‍රජාව, දැනුම රැස් කිරීම සහ ඒ සියල්ල. සගයන් සඳහා වැඩසටහන භාවිතා කිරීම පිළිබඳ වැඩමුළුවක් පවත්වන ලදී, Confluence හි ලිපියක් ලිවීය - දැන් සමාගමට තවත් පහසු මෙවලමක් තිබේ.

මෙම විශේෂාංගය මත වැඩ කිරීමෙන් මට විවෘත මූලාශ්‍ර ව්‍යාපෘති සමඟ සම්බන්ධ වීමට බිය විය යුතු නැති බව මට අවබෝධ විය - රීතියක් ලෙස, ඔවුන්ට පැහැදිලි ගෘහ නිර්මාණ ශිල්පයක් ඇති අතර, භාෂාව පිළිබඳ මූලික දැනුම පවා අත්හදා බැලීම් සඳහා ප්‍රමාණවත් වනු ඇත. යම් ප්‍රමාණයක නොපසුබට උත්සාහයකින්, ඔබට වෛරයට ලක් වූ සාමාන්‍ය මෙහෙයුම් වලින් මිදීමට පවා හැකි වනු ඇත, නව අත්හදා බැලීම් සඳහා කාලය ඉතිරි කරයි.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න