Çawa dev ji kirina heman tiştî berdin

Ma hûn dixwazin operasyonên rûtîn careke din dubare bikin? Ji ber vê yekê ez nakim. Lê her carê ku di muwekîlê SQL-ê de dema ku bi hilanîna Rostelecom re dixebitim, min neçar ma ku hemî girêdanên di navbera tabloyan de bi destan tomar bikim. Û ev tevî wê yekê ku di 90% bûyeran de zevî û şertên tevlêbûna tabloyan ji daxwazê ​​heya daxwazê ​​li hev bûne! Wusa dixuye ku her xerîdarek SQL xwedan fonksiyonên temamkirina otomatîkî ye, lê ji bo hilanînê ew her gav naxebite: ew kêm caran astengiyek yekta û mifteya biyanî vedigirin da ku performansê baştir bikin, û bêyî vê bername dê nizane ka sazî çawa bi her yekê re têkildar in. din û tiştê ku ew dikare ji bo we pêşkêşî bike.

Çawa dev ji kirina heman tiştî berdin

Piştî înkar, hêrs, danûstendin, depresyonê û nêzîkbûna pejirandinê derbas bû, min biryar da - çima ez bixwe hewl nekim ku bixweber bi blackjack-ê re bicîh bikim û bi awayê rast bikim? Ez muwekîlê dbeaver-ê, ku di java-yê de hatî nivîsandin bikar tînim, guhertoyek civata çavkaniya vekirî heye. Planek hêsan gihîştiye:

  1. Di koda çavkaniyê de dersên ku ji temamkirina otomatîkî berpirsiyar in bibînin
  2. Wan beralî bikin ku bi metadaneyên derveyî re bixebitin û agahdariya li ser tevlêbûnê ji wir bikişînin
  3. ??????
  4. BIRIN

Min xala yekem pir zû fêhm kir - min daxwazek di şopînerê xeletiyê de dît ku dakêşana otomatîkî û di pêwendiyê de rast bike bikaranîn çîna SQLCompletionAnalyzer kifş kir. Min li kodê mêze kir û ya ku ez hewce dikim ew e. Tiştê ku dimîne ev e ku meriv wê ji nû ve binivîsîne da ku her tişt bixebite. Ez li benda êvarek belaş mam û dest pê kir ku li ser pêkanînê bifikirim. Min biryar da ku qaîdeyên girêdana tabloyê (metadata) di json de binivîsim. Tecrûbeya min a pratîkî ya ku bi vê formatê re xebitî tune bû û wezîfeya heyî wekî derfetek ji bo serrastkirina vê kêmasiyê hate dîtin.

Ji bo ku ez bi json re bixebitim, min biryar da ku pirtûkxaneyê bikar bînim json-sade ji Google. Li vir surprîz dest pê kir. Wekî ku derket holê, dbeaver, wekî serîlêdanek rastîn, li ser platforma Eclipse bi karanîna çarçoveya OSGi hate nivîsandin. Ji bo pêşdebirên bi tecrûbe, ev tişt ji bo birêvebirina pêwendiyan hêsan dike, lê ji bo min ew bêtir mîna sêrbaziya tarî bû, ji bo ku ez eşkere ne amade bûm: wekî her car, ez dersên ku ez hewce dikim ji pirtûkxaneya json-hêsan di serî de derdixim. çîna hatî guherandin, wê di pom.xml de diyar bikin, pişt re proje bi kategorî kombûna normal red dike û bi xeletiyan têk diçe.

Di dawiyê de, min karî xeletiyên çêkirinê rast bikim: Min pirtûkxane ne di pom.xml, lê di manifest.mf manifest de tomar kir, wekî ku ji hêla OSGI ve tê xwestin, dema ku ew wekî pakêta import-pakê destnîşan kir. Ne çareseriya herî xweşik e, lê ew dixebite. Paşê surprîzek din xuya bû. Ger hûn di Intellij Idea de pêşve diçin, hûn nekarin tenê biçin û dest bi debugkirina projeya xwe ya li ser bingeha platforma eclipse bikin: Pêşvebirek bê tecrube divê bêyî temamkirina pirsê ji analîstek kêmtir êşê bikişîne. Pêşdebirên beaver bixwe hatin alîkariyê, di wiki de hemî dansên bi tembûrê ku divê bêne kirin destnîşan kirin. Tiştê herî acizker ev e ku tewra piştî van hemî squatan jî, proje nexwest ku bi pirtûkxaneya json-a ku bi navgîniya import-pakêtê ve girêdayî ye di debugê de were destpêkirin (tevî ku ew hîn jî bi serfirazî di hilbera qediyayî de hatî berhev kirin).

Di wê demê de, min jixwe nerehetiya karanîna json ji bo peywira xwe fêm kiribû - her tiştî, diviyabû ku metadata bi destan were guheztin, û forma xml ji bo vê çêtir e. Argumana duyemîn di berjewendiya xml de hebûna hemî dersên pêwîst di JDK-ê de bû, ku ev gengaz kir ku şer bi pirtûkxaneyek derveyî re rawestîne. Bi kêfxweşiyek mezin, min hemî metadata ji json veguhezand xml û dest bi guherandina mantiqa temamkirina xweser kir.

Mînaka 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>

Di encamê de ez guhertin çêkirin nav çînên SQLUtils û SQLCompletionAnalyzer. Fikir ev e: heke bernameyê bi karanîna mantiqa bingehîn nikarîbû pêşniyarên temamkirina otomatîkî ya minasib bibîne, wê hingê ew hebûna girêdanên gengaz bi karanîna pelek xml ya derveyî kontrol dike. Pelê bi xwe cotên tabloyan hildide ku qadên ku divê van tabloyan pê ve girêbidin destnîşan dikin. Sînorkirinên li ser tarîxên derbasdariya teknîkî yên tomarên eff_dttm û exp_dttm û ala jêbirina mentiqî deleted_ind ji hêla xwerû ve têne danîn.

Dema ku guhertin di kodê de hatin kirin, pirs derket holê - kî dê pelê bi metadata tije bike? Di depoyê de gelek sazî hene, biha ye ku meriv hemî pêwendiyan bixwe tomar bike. Di encamê de, min biryar da ku ez vê peywirê bidim hevalên xwe yên analîst. Min pelê metadata di svn de şand, ji wir bi bernameyê re li pelrêça herêmî tê kirin. Prensîb ev e: di depoyê de saziyek nû derketiye? Analîstek tevlîheviyên mimkun di pelê de dike, guhertinan pêk tîne, yên mayî li xwe dinihêrin û ji temamkirina otomatîkî ya xebatê kêfê digirin: civak, berhevkirina zanînê û her tiştî. Komxebatek li ser karanîna bernameyê ji bo hevkaran pêk anî, gotarek li Confluence nivîsand - naha pargîdanî amûrek hêsantir heye.

Xebata li ser vê taybetmendiyê ji min re fêm kir ku ne hewce ye ku meriv bitirse ku bi projeyên çavkaniya vekirî bitirse - wekî qaîdeyek, ew xwedan mîmariyek zelal in, û tewra zanîna bingehîn a zimên jî dê ji bo ceribandinan bes be. Û bi hêjmarek mayînde, hûn ê tewra karibin ji operasyonên rûtîn ên nefret xilas bibin, wextê xwe ji bo ceribandinên nû xilas bikin.

Source: www.habr.com

Add a comment