Èske ou renmen repete operasyon woutin ankò? Se konsa, mwen pa fè sa. Men, chak fwa nan kliyan an SQL lè w ap travay ak depo Rostelecom, mwen te oblije anrejistre tout rantre ant tab yo manyèlman. Lè sa a malgre lefèt ke nan 90% nan ka jaden yo ak kondisyon pou rantre nan tab kowenside soti nan demann pou mande! Li ta sanble ke nenpòt kliyan SQL gen fonksyon oto-konpletman, men pou depo li pa toujou travay: yo raman gen ladan kontrent inik ak kle etranje yo nan lòd yo amelyore pèfòmans, ak san sa a pwogram nan pa pral konnen ki jan antite yo gen rapò ak chak. lòt ak sa li ka fè pou ou ofri.
Mwen te pase nan refi, kòlè, negosyasyon, depresyon ak apwoche akseptasyon, mwen te deside - poukisa pa eseye aplike otofill ak blakjak tèt mwen epi fè li bon fason? Mwen sèvi ak kliyan dbeaver, ekri an java, li gen yon vèsyon kominote sous louvri. Yon plan senp gen matirite:
- Jwenn klas nan kòd sous la ki responsab pou ranpli oto
- Redireksyon yo nan travay ak metadata ekstèn epi rale enfòmasyon sou rantre soti nan la
- ??????
- PWOFI
Mwen kalkile premye pwen an byen vit - mwen te jwenn yon demann nan tracker a ensèk yo ajiste otofill la ak nan
Pou travay ak json mwen deside sèvi ak bibliyotèk la
Nan fen a, mwen jere ranje erè yo bati: mwen anrejistre bibliyotèk la pa nan pom.xml, men nan manifest.mf manifest la, jan OSGI mande, pandan y ap presize li kòm enpòte-pakè. Pa pi bèl solisyon, men li travay. Lè sa a, sipriz nan pwochen parèt. Si w ap devlope nan Intellij Idea, ou pa ka jis ale epi kòmanse debogaj pwojè ou a ki baze sou platfòm la eklips: yon pwomotè san eksperyans ta dwe soufri pa mwens pase yon analis san yo pa fini rechèch. Devlopè kastò yo menm te vin pote sekou, yo endike nan wiki a tout dans yo ak yon tanbourin ki bezwen fèt. Bagay ki pi anmèdan se ke menm apre tout skwa sa yo, pwojè a pa t 'vle yo dwe lanse nan debug ak bibliyotèk la json konekte atravè enpòte-pakè (malgre lefèt ke li te toujou avèk siksè reyini nan pwodwi a fini).
Lè sa a, mwen te deja reyalize deranjman nan itilize json pou travay mwen an - apre tout, metadata yo te sipoze modifye manyèlman, ak fòma xml la pi byen adapte pou sa. Dezyèm agiman an favè xml te prezans nan tout klas ki nesesè yo nan JDK a, ki te fè li posib yo sispann goumen ak yon bibliyotèk ekstèn. Avèk anpil plezi, mwen transfere tout metadata yo soti nan json nan xml epi mwen te kòmanse koreksyon lojik autocomplete la.
Egzanp 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>
Kòm yon rezilta mwen
Lè yo te fè chanjman nan kòd la, kesyon an leve - ki moun ki pral ranpli fichye a ak metadata? Gen yon anpil nan antite nan repozitwa a, li chè pou anrejistre tout koneksyon yo tèt ou. Kòm rezilta, mwen te deside bay analis parèy mwen yo travay sa a. Mwen afiche fichye metadata a nan svn, ki soti kote yon kesye fèt nan anyè lokal la ak pwogram nan. Prensip la se sa a: gen yon nouvo antite parèt nan depo a? Yon analis antre posib rantre nan dosye a, komèt chanjman yo, rès la tcheke soti nan tèt yo epi jwi travay la oto-konpletman: kominote, akimilasyon nan konesans ak tout sa. Fè yon atelye sou lè l sèvi avèk pwogram nan pou kòlèg li, te ekri yon atik nan Confluence - kounye a konpayi an gen yon zouti ki pi pratik.
Travay sou karakteristik sa a te ban m 'konpreyansyon ke pa gen okenn bezwen pè brikole ak pwojè sous louvri - kòm yon règ, yo gen yon achitekti klè, e menm konesans debaz nan lang lan pral ase pou eksperyans. Ak yon sèten kantite pèsistans, ou pral menm kapab debarase m de operasyon woutin rayi, ekonomize tèt ou tan pou nouvo eksperyans.
Sous: www.habr.com