Wëllt Dir Routine Operatiounen ëmmer erëm widderhuelen? Also ech net. Awer all Kéier am SQL Client wann ech mat der Rostelecom Späichere schaffen, hunn ech all d'Joints tëscht den Dëscher manuell registréiert. An dat trotz der Tatsaach, datt an 90% vun de Fäll d'Felder an d'Konditioune fir Dëscher matzemaachen aus Ufro un Ufro zesummegefall! Et géif schéngen datt all SQL Client automatesch Fäerdegstellungsfunktiounen huet, awer fir Späichere funktionnéiert et net ëmmer: si enthalen selten eenzegaartegen Zwang an auslännesche Schlëssel fir d'Performance ze verbesseren, an ouni dëst wäert de Programm net wëssen wéi Entitéite mat all Zesummenhang sinn. aner a wat et kann fir Iech bidden.
Пройдя через отрицание, гнев, торг, депрессию и приближаясь к принятию, я решил — а почему бы самому не попробовать реализовать автозаполнение с блекджеком и как положено? Я пользуюсь клиентом dbeaver, написанным на java, у него есть комьюнити версия с открытым исходным кодом. Созрел нехитрый план:
- Найти в исходном коде классы, отвечающие за автозаполнение
- Переориентировать их на работу с внешними метаданными и подтягивать оттуда информацию о джойнах
- ??????
- PROFIT
С первым пунктом достаточно быстро разобрался — нашел в багтрекере запрос на корректировку автозаполнения и в связанном
Fir mat json ze schaffen, hunn ech decidéiert d'Bibliothéik ze benotzen
Um Enn hunn ech et fäerdeg bruecht d'Baufehler ze fixéieren: Ech hunn d'Bibliothéik net an pom.xml registréiert, awer am manifest.mf Manifest, wéi vun OSGI gefuerdert, wärend et als Import-Package uginn. Net déi schéinste Léisung, awer et funktionnéiert. Dunn ass déi nächst Iwwerraschung opgetaucht. Wann Dir an Intellij Idea entwéckelt, kënnt Dir net einfach goen a fänken un Äre Projet op Basis vun der Sonnendäischtertplattform ze Debuggen: en onerfueren Entwéckler soll net manner wéi en Analyst leiden ouni Ufroen fäerdeg ze maachen. D'Beaver-Entwéckler selwer koumen zur Rettung, an hunn an der Wiki all d'Dänz mat enger Tambourin uginn, déi musse gemaach ginn. Déi lästegst Saach ass datt och no all dëse Squats de Projet net an Debug mat der json Bibliothéik lancéiert wollt ginn, déi iwwer Import-Package verbonne sinn (trotz der Tatsaach datt et nach ëmmer erfollegräich an de fäerdege Produkt zesummegesat gouf).
Zu där Zäit hat ech schonn d'Onbequemlechkeet gemierkt fir json fir meng Aufgab ze benotzen - schliisslech sollten d'Metadaten manuell geännert ginn, an d'Xml-Format ass besser fir dëst gëeegent. Dat zweet Argument fir xml war d'Präsenz vun all néideg Klassen am JDK, wat et méiglech gemaach huet mat enger externer Bibliothéik ze kämpfen. Mat grousser Freed hunn ech all Metadaten vun json op xml transferéiert an ugefaang d'Autokomplett Logik z'änneren.
Metadaten Beispill
<?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>
Als Resultat hunn ech
Wann Ännerungen am Code gemaach goufen, ass d'Fro opgestan - wien fëllt d'Datei mat Metadaten? Et gi vill Entitéiten am Repository, et ass deier fir all Verbindungen selwer ze registréieren. Als Resultat hunn ech décidéiert dës Aufgab fir meng Matbierger Analysten ze ginn. Ech hunn d'Metadatendatei an svn gepost, vu wou e Kasse an de lokalen Verzeichnis mam Programm gemaach gëtt. De Prinzip ass dëst: ass eng nei Entitéit am Repository opgetaucht? Een Analyst trëtt méiglech Umeldungen an d'Datei, engagéiert Ännerunge, de Rescht kontrolléiert sech selwer a genéisst déi funktionnéierend Auto-Fäerdegstellung: Gemeinschaft, Akkumulation vu Wëssen an all dat. Huet e Workshop iwwer d'Benotzung vum Programm fir Kollegen, geschriwwen en Artikel am Confluence - elo huet d'Firma e méi praktescht Tool.
D'Aarbecht un dëser Fonktioun huet mir d'Versteesdemech ginn, datt et net néideg ze fäerten mat Open Source Projeten ze bastelen - als Regel, si hunn eng kloer Architektur, an och Basis Wëssen vun der Sprooch wäert genuch fir Experimenter ginn. A mat enger gewësser Quantitéit vu Persistenz kënnt Dir souguer vun haassen Routine-Operatiounen lass ginn, spuert Iech Zäit fir nei Experimenter.
Source: will.com