ဒီလိုလုပ်နေတာကို ဘယ်လိုရပ်မလဲ။

ပုံမဟန်လုပ်ငန်သဆောင်တာမျာသကို ထပ်ခါထပ်ခါ ပဌန်လုပ်လိုပါသလာသ။ ဒါကဌောင့် ငါမလုပ်ဘူသ။ သို့သော် Rostelecom သိုလဟောင်မဟုနဟင့်အတူအလုပ်လုပ်သောအခါ SQL client တလင်အချိန်တိုင်သ၊ ကျလန်ုပ်သည် tables မျာသကဌာသတလင် join အာသလုံသကိုကိုယ်တိုင်စာရင်သသလင်သရန်လိုအပ်သည်။ ကအရာသည် အမဟုအခင်သမျာသ၏ 90% တလင် ဇယာသမျာသပါဝင်ခဌင်သအတလက် နယ်ပယ်မျာသနဟင့် အခဌေအနေမျာသသည် တောင်သဆိုမဟုမဟ တောင်သဆိုချက်မဟ တိုက်ဆိုင်နေသော်လည်သ ၎င်သသည်! မည်သည့် SQL ကလိုင်သယင့်တလင်မဆို အလိုအလျောက် ဖဌည့်သလင်သသည့် လုပ်ဆောင်ချက်မျာသ ရဟိပုံရသော်လည်သ သိုလဟောင်မဟုမျာသအတလက် ၎င်သသည် အမဌဲတမ်သ အလုပ်မဖဌစ်ပါ- ၎င်သတို့တလင် စလမ်သဆောင်ရည် မဌဟင့်တင်ရန်အတလက် ထူသခဌာသသော ကန့်သတ်ချက်နဟင့် နိုင်ငံခဌာသကီသမျာသ ပါဝင်ခဲပဌီသ၊ ၎င်သမပါဘဲ ပရိုဂရမ်သည် တစ်ခုချင်သစီနဟင့် မည်သို့ဆက်စပ်နေသည်ကို မသိနိုင်ပါ။ အခဌာသ နဟင့် ၎င်သသည် သင့်အတလက် မည်ကဲ့သို့ လုပ်ဆောင်နိုင်သနည်သ။

ဒီလိုလုပ်နေတာကို ဘယ်လိုရပ်မလဲ။

ငဌင်သဆိုခဌင်သ၊ ဒေါသဖဌစ်ခဌင်သ၊ အလျဟော့အတင်သလုပ်ခဌင်သ၊ စိတ်ဓာတ်ကျခဌင်သနဟင့် လက်ခံခဌင်သတို့ကို ချဉ်သကပ်ခဌင်သတို့ကို ဖဌတ်သန်သပဌီသနောက်၊ ကျလန်ုပ် ဆုံသဖဌတ်ခဲ့သည်- ကျလန်ုပ်သည် ဘလက်ဂျက်ဖဌင့် အလိုအလျောက်ဖဌည့်သလင်သရန် မကဌိုသစာသဘဲ ၎င်သကို နည်သလမ်သမဟန်အတိုင်သ လုပ်ဆောင်ရန် အဘယ်ကဌောင့် မကဌိုသစာသသနည်သ။ ကျလန်ုပ်သည် java တလင်ရေသသာသထာသသော dbeaver client ကိုအသုံသပဌုသည်၊ ၎င်သတလင် open source အသိုင်သအဝိုင်သဗာသရဟင်သတစ်ခုရဟိသည်။ ရိုသရဟင်သသောအစီအစဥ်တစ်ခု ပဌည့်စုံလာပါပဌီ-

  1. အလိုအလျောက်ဖဌည့်ပေသမဟုအတလက် တာဝန်ရဟိသော အရင်သအမဌစ်ကုဒ်ရဟိ အတန်သမျာသကို ရဟာပါ။
  2. ၎င်သတို့ကို ပဌင်ပ မက်တာဒေတာဖဌင့် လုပ်ဆောင်ရန် ၎င်သတို့ကို ပဌန်ညလဟန်သပဌီသ ထိုနေရာမဟ ချိတ်ဆက်မဟုမျာသအကဌောင်သ အချက်အလက်ကို ဆလဲထုတ်ပါ။
  3. ??????
  4. အမဌတ်အစလန်သ

ပထမအချက်ကို အတော်လေသ မဌန်မဌန်ဆန်ဆန် တလေသကဌည့်မိတယ် - အော်တိုဖဌည့်ခဌင်သနဟင့် ဆက်စပ်မဟုအာသ ချိန်ညဟိရန် bug tracker တလင် တောင်သဆိုချက်တစ်ခုကို တလေ့ရဟိခဲ့သည်။ ကျူသလလန်သည်။ SQLCompletionAnalyzer အတန်သကို ရဟာဖလေတလေ့ရဟိခဲ့သည်။ ကုဒ်ကိုကဌည့်လိုက်တော့ အဲဒါက ငါလိုတယ်။ ကျန်တာအာသလုံသ အဆင်ပဌေအောင် ပဌန်ရေသဖို့ပဲကျန်တော့တယ်။ အလကာသရတဲ့ညနေခင်သကို စောင့်ဆိုင်သပဌီသ အကောင်အထည်ဖော်ဖို့ စဉ်သစာသခဲ့တယ်။ json တလင် table link rules (metadata) ကိုရေသရန် ဆုံသဖဌတ်ခဲ့သည်။ ကျလန်ုပ်တလင် ကပုံစံဖဌင့် လုပ်ဆောင်သည့် လက်တလေ့ အတလေ့အကဌုံမရဟိသဖဌင့် လက်ရဟိတာဝန်သည် ကပျက်ကလက်မဟုကို ပဌုပဌင်ရန် အခလင့်အရေသတစ်ခုအဖဌစ် ရဟုမဌင်ပါသည်။

json နဲ့အလုပ်လုပ်ဖို့အတလက် library ကိုသုံသဖို့ဆုံသဖဌတ်လိုက်တယ်။ json-ရိုသရဟင်သသော Google မဟ ကနေရာတလင် အံ့သဌစရာမျာသ စတင်ခဲ့သည်။ ထလက်ပေါ်လာသည့်အတိုင်သ dbeaver သည် စစ်မဟန်သော application တစ်ခုအနေဖဌင့် OSGi framework ကိုအသုံသပဌု၍ Eclipse platform ပေါ်တလင် ရေသသာသခဲ့သည်။ အတလေ့အကဌုံရင့် developer မျာသအတလက်၊ ကအရာသည် မဟီခိုအာသထာသမဟုကို စီမံခန့်ခလဲရန် အဆင်ပဌေစေသည်၊ သို့သော် ကျလန်ုပ်အတလက်မူ အဆင်သင့်မဖဌစ်သေသသည့်အတလက် မဟောင်မိုက်သောမဟော်ပညာနဟင့် ပိုတူပါသည်- ထုံသစံအတိုင်သ၊ ခေါင်သစီသရဟိ json-ရိုသရဟင်သစာကဌည့်တိုက်မဟ လိုအပ်သောအတန်သမျာသကို တင်သလင်သပါသည်။ တည်သဖဌတ်ထာသသော အတန်သကို pom. xml တလင် သတ်မဟတ်ပါ၊ ထို့နောက် ပရောဂျက်သည် ပုံမဟန်အတိုင်သ စုစည်သရန် လုံသဝငဌင်သဆန်ပဌီသ အမဟာသအယလင်သမျာသနဟင့် ပျက်သလာသသည်။

အဆုံသတလင်၊ ကျလန်ုပ်သည် တည်ဆောက်မဟုအမဟာသမျာသကို ပဌင်ဆင်နိုင်ပါသည်- ကျလန်ုပ်သည် စာကဌည့်တိုက်ကို pom.xml တလင်မဖော်ပဌထာသဘဲ OSGI ၏ လိုအပ်ချက်အရ မန်နီသဖက်စ်.mf မန်နီသဖက်စ်တလင်၊ ၎င်သကို သလင်သကုန်-ပက်ကေ့ချ်အဖဌစ် သတ်မဟတ်နေစဉ်။ အလဟပဆုံသဖဌေရဟင်သချက်မဟုတ်သော်လည်သ၊ ၎င်သသည်အလုပ်လုပ်သည်။ နောက်တော့ အံ့အာသသင့်စရာ ပေါ်လာတယ်။ အကယ်၍ သင်သည် Intellij Idea တလင် တီထလင်နေပါက၊ သင်သည် နေကဌတ်ခဌင်သပလပ်ဖောင်သကို အခဌေခံ၍ သင့်ပရောဂျက်ကို အမဟာသရဟာစတင်၍ မရနိုင်ပါ- အတလေ့အကဌုံမရဟိသော ဆော့ဖ်ဝဲရေသသာသသူသည် စုံစမ်သမေသမဌန်သမဟု မပဌီသပဌတ်ဘဲ ခလဲခဌမ်သစိတ်ဖဌာသူထက် မနည်သတော့ပါ။ beaver developer မျာသကိုယ်တိုင်က ကယ်ဆယ်ရန် ရောက်လာပဌီသ လုပ်ဆောင်ရန် လိုအပ်သည့် ပတ်သာနဟင့် အကမျာသအာသလုံသကို wiki တလင် ညလဟန်ပဌသည်။ စိတ်အနဟောက်အယဟက်ဖဌစ်စရာအကောင်သဆုံသအချက်မဟာ squats အာသလုံသပဌီသနောက်တလင်ပင်၊ ပရောဂျက်သည် import-package မဟတစ်ဆင့်ချိတ်ဆက်ထာသသော json library နဟင့် debug တလင်မဖလင့်လိုဘဲ (၎င်သကို ကုန်ချောတလင်အောင်မဌင်စလာစုစည်သထာသဆဲဖဌစ်သည်ဟူသောအချက်ပင်)။

ထိုအချိန်တလင်၊ ကျလန်ုပ်၏လုပ်ငန်သတာဝန်အတလက် json ကိုအသုံသပဌုရန် အဆင်မပဌေကဌောင်သ နာသလည်ထာသပဌီသဖဌစ်သည် - နောက်ဆုံသတလင်၊ မက်တာဒေတာကို ကိုယ်တိုင်တည်သဖဌတ်ရမည်ဟု ယူဆရပဌီသ xml ဖော်မတ်သည် ၎င်သအတလက် ပိုသင့်လျော်ပါသည်။ xml ၏မျက်နဟာသာပေသသည့်ဒုတိယအငဌင်သအခုံမဟာ JDK တလင်လိုအပ်သောအတန်သမျာသအာသလုံသရဟိနေခဌင်သဖဌစ်ပဌီသ၊ ပဌင်ပစာကဌည့်တိုက်နဟင့်တိုက်ခိုက်ခဌင်သကိုရပ်တန့်နိုင်စေခဲ့သည်။ ပျော်ရလဟင်စလာဖဌင့်၊ json မဟ xml သို့ metadata အာသလုံသကို လလဟဲပဌောင်သပဌီသ autocomplete logic ကို စတင်ပဌင်ဆင်ခဲ့ပါသည်။

Metadata ဥပမာ

<?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 နဟင့် SQLCompletionAnalyzer အတန်သမျာသထဲသို့။ အယူအဆမဟာ ကသို့ဖဌစ်သည်- အကယ်၍ ပရိုဂရမ်သည် အခဌေခံယုတ္တိဗေဒကို အသုံသပဌု၍ သင့်လျော်သော အလိုအလျောက်ဖဌည့်စလက်အကဌံပဌုချက်မျာသကို ရဟာမတလေ့ပါက၊ ထို့နောက် ပဌင်ပ xml ဖိုင်ကို အသုံသပဌု၍ ချိတ်ဆက်မဟု ဖဌစ်နိုင်ချေရဟိမရဟိကို စစ်ဆေသသည်။ ဖိုင်ကိုယ်တိုင်က ကဇယာသမျာသကို ချိတ်ဆက်ရန် လိုအပ်သည့် အကလက်မျာသကို ညလဟန်ပဌသည့် ဇယာသအတလဲမျာသကို သိမ်သဆည်သထာသသည်။ eff_dttm နဟင့် exp_dttm မဟတ်တမ်သမျာသ၏ နည်သပညာဆိုင်ရာတရာသဝင်သည့်ရက်စလဲမျာသအပေါ် ကန့်သတ်ချက်မျာသ နဟင့် ယုတ္တိတန်သောဖျက်မဟုအလံ deleted_ind ကို ပုံသေသတ်မဟတ်ထာသသည်။

ကုဒ်ကို အပဌောင်သအလဲလုပ်သောအခါတလင် မေသခလန်သပေါ်လာသည် - ဖိုင်ကို မက်တာဒေတာဖဌင့် မည်သူဖဌည့်ပေသမည်နည်သ။ repository တလင် entities မျာသစလာရဟိသည်၊ ချိတ်ဆက်မဟုအာသလုံသကို ကိုယ်တိုင်မဟတ်ပုံတင်ရန် စျေသကဌီသသည်။ ထို့ကဌောင့် ကျလန်ုပ်သည် ကတာဝန်ကို ကျလန်ုပ်၏လုပ်ဖော်ကိုင်ဖက် အကဲခတ်မျာသထံ ပေသအပ်ရန် ဆုံသဖဌတ်ခဲ့သည်။ ကျလန်ုပ်သည် ပရိုဂရမ်ဖဌင့် ငလေပေသချေမဟုပဌုလုပ်သည့်နေရာမဟ မက်တာဒေတာဖိုင်ကို svn တလင် တင်ခဲ့သည်။ နိယာမသည် ကအရာဖဌစ်သည်- repository တလင် entity အသစ်တစ်ခုပေါ်လာပါသလာသ။ အကဲခတ်သူတစ်ညသသည် ဖိုင်ထဲသို့ ဖဌစ်နိုင်ချေရဟိသော ချိတ်ဆက်မဟုမျာသကို ထည့်သလင်သကာ အပဌောင်သအလဲမျာသကို ကျူသလလန်သည်၊ ကျန်သူမျာသသည် ၎င်သတို့ကို စစ်ဆေသပဌီသ အလုပ်လုပ်သော အလိုအလျောက် ပဌီသဆုံသခဌင်သ- အသိုင်သအဝိုင်သ၊ အသိပညာ စုဆောင်သခဌင်သနဟင့် အရာအာသလုံသကို ခံစာသလိုက်ပါ။ လုပ်ဖော်ကိုင်ဖက်မျာသအတလက် ပရိုဂရမ်ကို အသုံသပဌုခဌင်သဆိုင်ရာ အလုပ်ရုံဆလေသနလေသပလဲတစ်ခု ပဌုလုပ်ခဲ့ပဌီသ မဌစ်ဆုံတလင် ဆောင်သပါသတစ်ပုဒ် ရေသသာသခဲ့သည် - ယခုအခါ ကုမ္ပဏီတလင် ပိုမိုအဆင်ပဌေသည့် ကိရိယာတစ်ခု ရဟိလာပဌီဖဌစ်သည်။

ကအင်္ဂါရပ်ကိုလုပ်ဆောင်ခဌင်သဖဌင့် open source ပရောဂျက်မျာသနဟင့် တလဲလုပ်ရန် ကဌောက်ရလံ့နေရန် မလိုအပ်ကဌောင်သ နာသလည်စေသည် - စည်သကမ်သအနေဖဌင့် ၎င်သတို့တလင် ရဟင်သလင်သသောဗိသုကာပညာရဟိပဌီသ ဘာသာစကာသ၏အခဌေခံအသိပညာသည် စမ်သသပ်မဟုမျာသအတလက် လုံလောက်မည်ဖဌစ်သည်။ အတိုင်သအတာတစ်ခုအထိ စလဲမဌဲစလာလုပ်ဆောင်ခဌင်သဖဌင့် သင်သည် အမုန်သပလာသစေသော ပုံမဟန်လုပ်ငန်သဆောင်တာမျာသကို ဖယ်ရဟာသပစ်နိုင်ပဌီသ စမ်သသပ်မဟုအသစ်မျာသအတလက် သင့်ကိုယ်သင် အချိန်ကုန်သက်သာစေမည်ဖဌစ်သည်။

source: www.habr.com

မဟတ်ချက် Add