Apa sampeyan seneng mbaleni operasi rutin bola-bali? Dadi aku ora. Nanging saben-saben ing klien SQL nalika nggarap panyimpenan Rostelecom, aku kudu ndhaptar kabeh gabungan antarane tabel kanthi manual. Lan iki sanajan kasunyatane ing 90% kasus, lapangan lan kahanan kanggo gabung karo tabel bertepatan saka pitakon menyang pitakon! Katon manawa klien SQL duwe fungsi ngrampungake otomatis, nanging kanggo panyimpenan ora bisa digunakake: arang banget kalebu kendala unik lan kunci manca kanggo nambah kinerja, lan tanpa program kasebut ora bakal ngerti kepiye entitas ana gandhengane karo saben. liyane lan apa bisa nindakake kanggo sampeyan kurban.
Duwe liwat ora ngaku, nesu, tawar-menawar, depresi lan nyedhak acceptance, Aku mutusaké - kok ora nyoba kanggo ngleksanakake autofill karo blackjack dhewe lan nindakaken cara tengen? Aku nggunakake klien dbeaver, ditulis ing java, wis versi komunitas open source. Rencana prasaja wis diwasa:
- Golek kelas ing kode sumber sing tanggung jawab kanggo autocompletion
- Ngalihake wong-wong mau kanggo nggarap metadata eksternal lan narik informasi babagan gabung saka kono
- ??????
- PROFIT
Aku ngerteni titik pisanan kanthi cepet - aku nemokake panjaluk ing tracker bug kanggo nyetel isi otomatis lan ing sing gegandhengan
Kanggo nggarap json aku mutusake nggunakake perpustakaan
Pungkasane, aku bisa ndandani kesalahan mbangun: Aku ndhaptar perpustakaan ora ing pom.xml, nanging ing manifest.mf manifest, kaya sing dibutuhake dening OSGI, nalika nemtokake minangka paket impor. Ora solusi sing paling ayu, nanging kerjane. Banjur kejutan sabanjure muncul. Yen sampeyan ngembangake Intellij Idea, sampeyan ora bisa miwiti debugging proyek sampeyan adhedhasar platform eclipse: pangembang sing ora duwe pengalaman kudu nandhang sangsara ora kurang saka analis tanpa ngrampungake pitakon. Pengembang berang-berang dhewe teka kanggo ngluwari, nuduhake ing wiki kabeh tarian karo rebana sing kudu dilakoni. Sing paling ngganggu yaiku sanajan sawise kabeh squats iki, proyek kasebut ora pengin diluncurake ing debug karo perpustakaan json sing disambungake liwat paket impor (senadyan kasunyatane isih kasil dirakit menyang produk rampung).
Ing wektu iku, aku wis nyadari ora nyaman nggunakake json kanggo tugasku - sawise kabeh, metadata mesthine diowahi kanthi manual, lan format xml luwih cocog kanggo iki. Argumentasi kapindho sing ndhukung xml yaiku anané kabeh kelas sing dibutuhake ing JDK, sing bisa mungkasi perang karo perpustakaan eksternal. Kanthi seneng banget, aku nransfer kabeh metadata saka json menyang xml lan miwiti nyunting logika autocomplete.
Tuladha 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>
Akibaté aku
Nalika owah-owahan digawe ing kode, muncul pitakonan - sapa sing bakal ngisi file kanthi metadata? Ana akeh entitas ing repositori, larang kanggo ndhaptar kabeh sambungan dhewe. Akibaté, aku mutusaké kanggo nemtokake tugas iki kanggo kanca-kanca analis. Aku dikirim file metadata ing svn, saka ngendi checkout digawe kanggo direktori lokal karo program. Prinsip iki: apa entitas anyar katon ing repositori? Siji analis bisa gabung menyang file kasebut, nindakake owah-owahan, liyane mriksa dhewe lan seneng ngrampungake otomatis: komunitas, akumulasi kawruh lan liya-liyane. Nindakake lokakarya babagan nggunakake program kanggo kolega, nulis artikel ing Confluence - saiki perusahaan duwe alat sing luwih trep.
Nggarap fitur iki menehi kula pangerten sing ana ora perlu wedi kanggo tinker karo proyèk open source - minangka aturan, padha duwe arsitektur cetha, lan malah kawruh dhasar saka basa bakal cukup kanggo nyobi. Lan kanthi ketekunan tartamtu, sampeyan bakal bisa nyingkirake operasi rutin sing disengiti, ngirit wektu kanggo eksperimen anyar.
Source: www.habr.com