Szereted újra és újra megismételni a rutinműveleteket? Szóval én nem. De minden alkalommal, amikor az SQL-kliensben a Rostelecom tárolóval dolgoztam, manuálisan kellett regisztrálnom a táblák közötti összes csatlakozást. És mindez annak ellenére, hogy az esetek 90%-ában a táblák összekapcsolásának mezői és feltételei kérésről kérésre egybeestek! Úgy tűnik, hogy bármelyik SQL-kliens rendelkezik automatikus kiegészítési funkciókkal, de a tárolók esetében ez nem mindig működik: ritkán tartalmaznak egyedi kényszert és idegen kulcsot a teljesítmény javítása érdekében, és e nélkül a program nem fogja tudni, hogy az entitások hogyan kapcsolódnak egymáshoz. egyéb, és mit tud nyújtani az Ön számára.
Miután átmentem a tagadáson, a haragon, az alkudozáson, a depresszión és az elfogadás közeledtén, úgy döntöttem – miért ne próbálnám meg magam is végrehajtani az automatikus kitöltést a blackjack segítségével, és ezt a helyes módon? A dbeaver klienst használom, java-ban íródott, van nyílt forráskódú közösségi verziója. Kifejlett egy egyszerű terv:
- Keresse meg a forráskódban azokat az osztályokat, amelyek felelősek az automatikus kiegészítésért
- Átirányítsa őket a külső metaadatokkal való munkavégzésre, és onnan gyűjtsön információkat a csatlakozásokról
- ??????
- NYERESÉG
Az első pontot elég gyorsan kitaláltam - a hibakövetőben találtam egy kérést az automatikus kitöltés beállítására és a kapcsolódó
A json használatához úgy döntöttem, hogy a könyvtárat használom
A build hibákat végül sikerült kijavítanom: a könyvtárat nem pom.xml-ben, hanem az OSGI által megkövetelt manifest.mf manifestben regisztráltam, miközben import-package-ként adtam meg. Nem a legszebb megoldás, de működik. Aztán jött a következő meglepetés. Ha az Intellij Idea-ban fejleszt, akkor nem mehet egyszerűen és kezdheti el az eclipse platformon alapuló projektjének hibakeresését: egy tapasztalatlan fejlesztőnek nem kevesebbet kell szenvednie, mint egy elemzőnek a lekérdezés befejezése nélkül. Maguk a hódfejlesztők segítettek, és a wikiben jelezték az összes táncot egy tamburával, amelyet meg kell tenni. A legbosszantóbb az, hogy a projekt még ennyi guggolás után sem akart debug-ban elindulni az import-csomaggal összekapcsolt json könyvtárral (annak ellenére, hogy a késztermékbe így is sikeresen összerakták).
Ekkor már rájöttem, hogy milyen kényelmetlenséget okoz a json használata a feladatomra - elvégre a metaadatokat manuálisan kellett volna szerkeszteni, és erre az xml formátum jobban megfelel. A második érv az xml mellett az összes szükséges osztály jelenléte volt a JDK-ban, ami lehetővé tette a külső könyvtárral való küzdelem leállítását. Nagy örömmel átvittem az összes metaadatot a json-ból xml-be, és elkezdtem szerkeszteni az automatikus kiegészítési logikát.
Metaadat példa
<?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>
Ennek eredményeként I
Amikor megváltoztatták a kódot, felmerült a kérdés – ki fogja kitölteni a fájlt metaadatokkal? Sok entitás van az adattárban, költséges az összes kapcsolatot saját kezűleg regisztrálni. Ennek eredményeként úgy döntöttem, hogy ezt a feladatot elemzőtársaimra bízom. A metaadat fájlt svn-ben tettem fel, ahonnan a helyi könyvtárba történik a fizetés a programmal. Az elv a következő: megjelent-e új entitás a repositoryban? Az egyik elemző beírja a fájlba a lehetséges csatlakozásokat, végrehajtja a változtatásokat, a többiek megnézik magukat, és élvezik a működő automatikus kiegészítést: közösséget, tudásgyűjtést és minden mást. Munkaértekezletet tartott a program használatáról kollégái számára, cikket írt a Confluence-ben - most a cég egy kényelmesebb eszközzel rendelkezik.
Ezen a funkción való munka során megértettem, hogy nem kell félni a nyílt forráskódú projektekkel való bütyköléstől - ezek általában tiszta architektúrával rendelkeznek, és még az alapvető nyelvtudás is elegendő lesz a kísérletekhez. És bizonyos kitartással még a gyűlölt rutinműveletektől is megszabadulhat, időt spórolva meg magának az új kísérletekre.
Forrás: will.com