Muntazam operatsiyalarni qayta-qayta takrorlashni yoqtirasizmi? Demak, men buni qilmayman. Ammo har safar SQL mijozida Rostelecom xotirasi bilan ishlaganda, men jadvallar orasidagi barcha ulanishlarni qo'lda ro'yxatdan o'tkazishim kerak edi. Va bu 90% hollarda jadvallarni birlashtirish uchun maydonlar va shartlar so'rovdan so'rovga mos kelishiga qaramay! Ko'rinishidan, har qanday SQL mijozi avtomatik to'ldirish funksiyalariga ega, ammo saqlash uchun u har doim ham ishlamaydi: ishlashni yaxshilash uchun ular kamdan-kam hollarda noyob cheklash va tashqi kalitni o'z ichiga oladi va busiz dastur ob'ektlarning har biriga qanday bog'liqligini bilmaydi. boshqa va u sizga nima taklif qilishi mumkin.
Rad etish, g'azab, savdolashish, tushkunlik va qabulga yaqinlashib, men qaror qildim - nega o'zim blackjack bilan avtomatik to'ldirishni amalga oshirishga va buni to'g'ri yo'l tutishga harakat qilmayman? Men java-da yozilgan dbeaver mijozidan foydalanaman, u ochiq manbali hamjamiyat versiyasiga ega. Oddiy reja ishlab chiqildi:
- Manba kodida avtomatik to'ldirish uchun mas'ul bo'lgan sinflarni toping
- Ularni tashqi metama'lumotlar bilan ishlashga yo'naltiring va u erdan birlashmalar haqidagi ma'lumotlarni oling
- ??????
- PROFIT
Men birinchi nuqtani juda tez tushundim - xato kuzatuvchisida avtomatik to'ldirishni sozlash bo'yicha so'rovni topdim.
json bilan ishlash uchun kutubxonadan foydalanishga qaror qildim
Oxir-oqibat, men qurish xatolarini tuzatishga muvaffaq bo'ldim: kutubxonani pom.xml da emas, balki OSGI talab qilgan manifest.mf manifestida import-paket sifatida ko'rsatgan holda ro'yxatdan o'tkazdim. Eng chiroyli yechim emas, lekin u ishlaydi. Keyin navbatdagi ajablanib paydo bo'ldi. Agar siz Intellij Idea-da ishlayotgan bo'lsangiz, shunchaki borib, Eclipse platformasi asosida loyihangizni disk raskadrovka qilishni boshlay olmaysiz: tajribasiz ishlab chiquvchi so'rovni bajarmasdan tahlilchidan kam bo'lmasligi kerak. Qunduz ishlab chiqaruvchilarining o'zlari yordamga kelishdi, bu esa wiki-da daf bilan bajarilishi kerak bo'lgan barcha raqslarni ko'rsatib berdi. Eng zerikarli tomoni shundaki, bunchalik squatsdan keyin ham loyiha import-paket orqali ulangan json kutubxonasi bilan disk raskadrovkada ishga tushishni istamadi (u tayyor mahsulotga muvaffaqiyatli yig'ilganiga qaramay).
O'sha vaqtga kelib, men o'z vazifam uchun json-dan foydalanishning noqulayligini allaqachon tushungan edim - axir, metama'lumotlar qo'lda tahrirlanishi kerak edi va xml formati buning uchun ko'proq mos keladi. Xml foydasiga ikkinchi dalil JDKda barcha kerakli sinflarning mavjudligi bo'lib, bu tashqi kutubxona bilan kurashni to'xtatishga imkon berdi. Men katta mamnuniyat bilan barcha metama'lumotlarni json-dan xml-ga o'tkazdim va avtoto'ldirish mantiqini tahrirlashni boshladim.
Metadata misoli
<?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>
Natijada I
Kodga o'zgartirishlar kiritilganda, savol tug'ildi - faylni metadata bilan kim to'ldiradi? Omborda ko'plab ob'ektlar mavjud, barcha ulanishlarni o'zingiz ro'yxatdan o'tkazish qimmat. Natijada men bu vazifani tahlilchi hamkasblarimga topshirishga qaror qildim. Men metadata faylini svn-ga joylashtirdim, u erdan dastur bilan mahalliy katalogga to'lov amalga oshiriladi. Printsip shunday: omborda yangi ob'ekt paydo bo'ldimi? Bitta tahlilchi faylga mumkin bo'lgan qo'shilishlarni kiritadi, o'zgarishlarni amalga oshiradi, qolganlari o'zlarini tekshiradilar va ishlaydigan avtomatik yakunlashdan zavqlanadilar: jamoa, bilim to'plash va boshqalar. Hamkasblar uchun dasturdan foydalanish bo'yicha seminar o'tkazdi, Confluence-da maqola yozdi - endi kompaniyada yana bir qulay vosita bor.
Ushbu xususiyat ustida ishlash menga ochiq kodli loyihalar bilan shug'ullanishdan qo'rqishning hojati yo'qligini tushunishga yordam berdi - qoida tariqasida, ular aniq arxitekturaga ega va hatto tajribalar uchun tilning asosiy bilimlari ham etarli bo'ladi. Va ma'lum miqdordagi qat'iyat bilan siz hatto yangi tajribalar uchun vaqtni tejab, nafratlanadigan muntazam operatsiyalardan xalos bo'lishingiz mumkin.
Manba: www.habr.com