Чӣ тавр бас кардани ҳамон кор

Оё шумо мехоҳед, ки амалҳои муқаррариро такрор ба такрор такрор кунед? Пас ман намекунам. Аммо ҳар дафъа дар муштарии SQL ҳангоми кор бо анбори Ростелеком, ман маҷбур будам, ки ҳама пайвастагиҳои байни ҷадвалҳоро дастӣ сабт кунам. Ва ин сарфи назар аз он, ки дар 90% ҳолатҳо майдонҳо ва шартҳои ҳамроҳшавии ҷадвалҳо аз дархост ба дархост мувофиқат мекунанд! Чунин ба назар мерасад, ки ҳама гуна муштарии SQL дорои функсияҳои худкор анҷом дода мешавад, аммо барои анборҳо он на ҳамеша кор мекунад: онҳо хеле кам маҳдудиятҳои беназир ва калиди хориҷиро барои беҳтар кардани кор дар бар мегиранд ва бе ин барнома намедонад, ки объектҳо бо ҳар як объект чӣ гуна алоқаманданд. дигар ва он чӣ метавонад барои шумо пешниҳод кунад.

Чӣ тавр бас кардани ҳамон кор

Бо инкор, хашм, муомила, депрессия ва наздик шудан ба қабул қарор додам, ман қарор додам - ​​чаро худам кӯшиш намекунам, ки автоматро бо blackjack амалӣ созам ва ин корро дуруст анҷом диҳам? Ман муштарии dbeaver -ро истифода мебарам, ки дар Java навишта шудааст, он дорои версияи кушодаи ҷомеа мебошад. Нақшаи оддӣ ба камол расид:

  1. Дар коди сарчашма синфҳоеро пайдо кунед, ки барои пуркунии худкор масъуланд
  2. Онҳоро ба кор бо метамаълумоти беруна равона кунед ва маълумотро дар бораи пайвастшавӣ аз он ҷо кашед
  3. ??????
  4. ФАҚАТ

Ман нуқтаи аввалро ба зудӣ фаҳмидам - ​​ман дар пайгирии хатогиҳо дархост пайдо кардам, ки пуркунии автоматӣ ва ба он алоқамандро танзим кунад. ӯҳдадор шавед синфи SQLCompletionAnalyzer кашф кард. Ман ба код нигоҳ кардам ва он чизест, ки ба ман лозим аст. Ҳама чиз боқӣ мемонад, ки онро дубора нависед, то ҳама чиз кор кунад. Ман як шоми ройгонро интизор шудам ва дар бораи татбиқи он фикр карданро сар кардам. Ман тасмим гирифтам, ки қоидаҳои истинод ба ҷадвалро (методата) дар json нависам. Ман таҷрибаи амалии кор бо ин формат надоштам ва вазифаи ҷорӣ ҳамчун имкони ислоҳи ин камбудиҳо дида мешуд.

Барои кор бо json ман тасмим гирифтам, ки китобхонаро истифода барам json-оддӣ аз Google. Ин аст, ки сюрпризҳо оғоз шуданд. Тавре маълум шуд, dbeaver ҳамчун барномаи ҳақиқӣ дар платформаи Eclipse бо истифода аз чаҳорчӯбаи OSGi навишта шудааст. Барои таҳиягарони ботаҷриба, ин чиз идоракунии вобастагиҳоро қулай мекунад, аммо барои ман он бештар ба ҷодуи торикӣ монанд буд, ки ман ба он омода набудам: чун маъмул, ман синфҳои лозимиро аз китобхонаи json-simple дар сарлавҳа ворид мекунам. синфи таҳриршуда, онро дар pom.xml муайян кунед, ки пас аз он лоиҳа ба таври қатъӣ ҷамъ кардани муқаррариро рад мекунад ва бо хатогиҳо дучор мешавад.

Дар ниҳоят, ба ман муяссар шуд, ки хатогиҳои сохтмонро ислоҳ кунам: ман китобхонаро на дар pom.xml, балки дар manifest.mf, тавре ки OSGI талаб мекунад, ҳангоми муайян кардани он ҳамчун бастаи воридот сабт кардам. Не ҳалли зеботарин, аммо он кор мекунад. Баъд сюрпризи навбатй пайдо шуд. Агар шумо дар Intellij Idea таҳия карда бошед, шумо наметавонед танҳо рафта, ислоҳи лоиҳаи худро дар асоси платформаи eclipse оғоз кунед: таҳиягари бетаҷриба набояд камтар аз таҳлилгар бидуни анҷоми дархост азоб кашад. Худи таҳиягарони бивер ба наҷот омада, дар вики ҳамаи рақсҳоро бо даф нишон доданд, ки бояд иҷро шаванд. Аз ҳама дилгиркунанда дар он аст, ки ҳатто пас аз ин ҳама squats, лоиҳа намехост, ки дар debug бо китобхонаи 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 ва SQLCompletionAnalyzer. Идея ин аст: агар барнома бо истифода аз мантиқи асосӣ пешниҳодҳои мувофиқи худкорро пайдо карда натавонист, он гоҳ мавҷудияти пайвастагиҳои имконпазирро бо истифода аз файли берунии xml тафтиш мекунад. Худи файл ҷуфтҳои ҷадвалҳоро нигоҳ медорад, ки майдонҳоеро нишон медиҳанд, ки тавассути онҳо ин ҷадвалҳо бояд пайваст карда шаванд. Маҳдудиятҳо оид ба санаҳои эътибори техникии сабтҳои eff_dttm ва exp_dttm ва парчами ҳазфи мантиқии deleted_ind бо нобаёнӣ муқаррар карда мешаванд.

Вақте ки тағирот ба код ворид карда шуд, савол ба миён омад - кӣ файлро бо метамаълумот пур мекунад? Дар анбор объектҳои зиёде мавҷуданд, худатон сабти ном кардани ҳамаи пайвастҳо гарон аст. Дар натиҷа, ман тасмим гирифтам, ки ин вазифаро ба ҳамкасбони таҳлилгаронам вогузорам. Ман файли метамаълумотро дар svn ҷойгир кардам, ки аз он ҷо ба феҳристи маҳаллӣ бо барнома ҳисобкунӣ анҷом дода мешавад. Принсип ин аст: оё дар анбор як сохтори нав пайдо шуд? Як таҳлилгар ба файл пайвастагиҳои имконпазирро ворид мекунад, тағирот ворид мекунад, боқимондаҳо худашон тафтиш мекунанд ва аз анҷоми автоматии корӣ лаззат мебаранд: ҷомеа, ҷамъоварии дониш ва ҳама чизҳо. Семинар оид ба истифодаи барнома барои ҳамкорон гузаронида шуд, дар Confluence мақола навишт - ҳоло ширкат як воситаи қулайтар дорад.

Кор дар ин хусусият ба ман фаҳмид, ки аз кор кардан бо лоиҳаҳои кушодаасос набояд тарсидан лозим нест - чун қоида, онҳо меъмории равшан доранд ва ҳатто дониши ибтидоии забон барои таҷрибаҳо кофӣ хоҳад буд. Ва бо як миқдори муайяни истодагарӣ, шумо ҳатто метавонед аз амалиёти муқаррарии нафратовар халос шавед ва вақти худро барои таҷрибаҳои нав сарфа кунед.

Манбаъ: will.com

Илова Эзоҳ