Tħobb tirrepeti operazzjonijiet ta' rutina għal darb'oħra? Allura jien ma. Imma kull darba fil-klijent SQL meta naħdem mal-ħażna Rostelecom, kelli nirreġistra l-joints kollha bejn it-tabelli manwalment. U dan minkejja l-fatt li f'90% tal-każijiet l-oqsma u l-kundizzjonijiet biex tgħaqqad it-tabelli ħabtu minn mistoqsija għal mistoqsija! Jidher li kwalunkwe klijent SQL għandu funzjonijiet ta 'awto-kompletazzjoni, iżda għall-ħażniet mhux dejjem jaħdem: rari jinkludu restrizzjoni unika u ċavetta barranija sabiex titjieb il-prestazzjoni, u mingħajr dan il-programm ma jkunx jaf kif l-entitajiet huma relatati ma' kull wieħed. oħra u dak li jista 'jagħmel għalik toffri.
Wara li għaddejt minn ċaħda, rabja, negozjar, dipressjoni u riesaq lejn l-aċċettazzjoni, iddeċidejt - għaliex ma nipprovax nimplimenta l-autofill bil-blackjack jien stess u nagħmel dan bil-mod it-tajjeb? Jiena nuża l-klijent dbeaver, miktub bil-java, għandu verżjoni tal-komunità ta 'sors miftuħ. Pjan sempliċi mmatura:
- Sib klassijiet fil-kodiċi sors li huma responsabbli għall-awtokompletazzjoni
- Idderieġihom mill-ġdid biex jaħdmu b'metadejta esterna u iġbed l-informazzjoni dwar il-joints minn hemm
- ??????
- QLIGĦ
I dehret l-ewwel punt pjuttost malajr - sibt talba fil-bug tracker biex taġġusta l-autofill u fil-relatat
Biex naħdem ma 'json iddeċidejt li nuża l-librerija
Fl-aħħar, irnexxieli nirranġa l-iżbalji tal-bini: irreġistrajt il-librerija mhux f'pom.xml, iżda fil-manifest.mf manifest, kif meħtieġ mill-OSGI, filwaqt li speċifikajt bħala pakkett ta 'importazzjoni. Mhux l-isbaħ soluzzjoni, iżda taħdem. Imbagħad dehret is-sorpriża li jmiss. Jekk qed tiżviluppa f'Intellij Idea, ma tistax sempliċement tmur u tibda tiddibaggja l-proġett tiegħek ibbażat fuq il-pjattaforma eclipse: żviluppatur mingħajr esperjenza għandu jbati xejn inqas minn analista mingħajr it-tlestija tal-mistoqsija. L-iżviluppaturi tal-kasturi nfushom ġew għas-salvataġġ, u indikaw fil-wiki iż-żfin kollha b'tambourine li jeħtieġ li jsiru. L-iktar ħaġa tedjanti hija li anke wara dawn l-isquats kollha, il-proġett ma riedx li jiġi mniedi fid-debug bil-librerija json konnessa permezz ta 'pakkett ta' importazzjoni (minkejja l-fatt li kien għadu mmuntat b'suċċess fil-prodott lest).
Sa dak iż-żmien, kont diġà rrealizzajt l-inkonvenjenza li nuża json għall-kompitu tiegħi - wara kollox, il-metadata suppost kellha tiġi editjata manwalment, u l-format xml huwa aktar adattat għal dan. It-tieni argument favur xml kien il-preżenza tal-klassijiet kollha meħtieġa fil-JDK, li għamilha possibbli li tieqaf tiġġieled ma 'librerija esterna. Bi pjaċir kbir, ittrasferijt il-metadata kollha minn json għal xml u bdejt neditja l-loġika tal-awtokompletazzjoni.
Eżempju ta' 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>
Bħala riżultat I
Meta saru bidliet fil-kodiċi, qamet il-mistoqsija - min se jimla l-fajl bil-metadata? Hemm ħafna entitajiet fir-repożitorju, huwa għali li tirreġistra l-konnessjonijiet kollha lilek innifsek. Bħala riżultat, iddeċidejt li nagħmel dan il-kompitu lill-analisti sħabi. Poġġejt il-fajl tal-metadata f'svn, minn fejn isir checkout għad-direttorju lokali bil-programm. Il-prinċipju huwa dan: dehret entità ġdida fir-repożitorju? Analista wieħed jidħol possibbli jingħaqad fil-fajl, jikkommetti bidliet, il-bqija jiċċekkjaw lilhom infushom u jgawdu l-awto-tlestija tax-xogħol: komunità, akkumulazzjoni ta 'għarfien u dak kollu. Mexxa workshop dwar l-użu tal-programm għall-kollegi, kiteb artiklu f'Confluence - issa l-kumpanija għandha għodda waħda aktar konvenjenti.
Il-ħidma fuq din il-karatteristika tatni l-fehim li m'hemmx għalfejn nibża' li tpinġi proġetti ta 'sors miftuħ - bħala regola, għandhom arkitettura ċara, u anke għarfien bażiku tal-lingwa se jkun biżżejjed għall-esperimenti. U b'ċertu ammont ta 'persistenza, int saħansitra tkun tista' teħles minn operazzjonijiet ta 'rutina mibegħda, u tiffranka ħin lilek innifsek għal esperimenti ġodda.
Sors: www.habr.com