ڇا توهان معمول جي عملن کي بار بار ورجائڻ پسند ڪندا آهيو؟ تنهنڪري مان نه ٿو ڪريان. پر هر دفعي SQL ڪلائنٽ ۾ جڏهن Rostelecom اسٽوريج سان ڪم ڪري رهيو هو، مون کي دستي طور تي ٽيبل جي وچ ۾ سڀني شاملن کي رجسٽر ڪرڻو پوندو هو. ۽ هن حقيقت جي باوجود ته 90٪ ڪيسن ۾ جدولن ۾ شامل ٿيڻ جا شعبا ۽ حالتون درخواست جي درخواست کان هڪجهڙائي رکن ٿيون! اهو لڳي ٿو ته ڪنهن به SQL ڪلائنٽ ۾ خودڪار مڪمل ڪرڻ وارا ڪم آهن، پر اسٽوريج لاء اهو هميشه ڪم نه ڪندو آهي: ڪارڪردگي بهتر ڪرڻ لاء انهن ۾ گهٽ ۾ گهٽ منفرد رڪاوٽ ۽ غير ملڪي ڪي شامل آهن، ۽ ان کان سواء پروگرام کي خبر ناهي ته ڪيئن ادارن سان لاڳاپيل آهن. ٻيو ۽ اهو توهان لاءِ ڇا ڪري سگهي ٿو پيش ڪري.
انڪار، ڪاوڙ، سوديبازي، ڊپريشن ۽ قبوليت جي ويجهو اچڻ کان پوءِ، مون فيصلو ڪيو - ڇو نه پاڻ کي بليڪ جيڪ سان خودڪار طريقي سان لاڳو ڪرڻ جي ڪوشش ڪئي وڃي ۽ اهو صحيح طريقي سان ڪيو وڃي؟ مان dbeaver ڪلائنٽ استعمال ڪريان ٿو، جاوا ۾ لکيل آھي، اھو ھڪڙو اوپن سورس ڪميونٽي ورزن آھي. ھڪڙو سادو منصوبو پختو آھي:
- ماخذ ڪوڊ ۾ ڪلاس ڳولھيو جيڪي خودڪار مڪمل ٿيڻ جا ذميوار آھن
- انهن کي خارجي ميٽا ڊيٽا سان ڪم ڪرڻ لاءِ ريڊائريڪٽ ڪريو ۽ اتان کان شامل ٿيڻ بابت معلومات ڪڍو
- ؟؟؟؟؟؟
- PROFIT
مون پهرين نقطي کي تمام جلدي سمجهي ورتو - مون کي بگ ٽريڪر ۾ هڪ درخواست ملي ته آٽو فل کي ترتيب ڏيڻ لاءِ ۽ لاڳاپيل
json سان ڪم ڪرڻ لاءِ مون لائبريري کي استعمال ڪرڻ جو فيصلو ڪيو
آخر ۾، مان تعميراتي غلطين کي درست ڪرڻ ۾ ڪامياب ٿيس: مون لائبريري رجسٽر ڪئي pom.xml ۾ نه، پر manifest.mf manifest ۾، جيئن OSGI جي ضرورت هئي، جڏهن ته ان کي درآمد-پيڪيج طور بيان ڪيو ويو. تمام خوبصورت حل ناهي، پر اهو ڪم ڪري ٿو. پوءِ ايندڙ تعجب ظاهر ٿيو. جيڪڏهن توهان Intellij Idea ۾ ترقي ڪري رهيا آهيو، توهان صرف نه ٿا وڃو ۽ پنهنجي پروجيڪٽ کي ايڪليپس پليٽ فارم جي بنياد تي ڊيبگ ڪرڻ شروع ڪري سگهو ٿا: هڪ غير تجربيڪار ڊولپر کي سوال جي مڪمل ٿيڻ کان سواءِ تجزيه نگار کان گهٽ نه ٿيڻ گهرجي. بيور ڊولپر پاڻ بچاء لاء آيا، وڪي ۾ اشارو ڪيو ته سڀني ناچن کي ٽمبرين سان گڏ ڪرڻ جي ضرورت آهي. سڀ کان وڌيڪ ڏکوئيندڙ ڳالهه اها آهي ته انهن سڀني اسڪواٽس کان پوء، پروجيڪٽ کي ڊيبگ ۾ شروع ڪرڻ نه چاهيو json لائبريري سان درآمد-پيڪيج ذريعي ڳنڍيل آهي (ان حقيقت جي باوجود ته اهو اڃا تائين ڪاميابيء سان مڪمل پيداوار ۾ گڏ ڪيو ويو آهي).
ان وقت تائين، مون اڳ ۾ ئي محسوس ڪيو هو ته منهنجي ڪم لاءِ json استعمال ڪرڻ جي تڪليف - آخرڪار، ميٽا ڊيٽا کي دستي طور تي تبديل ڪيو وڃي ها، ۽ xml فارميٽ ان لاء بهتر آهي. xml جي حق ۾ ٻيو دليل JDK ۾ سڀني ضروري طبقن جي موجودگي هئي، جنهن اهو ممڪن ڪيو ته ٻاهرين لائبريري سان وڙهڻ بند ڪرڻ. وڏي خوشي سان، مون سمورو ميٽا ڊيٽا json کان xml ۾ منتقل ڪيو ۽ خود مڪمل منطق کي ايڊٽ ڪرڻ شروع ڪيو.
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>
نتيجي طور I
جڏهن ڪوڊ ۾ تبديليون ڪيون ويون، سوال پيدا ٿيو - ڪير ميٽا ڊيٽا سان فائل ڀريندو؟ مخزن ۾ تمام گهڻا ادارا آهن، اهو قيمتي آهي ته سڀئي ڪنيڪشن پاڻ کي رجسٽر ڪرڻ. نتيجي طور، مون فيصلو ڪيو ته اهو ڪم منهنجي ساٿي تجزيه نگارن کي سونپيو وڃي. مون پوسٽ ڪيو ميٽا ڊيٽا فائل svn ۾، جتان پروگرام سان مقامي ڊاريڪٽري ۾ چيڪ آئوٽ ڪيو ويندو. اصول هي آهي: ڇا هڪ نئون ادارو مخزن ۾ ظاهر ٿيو آهي؟ هڪ تجزيه نگار فائل ۾ ممڪن طور تي شامل ٿيڻ ۾ داخل ٿئي ٿو، تبديلين کي انجام ڏئي ٿو، باقي پاڻ کي چيڪ ڪريو ۽ ڪم ڪندڙ خودڪار مڪمل ٿيڻ جو لطف اندوز ڪريو: ڪميونٽي، علم جي جمع ۽ اهو سڀ ڪجهه. ساٿين لاءِ پروگرام استعمال ڪرڻ تي هڪ ورڪشاپ ڪيو، هڪ مضمون لکيو Confluence - هاڻي ڪمپني وٽ هڪ وڌيڪ آسان اوزار آهي.
ھن خصوصيت تي ڪم ڪندي مون کي سمجھايو ته اوپن سورس منصوبن سان ٽڪرائڻ کان ڊڄڻ جي ڪا ضرورت نه آھي - ضابطي جي طور تي، انھن وٽ ھڪڙو واضح فن تعمير آھي، ۽ جيتوڻيڪ ٻوليء جي بنيادي ڄاڻ تجربن لاء ڪافي آھي. ۽ هڪ خاص مقدار سان، توهان نفرت واري معمول جي عملن کان به نجات حاصل ڪري سگهندا، پنهنجو پاڻ کي نئين تجربن لاءِ وقت بچائيندا.
جو ذريعو: www.habr.com