Сіз әдеттегі операцияларды қайта-қайта қайталауды ұнатасыз ба? Сондықтан мен жоқ. Бірақ SQL клиентінде Rostelecom қоймасымен жұмыс істеген сайын, мен кестелер арасындағы барлық қосылуларды қолмен тіркеуге тура келді. Және бұл 90% жағдайда кестелерді қосу өрістері мен шарттары сұраудан сұрауға сәйкес келетініне қарамастан! Кез келген SQL клиентінің автоматты аяқтау функциялары бар сияқты, бірақ сақтау қоймалары үшін ол әрқашан жұмыс істемейді: өнімділікті жақсарту үшін олар сирек бірегей шектеуді және сыртқы кілтті қамтиды және онсыз бағдарлама субъектілердің әрқайсысымен қалай байланысты екенін білмейді. басқа және ол сіз үшін не ұсына алады.
Бас тартуды, ашулануды, мәмілелерді, депрессияны және қабылдауға жақындап, мен шешім қабылдадым - неге автотолтыруды блэкджекпен өзім енгізуге тырыспасқа және оны дұрыс істемеске? Мен java тілінде жазылған dbeaver клиентін қолданамын, оның ашық бастапқы қауымдастық нұсқасы бар. Қарапайым жоспар жетілді:
- Бастапқы кодта автотолтыруға жауапты сыныптарды табыңыз
- Оларды сыртқы метадеректермен жұмыс істеуге қайта бағыттаңыз және сол жерден біріктірулер туралы ақпаратты алыңыз
- ??????
- ПАЙДА
Мен бірінші тармақты тез түсіндім - мен қателерді бақылаушыдан автотолтыруды реттеуге және қатысты сұрауды таптым.
json-мен жұмыс істеу үшін мен кітапхананы пайдалануды шештім
Соңында мен құрастыру қателерін түзетіп алдым: кітапхананы pom.xml емес, OSGI талап еткендей manifest.mf манифестінде импорт-пакет ретінде көрсете отырып тіркедім. Ең әдемі шешім емес, бірақ ол жұмыс істейді. Содан кейін келесі тосынсый пайда болды. Егер сіз Intellij Idea-да дамып жатсаңыз, сіз Eclipse платформасы негізінде жобаңызды жөндеуге кірісе алмайсыз: тәжірибесіз әзірлеуші сұрауды аяқтамай-ақ талдаушыдан кем зардап шегуі керек. Құндызды әзірлеушілердің өздері көмекке келді, викиде жасалуы керек барлық билерді домбырамен көрсетті. Ең тітіркендіретін нәрсе, тіпті осы скваттардан кейін де жоба импорт-пакет арқылы қосылған 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>
Нәтижесінде И
Кодқа өзгертулер енгізілгенде, сұрақ туындады - файлды метадеректермен кім толтырады? Репозиторийде көптеген нысандар бар, барлық қосылымдарды өзіңіз тіркеу қымбатқа түседі. Нәтижесінде мен бұл тапсырманы аналитик әріптестеріме тапсыруды жөн көрдім. Мен метадеректер файлын svn ішінде орналастырдым, ол жерден бағдарлама арқылы жергілікті каталогқа тексеру жүргізіледі. Бұл принцип: репозиторийде жаңа нысан пайда болды ма? Бір аналитик файлға ықтимал қосылымдарды енгізеді, өзгерістер жасайды, қалғандары өздерін тексереді және жұмыс істейтін автотолтырудан ләззат алады: қауымдастық, білім жинақтау және т.б. Әріптестер үшін бағдарламаны пайдалану бойынша семинар өткізді, Confluence-те мақала жазды - енді компанияда тағы бір ыңғайлы құрал бар.
Бұл функциямен жұмыс істеу маған ашық бастапқы жобалармен айналысудан қорықпаудың қажеті жоқ екенін түсінуге мүмкіндік берді - әдетте, олардың нақты архитектурасы бар, тіпті эксперименттер үшін тілдің қарапайым білімі жеткілікті болады. Белгілі бір табандылықпен сіз жаңа эксперименттерге уақытыңызды үнемдей отырып, тіпті жиіркенішті операциялардан арыла аласыз.
Ақпарат көзі: www.habr.com