அதையே செய்வதை எப்படி நிறுத்துவது

வழக்கமான செயல்பாடுகளை மீண்டும் மீண்டும் செய்ய விரும்புகிறீர்களா? அதனால் நான் இல்லை. ஆனால் ஒவ்வொரு முறையும் SQL கிளையண்டில் Rostelecom சேமிப்பகத்துடன் பணிபுரியும் போது, ​​அட்டவணைகளுக்கு இடையில் உள்ள அனைத்து இணைப்புகளையும் கைமுறையாக பதிவு செய்ய வேண்டியிருந்தது. 90% வழக்குகளில் அட்டவணையில் இணைவதற்கான புலங்களும் நிபந்தனைகளும் வினவலில் இருந்து வினவலுக்கு ஒத்துப்போகின்றன என்ற உண்மை இருந்தபோதிலும் இது! எந்தவொரு SQL கிளையண்டிற்கும் தானியங்கு-நிறைவு செயல்பாடுகள் இருப்பதாகத் தோன்றுகிறது, ஆனால் சேமிப்பகங்களுக்கு இது எப்போதும் வேலை செய்யாது: செயல்திறனை மேம்படுத்துவதற்காக அவை தனித்துவமான கட்டுப்பாடு மற்றும் வெளிநாட்டு விசையை அரிதாகவே உள்ளடக்குகின்றன, மேலும் இது இல்லாமல் ஒவ்வொரு நிறுவனத்திற்கும் எவ்வாறு தொடர்புடையது என்பதை நிரல் அறியாது. மற்றவை மற்றும் அது உங்களுக்கு என்ன செய்ய முடியும்.

அதையே செய்வதை எப்படி நிறுத்துவது

மறுப்பு, கோபம், பேரம் பேசுதல், மனச்சோர்வு மற்றும் ஏற்றுக்கொள்வதை நெருங்கிவிட்டதால், நான் முடிவு செய்தேன் - பிளாக் ஜாக் மூலம் தன்னியக்க நிரப்புதலை ஏன் செயல்படுத்த முயற்சிக்கக்கூடாது? நான் ஜாவாவில் எழுதப்பட்ட dbeaver கிளையண்டைப் பயன்படுத்துகிறேன், இது ஒரு திறந்த மூல சமூக பதிப்பைக் கொண்டுள்ளது. ஒரு எளிய திட்டம் முதிர்ச்சியடைந்தது:

  1. மூலக் குறியீட்டில் உள்ள வகுப்புகளைக் கண்டறிக
  2. வெளிப்புற மெட்டாடேட்டாவுடன் பணிபுரிய அவர்களைத் திருப்பிவிடவும் மற்றும் சேர்வது பற்றிய தகவலை அங்கிருந்து இழுக்கவும்
  3. ??????
  4. லாபம்

நான் முதல் புள்ளியை மிக விரைவாக கண்டுபிடித்தேன் - பிழை கண்காணிப்பாளரின் தன்னியக்க நிரப்புதலை சரிசெய்வதற்கான கோரிக்கையை நான் கண்டேன். உறுதி SQLCcompletionAnalyzer வகுப்பைக் கண்டுபிடித்தார். நான் குறியீட்டைப் பார்த்தேன், அது எனக்குத் தேவை. எல்லாம் வேலை செய்யும் வகையில் அதை மீண்டும் எழுதுவது மட்டுமே எஞ்சியுள்ளது. நான் ஒரு இலவச மாலைக்காக காத்திருந்தேன் மற்றும் செயல்படுத்தல் மூலம் சிந்திக்க ஆரம்பித்தேன். json இல் அட்டவணை இணைப்பு விதிகளை (மெட்டாடேட்டா) எழுத முடிவு செய்தேன். இந்த வடிவமைப்பில் பணிபுரிந்த எனக்கு நடைமுறை அனுபவம் இல்லை, தற்போதைய பணி இந்த விடுபட்டதை சரிசெய்ய ஒரு வாய்ப்பாக பார்க்கப்பட்டது.

json உடன் பணிபுரிய நான் நூலகத்தைப் பயன்படுத்த முடிவு செய்தேன் json-எளிய Google இலிருந்து. இங்குதான் ஆச்சரியங்கள் தொடங்கின. அது முடிந்தவுடன், dbeaver, ஒரு உண்மையான பயன்பாடாக, OSGi கட்டமைப்பைப் பயன்படுத்தி கிரகணம் இயங்குதளத்தில் எழுதப்பட்டது. அனுபவம் வாய்ந்த டெவலப்பர்களுக்கு, இந்த விஷயம் சார்புகளை நிர்வகிப்பதை வசதியாக ஆக்குகிறது, ஆனால் எனக்கு இது இருண்ட மந்திரம் போன்றது, இதற்கு நான் தெளிவாகத் தயாராக இல்லை: வழக்கம் போல், எனக்கு தேவையான வகுப்புகளை json-simple library இன் தலைப்பில் இருந்து இறக்குமதி செய்கிறேன். திருத்தப்பட்ட வகுப்பு, அதை pom. xml இல் குறிப்பிடவும், அதன் பிறகு திட்டம் திட்டவட்டமாக சாதாரணமாக அசெம்பிள் செய்ய மறுக்கிறது மற்றும் பிழைகளுடன் செயலிழக்கிறது.

முடிவில், உருவாக்கப் பிழைகளைச் சரிசெய்ய முடிந்தது: நான் நூலகத்தை pom.xml இல் பதிவு செய்யவில்லை, ஆனால் OSGI க்கு தேவையான மேனிஃபெஸ்ட்.எம்எஃப் மேனிஃபெஸ்ட்டில் பதிவு செய்தேன், அதை இறக்குமதி-தொகுப்பு என்று குறிப்பிடுகிறேன். மிக அழகான தீர்வு அல்ல, ஆனால் அது வேலை செய்கிறது. அப்போதுதான் அடுத்த ஆச்சரியம் தோன்றியது. நீங்கள் Intellij ஐடியாவை உருவாக்குகிறீர்கள் என்றால், கிரகணத் தளத்தின் அடிப்படையில் உங்கள் திட்டத்தைப் பிழைத்திருத்தம் செய்யத் தொடங்க முடியாது: ஒரு அனுபவமற்ற டெவலப்பர், வினவலை முடிக்காமல் ஒரு ஆய்வாளருக்குக் குறையாமல் பாதிக்கப்பட வேண்டும். பீவர் டெவலப்பர்கள் தாங்களே மீட்புக்கு வந்தனர், விக்கியில் செய்ய வேண்டிய அனைத்து நடனங்களையும் டம்பூரினுடன் குறிக்கிறது. மிகவும் எரிச்சலூட்டும் விஷயம் என்னவென்றால், இந்த குந்துகைகளுக்குப் பிறகும், இறக்குமதி-தொகுப்பு வழியாக இணைக்கப்பட்ட 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>

இதன் விளைவாக ஐ மாற்றங்களைச் செய்தார் SQLUtils மற்றும் SQLCcompletionAnalyzer வகுப்புகளில். யோசனை இதுதான்: அடிப்படை தர்க்கத்தைப் பயன்படுத்தி பொருத்தமான தன்னியக்க பரிந்துரைகளை நிரலால் கண்டுபிடிக்க முடியவில்லை என்றால், அது வெளிப்புற xml கோப்பைப் பயன்படுத்தி சாத்தியமான இணைப்பின் இருப்பை சரிபார்க்கிறது. இந்த அட்டவணைகள் இணைக்கப்பட வேண்டிய புலங்களைக் குறிக்கும் ஜோடி அட்டவணைகளை கோப்பு சேமித்து வைக்கிறது. eff_dttm மற்றும் exp_dttm பதிவுகளின் தொழில்நுட்ப செல்லுபடியாகும் தேதிகள் மற்றும் தர்க்கரீதியான நீக்குதல் கொடி deleted_ind ஆகியவை இயல்புநிலையாக அமைக்கப்படும்.

குறியீட்டில் மாற்றங்கள் செய்யப்பட்டபோது, ​​​​கேள்வி எழுந்தது - மெட்டாடேட்டாவுடன் கோப்பை நிரப்புவது யார்? களஞ்சியத்தில் நிறைய நிறுவனங்கள் உள்ளன, எல்லா இணைப்புகளையும் நீங்களே பதிவு செய்வது விலை உயர்ந்தது. இதன் விளைவாக, எனது சக ஆய்வாளர்களுக்கு இந்தப் பணியை வழங்க முடிவு செய்தேன். நான் மெட்டாடேட்டா கோப்பை svn இல் இடுகையிட்டேன், அங்கிருந்து நிரலுடன் உள்ளூர் கோப்பகத்திற்கு செக் அவுட் செய்யப்படுகிறது. கொள்கை இதுதான்: களஞ்சியத்தில் ஒரு புதிய நிறுவனம் தோன்றியதா? ஒரு பகுப்பாய்வாளர் கோப்பில் சாத்தியமான இணைப்பில் நுழைந்து, மாற்றங்களைச் செய்கிறார், மீதமுள்ளவர்கள் தங்களைத் தாங்களே சரிபார்த்து, வேலை செய்யும் தானாக நிறைவு செய்வதை அனுபவிக்கிறார்கள்: சமூகம், அறிவைக் குவித்தல் மற்றும் அனைத்தும். சகாக்களுக்கான திட்டத்தைப் பயன்படுத்துவதற்கான ஒரு பட்டறையை நடத்தினார், சங்கமத்தில் ஒரு கட்டுரை எழுதினார் - இப்போது நிறுவனத்திற்கு இன்னும் ஒரு வசதியான கருவி உள்ளது.

இந்த அம்சத்தில் பணிபுரிவது, திறந்த மூல திட்டங்களுடன் டிங்கர் செய்ய பயப்படத் தேவையில்லை என்ற புரிதலை எனக்கு அளித்தது - ஒரு விதியாக, அவை தெளிவான கட்டிடக்கலையைக் கொண்டுள்ளன, மேலும் மொழியின் அடிப்படை அறிவு கூட சோதனைகளுக்கு போதுமானதாக இருக்கும். ஒரு குறிப்பிட்ட அளவு விடாமுயற்சியுடன், நீங்கள் வெறுக்கப்பட்ட வழக்கமான செயல்பாடுகளிலிருந்து விடுபடலாம், புதிய சோதனைகளுக்கான நேரத்தை மிச்சப்படுத்தலாம்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்