ืื™ืš ืœื”ืคืกื™ืง ืœืขืฉื•ืช ืืช ืื•ืชื• ื”ื“ื‘ืจ

ื”ืื ืืชื” ืื•ื”ื‘ ืœื—ื–ื•ืจ ืขืœ ืคืขื•ืœื•ืช ืฉื’ืจืชื™ื•ืช ืฉื•ื‘ ื•ืฉื•ื‘? ืื– ืื ื™ ืœื. ืื‘ืœ ื‘ื›ืœ ืคืขื ื‘ืœืงื•ื— SQL ื›ืฉืขื‘ื“ืชื™ ืขื ื”ืื—ืกื•ืŸ ืฉืœ Rostelecom, ื”ื™ื™ืชื™ ืฆืจื™ืš ืœืจืฉื•ื ืืช ื›ืœ ื”ื—ื™ื‘ื•ืจื™ื ื‘ื™ืŸ ื”ื˜ื‘ืœืื•ืช ื‘ืื•ืคืŸ ื™ื“ื ื™. ื•ื–ืืช ืœืžืจื•ืช ืฉื‘-90% ืžื”ืžืงืจื™ื ื”ืฉื“ื•ืช ื•ืชื ืื™ ื”ื”ืฆื˜ืจืคื•ืช ืœืฉื•ืœื—ื ื•ืช ืขื•ืœื™ื ื‘ืงื ื” ืื—ื“ ื‘ื™ืŸ ื‘ืงืฉื” ืœื‘ืงืฉื”! ื ืจืื” ืฉืœื›ืœ ืœืงื•ื— SQL ื™ืฉ ืคื•ื ืงืฆื™ื•ืช ืฉืœ ื”ืฉืœืžื” ืื•ื˜ื•ืžื˜ื™ืช, ืื‘ืœ ืขื‘ื•ืจ ืื—ืกื•ืŸ ื–ื” ืœื ืชืžื™ื“ ืขื•ื‘ื“: ืœืขืชื™ื ื ื“ื™ืจื•ืช ื”ื ื›ื•ืœืœื™ื ืื™ืœื•ืฅ ื™ื™ื—ื•ื“ื™ ื•ืžืคืชื— ื–ืจ ืขืœ ืžื ืช ืœืฉืคืจ ืืช ื”ื‘ื™ืฆื•ืขื™ื, ื•ื‘ืœืขื“ื™ื• ื”ืชื•ื›ื ื™ืช ืœื ืชื“ืข ื›ื™ืฆื“ ื™ืฉื•ื™ื•ืช ืงืฉื•ืจื•ืช ืœื›ืœ ืื—ื“ ืžื”ื. ืื—ืจ ื•ืžื” ื–ื” ื™ื›ื•ืœ ืœืขืฉื•ืช ื‘ืฉื‘ื™ืœืš ืœื”ืฆื™ืข.

ืื™ืš ืœื”ืคืกื™ืง ืœืขืฉื•ืช ืืช ืื•ืชื• ื”ื“ื‘ืจ

ืœืื—ืจ ืฉืขื‘ืจืชื™ ื”ื›ื—ืฉื”, ื›ืขืก, ืžื™ืงื•ื—, ื“ื™ื›ืื•ืŸ ื•ื”ืชืงืจื‘ื•ืช ืœืงื‘ืœื”, ื”ื—ืœื˜ืชื™ โ€“ ืœืžื” ืœื ืœื ืกื•ืช ืœื™ื™ืฉื ืžื™ืœื•ื™ ืื•ื˜ื•ืžื˜ื™ ืขื ื‘ืœืืง ื’'ืง ื‘ืขืฆืžื™ ื•ืœืขืฉื•ืช ื–ืืช ื‘ืฆื•ืจื” ื”ื ื›ื•ื ื”? ืื ื™ ืžืฉืชืžืฉ ื‘ืœืงื•ื— dbeaver, ืฉื ื›ืชื‘ ื‘-java, ื™ืฉ ืœื• ื’ืจืกืช ืงื”ื™ืœืช ืงื•ื“ ืคืชื•ื—. ืชื•ื›ื ื™ืช ืคืฉื•ื˜ื” ื”ื‘ืฉื™ืœื”:

  1. ืžืฆื ืžื—ืœืงื•ืช ื‘ืงื•ื“ ื”ืžืงื•ืจ ืฉืื—ืจืื™ื•ืช ืœื”ืฉืœืžื” ืื•ื˜ื•ืžื˜ื™ืช
  2. ื”ืคื ื” ืื•ืชื ืžื—ื“ืฉ ืœืขื‘ื•ื“ื” ืขื ืžื˜ื ื ืชื•ื ื™ื ื—ื™ืฆื•ื ื™ื™ื ื•ืžืฉื ืžื™ื“ืข ืขืœ ื”ืฆื˜ืจืคื•ืช
  3. ??
  4. ืจื•ื•ื—

ื”ื‘ื ืชื™ ืืช ื”ื ืงื•ื“ื” ื”ืจืืฉื•ื ื” ื“ื™ ืžื”ืจ - ืžืฆืืชื™ ื‘ืงืฉื” ื‘ืžืขืงื‘ ืื—ืจ ื‘ืื’ื™ื ืœื”ืชืื™ื ืืช ื”ืžื™ืœื•ื™ ื”ืื•ื˜ื•ืžื˜ื™ ื•ื‘ืงื˜ืข ื”ืงืฉื•ืจ ืœึฐื‘ึทืฆึตืขึท ื’ื™ืœื” ืืช ื”ืžื—ืœืงื” SQLCompletionAnalyzer. ื”ืกืชื›ืœืชื™ ืขืœ ื”ืงื•ื“ ื•ื–ื” ืžื” ืฉืื ื™ ืฆืจื™ืš. ื›ืœ ืžื” ืฉื ื•ืชืจ ื”ื•ื ืœืฉื›ืชื‘ ืื•ืชื• ื›ืš ืฉื”ื›ืœ ื™ืขื‘ื•ื“. ื—ื™ื›ื™ืชื™ ืœืขืจื‘ ืคื ื•ื™ ื•ื”ืชื—ืœืชื™ ืœื—ืฉื•ื‘ ืขืœ ื”ื™ื™ืฉื•ื. ื”ื—ืœื˜ืชื™ ืœื›ืชื•ื‘ ื—ื•ืงื™ ืงื™ืฉื•ืจ ืœื˜ื‘ืœื” (ืžื˜ื ื ืชื•ื ื™ื) ื‘-json. ืœื ื”ื™ื” ืœื™ ื ื™ืกื™ื•ืŸ ืžืขืฉื™ ื‘ืขื‘ื•ื“ื” ืขื ื”ืคื•ืจืžื˜ ื”ื–ื” ื•ื”ืžืฉื™ืžื” ื”ื ื•ื›ื—ื™ืช ื ืชืคืกื” ื›ื”ื–ื“ืžื ื•ืช ืœืชืงืŸ ืืช ื”ืžื—ื“ืœ ื”ื–ื”.

ื›ื“ื™ ืœืขื‘ื•ื“ ืขื json ื”ื—ืœื˜ืชื™ ืœื”ืฉืชืžืฉ ื‘ืกืคืจื™ื™ื” json-ืคืฉื•ื˜ ืžื’ื•ื’ืœ. ื›ืืŸ ื”ืชื—ื™ืœื• ื”ื”ืคืชืขื•ืช. ื›ืคื™ ืฉื”ืชื‘ืจืจ, dbeaver, ื›ืืคืœื™ืงืฆื™ื” ืืžื™ืชื™ืช, ื ื›ืชื‘ื” ืขืœ ืคืœื˜ืคื•ืจืžืช Eclipse ื‘ืืžืฆืขื•ืช ืžืกื’ืจืช OSGi. ืขื‘ื•ืจ ืžืคืชื—ื™ื ืžื ื•ืกื™ื, ื”ื“ื‘ืจ ื”ื–ื” ืขื•ืฉื” ืืช ื–ื” ื ื•ื— ืœื ื”ืœ ืชืœื•ืช, ืื‘ืœ ื‘ืฉื‘ื™ืœื™ ื–ื” ื”ื™ื” ื™ื•ืชืจ ื›ืžื• ืงืกื ืืคืœ, ืฉื‘ืจื•ืจ ืฉืœื ื”ื™ื™ืชื™ ืžื•ื›ืŸ ืืœื™ื•: ื›ืจื’ื™ืœ, ืื ื™ ืžื™ื™ื‘ื ืืช ื”ืžื—ืœืงื•ืช ืฉืื ื™ ืฆืจื™ืš ืžื”ืกืคืจื™ื™ื” json-simple ื‘ื›ื•ืชืจืช ืฉืœ ื”ืžื—ืœืงื” ื”ืขืจื•ื›ื”, ืฆื™ื™ืŸ ืื•ืชื” ื‘-pom.xml, ื•ืœืื—ืจ ืžื›ืŸ ื”ืคืจื•ื™ืงื˜ ืžืกืจื‘ ื‘ืื•ืคืŸ ืžื•ื—ืœื˜ ืœื”ืจื›ื™ื‘ ื›ืจื’ื™ืœ ื•ืงืจื•ืก ืขื ืฉื’ื™ืื•ืช.

ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ, ื”ืฆืœื—ืชื™ ืœืชืงืŸ ืืช ืฉื’ื™ืื•ืช ื”ื‘ื ื™ื™ื”: ืจืฉืžืชื™ ืืช ื”ืกืคืจื™ื™ื” ืœื ื‘-pom.xml, ืืœื ื‘-manifes.mf, ื›ืคื™ ืฉื ื“ืจืฉ ืขืœ-ื™ื“ื™ OSGI, ืชื•ืš ืฆื™ื•ืŸ ื–ื” ื›-import-package. ืœื ื”ืคืชืจื•ืŸ ื”ื›ื™ ื™ืคื”, ืื‘ืœ ื–ื” ืขื•ื‘ื“. ื•ืื– ื”ื•ืคื™ืขื” ื”ื”ืคืชืขื” ื”ื‘ืื”. ืื ืืชื” ืžืคืชื— ื‘-Intellij Idea, ืืชื” ืœื ื™ื›ื•ืœ ืคืฉื•ื˜ ืœืœื›ืช ื•ืœื”ืชื—ื™ืœ ืœื ืคื•ืช ื‘ืื’ื™ื ื‘ืคืจื•ื™ืงื˜ ืฉืœืš ืขืœ ื‘ืกื™ืก ืคืœื˜ืคื•ืจืžืช eclipse: ืžืคืชื— ื—ืกืจ ื ื™ืกื™ื•ืŸ ืืžื•ืจ ืœืกื‘ื•ืœ ืœื ืคื—ื•ืช ืžืืฉืจ ืื ืœื™ืกื˜ ืœืœื ื”ืฉืœืžืช ืฉืื™ืœืชื”. ืžืคืชื—ื™ ื”ื‘ื•ื ื” ืขืฆืžื ื ื—ืœืฆื• ืœื”ืฆืœื”, ืฆื™ื™ื ื• ื‘ื•ื•ื™ืงื™ ืืช ื›ืœ ื”ืจื™ืงื•ื“ื™ื ืขื ื˜ืžื‘ื•ืจื™ืŸ ืฉืฆืจื™ืš ืœืขืฉื•ืช. ื”ื“ื‘ืจ ื”ื›ื™ ืžืขืฆื‘ืŸ ื”ื•ื ืฉื’ื ืื—ืจื™ ื›ืœ ื”ืกืงื•ื•ืื˜ื™ื ื”ืืœื”, ื”ืคืจื•ื™ื™ืงื˜ ืœื ืจืฆื” ืœื”ื™ื•ืช ืžื•ืฉืง ื‘-debug ืขื ืกืคืจื™ื™ืช json ืžื—ื•ื‘ืจืช ื“ืจืš ื—ื‘ื™ืœืช import (ืœืžืจื•ืช ื”ืขื•ื‘ื“ื” ืฉื”ื™ื ืขื“ื™ื™ืŸ ื”ื•ืจื›ื‘ื” ื‘ื”ืฆืœื—ื” ืœืžื•ืฆืจ ื”ืžื•ื’ืžืจ).

ื‘ืื•ืชื• ื–ืžืŸ, ื›ื‘ืจ ื”ื‘ื ืชื™ ืืช ืื™ ื”ื ื•ื—ื•ืช ืฉื‘ืฉื™ืžื•ืฉ ื‘-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 ื•- SQLCompletionAnalyzer. ื”ืจืขื™ื•ืŸ ื”ื•ื ื–ื”: ืื ื”ืชื•ื›ื ื” ืœื ื”ืฆืœื™ื—ื” ืœืžืฆื•ื ื”ืฆืขื•ืช ื”ืฉืœืžื” ืื•ื˜ื•ืžื˜ื™ืช ืžืชืื™ืžื•ืช ื‘ืืžืฆืขื•ืช ื”ื”ื™ื’ื™ื•ืŸ ื”ื‘ืกื™ืกื™, ืื– ื”ื™ื ื‘ื•ื“ืงืช ืงื™ื•ืžื ืฉืœ ื”ืฆื˜ืจืคื•ืช ืืคืฉืจื™ื•ืช ื‘ืืžืฆืขื•ืช ืงื•ื‘ืฅ xml ื—ื™ืฆื•ื ื™. ื”ืงื•ื‘ืฅ ืขืฆืžื• ืžืื—ืกืŸ ื–ื•ื’ื•ืช ืฉืœ ื˜ื‘ืœืื•ืช ื”ืžืฆื™ื™ื ื™ื ืืช ื”ืฉื“ื•ืช ืฉื‘ืืžืฆืขื•ืชื ื™ืฉ ืœืงืฉืจ ืืช ื”ื˜ื‘ืœืื•ืช ื”ืœืœื•. ื”ื’ื‘ืœื•ืช ืขืœ ืชืืจื™ื›ื™ ื”ืชื•ืงืฃ ื”ื˜ื›ื ื™ ืฉืœ ื”ืจืฉื•ืžื•ืช eff_dttm ื•-exp_dttm ื•ื“ื’ืœ ื”ืžื—ื™ืงื” ื”ืœื•ื’ื™ืช deleted_ind ืžื•ื’ื“ืจื•ืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ.

ื›ืืฉืจ ื‘ื•ืฆืขื• ืฉื™ื ื•ื™ื™ื ื‘ืงื•ื“, ืขืœืชื” ื”ืฉืืœื” - ืžื™ ื™ืžืœื ืืช ื”ืงื•ื‘ืฅ ื‘ืžื˜ื ื ืชื•ื ื™ื? ื™ืฉ ื”ืจื‘ื” ื™ืฉื•ื™ื•ืช ื‘ืžืื’ืจ, ื–ื” ื™ืงืจ ืœืจืฉื•ื ืืช ื›ืœ ื”ื—ื™ื‘ื•ืจื™ื ื‘ืขืฆืžืš. ื›ืชื•ืฆืื” ืžื›ืš, ื”ื—ืœื˜ืชื™ ืœื”ื˜ื™ืœ ืืช ื”ืžืฉื™ืžื” ื”ื–ื• ืขืœ ื—ื‘ืจื™ ื”ืื ืœื™ื˜ื™ืงืื™ื. ืคืจืกืžืชื™ ืืช ืงื•ื‘ืฅ ื”ืžื˜ื ื ืชื•ื ื™ื ื‘-svn, ืžืฉื ืžืชื‘ืฆืขืช ื”ืชืฉืœื•ื ืœืกืคืจื™ื™ื” ื”ืžืงื•ืžื™ืช ืขื ื”ืชื•ื›ื ื™ืช. ื”ืขื™ืงืจื•ืŸ ื”ื•ื ื–ื”: ื”ืื ื”ื•ืคื™ืขื” ื™ืฉื•ืช ื—ื“ืฉื” ื‘ืžืื’ืจ? ืื ืœื™ืกื˜ ืื—ื“ ืžื›ื ื™ืก ื”ืฆื˜ืจืคื•ืช ืืคืฉืจื™ื•ืช ืœืงื•ื‘ืฅ, ืžื‘ืฆืข ืฉื™ื ื•ื™ื™ื, ื”ืฉืืจ ื‘ื•ื“ืงื™ื ืœืขืฆืžื ื•ื ื”ื ื™ื ืžื”ื”ืฉืœืžื” ื”ืื•ื˜ื•ืžื˜ื™ืช ื”ืขื•ื‘ื“ืช: ืงื”ื™ืœื”, ืฆื‘ื™ืจืช ื™ื“ืข ื•ื›ืœ ื–ื”. ื”ืขื‘ื™ืจ ืกื“ื ื” ืœืฉื™ืžื•ืฉ ื‘ืชื•ื›ื ื™ืช ืœืขืžื™ืชื™ื, ื›ืชื‘ ืžืืžืจ ื‘-Confluence - ื›ืขืช ืœื—ื‘ืจื” ื™ืฉ ืขื•ื“ ื›ืœื™ ื ื•ื— ืื—ื“.

ื”ืขื‘ื•ื“ื” ืขืœ ื”ืคื™ืฆ'ืจ ื”ื–ื” ื ืชื ื” ืœื™ ืืช ื”ื”ื‘ื ื” ืฉืื™ืŸ ืฆื•ืจืš ืœืคื—ื“ ืœื”ืชืขืกืง ืขื ืคืจื•ื™ืงื˜ื™ื ื‘ืงื•ื“ ืคืชื•ื— - ื›ื›ืœืœ, ื™ืฉ ืœื”ื ืืจื›ื™ื˜ืงื˜ื•ืจื” ื‘ืจื•ืจื”, ื•ืืคื™ืœื• ื™ื“ืข ื‘ืกื™ืกื™ ื‘ืฉืคื” ื™ืกืคื™ืง ืœื ื™ืกื•ื™ื™ื. ื•ืขื ืžื™ื“ื” ืžืกื•ื™ืžืช ืฉืœ ื”ืชืžื“ื”, ืืคื™ืœื• ืชื•ื›ืœ ืœื”ื™ืคื˜ืจ ืžืคืขื•ืœื•ืช ืฉื’ืจืชื™ื•ืช ืฉื ื•ืื•ืช, ื•ืœื—ืกื•ืš ืœืขืฆืžืš ื–ืžืŸ ืœื ื™ืกื•ื™ื™ื ื—ื“ืฉื™ื.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”