Naha anjeun resep ngulang operasi rutin deui sareng deui? Janten kuring henteu. Tapi unggal waktos di klien SQL nalika gawé bareng gudang Rostelecom, kuring kungsi ngadaptarkeun sakabéh ngagabung antara tabel sacara manual. Sareng ieu sanaos kanyataan yén dina 90% kasus widang sareng kaayaan pikeun ngahijikeun tabel coincided ti pamundut ka pamundut! Ieu bakal sigana nu mana wae klien SQL boga fungsi auto-parantosan, tapi pikeun storages teu salawasna jalan: aranjeunna jarang kaasup konstrain unik tur konci asing pikeun ngaronjatkeun kinerja, sarta tanpa ieu program moal nyaho kumaha entitas nu patali jeung unggal. sejen tur naon eta tiasa ngalakukeun pikeun anjeun nawiskeun.
Ngaliwatan panolakan, ambek-ambekan, tawar menawar, depresi sarta ngadeukeutan ditampa, Kuring mutuskeun - naha henteu coba pikeun nerapkeun autofill kalawan blackjack sorangan sarta ngalakukeun eta jalan katuhu? Kuring nganggo klien dbeaver, ditulis dina java, éta ngagaduhan versi komunitas open source. Hiji rencana basajan geus matured:
- Manggihan kelas dina kode sumber nu jawab autocompletion
- Alihan aranjeunna pikeun dianggo sareng metadata éksternal sareng narik inpormasi ngeunaan gabung ti dinya
- ??????
- kauntungan
Kuring terang titik anu mimiti gancang - kuring mendakan pamundut dina tracker bug pikeun nyaluyukeun autofill sareng anu aya hubunganana.
Pikeun damel sareng json kuring mutuskeun pikeun ngagunakeun perpustakaan
Tungtungna, kuring junun ngalereskeun kasalahan ngawangun: Kuring didaptarkeun perpustakaan teu di pom.xml, tapi dina manifest.mf manifest, sakumaha diperlukeun ku OSGI, bari nangtukeun salaku impor-pakét. Teu solusi paling geulis, tapi jalan. Lajeng kejutan salajengna mucunghul. Upami anjeun nuju ngembangkeun Intellij Idea, anjeun moal tiasa ngan ukur ngamimitian nga-debug proyek anjeun dumasar kana platform samagaha: pamekar anu teu berpengalaman kedah sangsara teu langkung ti hiji analis tanpa parantosan query. Pamekar berang-berang sorangan sumping ka nyalametkeun, nunjukkeun dina wiki sagala tarian jeung rebana anu kudu dipigawé. Hal anu paling ngaganggu nyaéta yén sanajan saatos sadayana squats ieu, proyék éta henteu hoyong diluncurkeun dina debug sareng perpustakaan json dihubungkeun liwat pakét-impor (sanaos kanyataan yén éta masih suksés dirakit kana produk réngsé).
Dina waktos éta, kuring parantos sadar kana kasulitan ngagunakeun json pikeun tugas kuring - saatosna, metadata sakuduna diédit sacara manual, sareng format xml langkung cocog pikeun ieu. Argumen kadua pikeun xml nyaéta ayana sadaya kelas anu diperyogikeun dina JDK, anu ngamungkinkeun pikeun ngeureunkeun gelut sareng perpustakaan éksternal. Kalayan senang pisan, kuring mindahkeun sadaya metadata tina json ka xml sareng ngamimitian ngédit logika autocomplete.
Conto 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>
Hasilna I
Nalika parobahan dilakukeun kana kode, timbul patarosan - saha anu bakal ngeusian file nganggo metadata? Aya seueur éntitas dina gudang, éta mahal pikeun ngadaptarkeun sadaya sambungan sorangan. Hasilna, kuring mutuskeun pikeun napelkeun tugas ieu ka sasama analis kuring. Kuring dipasang file metadata di svn, ti mana Checkout a dijieun ka diréktori lokal kalawan program. Prinsipna nyaéta kieu: naha éntitas énggal muncul dina gudang? Hiji analis asupkeun kamungkinan ngagabung kana file, commits parobahan, sésana pariksa kaluar ka diri jeung ngarasakeun karya otomatis-parantosan: komunitas, akumulasi pangaweruh jeung sagala rupa nu. Ngalaksanakeun bengkel ngeunaan ngagunakeun program pikeun kolega, nyerat tulisan dina Confluence - ayeuna perusahaan ngagaduhan alat anu langkung saé.
Gawé dina fitur ieu masihan kuring pamahaman yén teu kudu sieun tinker kalawan proyék open source - sakumaha aturan, maranéhna boga arsitektur jelas, komo pangaweruh dasar basa bakal cukup pikeun percobaan. Sareng kalayan sababaraha kegigihan, anjeun malah bakal tiasa nyingkirkeun operasi rutin anu dibenci, ngahémat waktos diri pikeun percobaan énggal.
sumber: www.habr.com