วิธีที่จะหยุดทำสิ่งเดียวกัน

คุณชอบที่จะทำกิจวัตรประจำวันซ้ำแล้วซ้ำอีกหรือไม่? ฉันไม่ทำ แต่ทุกครั้งในไคลเอนต์ SQL เมื่อทำงานกับที่เก็บข้อมูล Rostelecom ฉันต้องลงทะเบียนการรวมทั้งหมดระหว่างตารางด้วยตนเอง และแม้ว่าในกรณี 90% ฟิลด์และเงื่อนไขในการเข้าร่วมตารางจะตรงกันจากการร้องขอ! ดูเหมือนว่าไคลเอ็นต์ SQL ใด ๆ จะมีฟังก์ชันการเติมข้อความอัตโนมัติ แต่สำหรับที่เก็บข้อมูลนั้นไม่ได้ผลเสมอไป: แทบไม่ได้รวมข้อ จำกัด ที่ไม่ซ้ำกันและคีย์ต่างประเทศเพื่อปรับปรุงประสิทธิภาพและหากไม่มีสิ่งนี้โปรแกรมจะไม่ทราบว่าเอนทิตีเกี่ยวข้องกับแต่ละอันอย่างไร อื่น ๆ และสิ่งที่สามารถทำได้สำหรับคุณ

วิธีที่จะหยุดทำสิ่งเดียวกัน

หลังจากผ่านการปฏิเสธ ความโกรธ การต่อรอง ความซึมเศร้า และการเข้าใกล้การยอมรับ ฉันจึงตัดสินใจ - ทำไมไม่ลองใช้การป้อนอัตโนมัติด้วยแบล็คแจ็คด้วยตัวเองและทำด้วยวิธีที่ถูกต้องล่ะ ฉันใช้ไคลเอนต์ dbeaver ซึ่งเขียนด้วยภาษาจาวา แต่ก็มีเวอร์ชันชุมชนโอเพ่นซอร์ส แผนง่ายๆ ได้ครบกำหนดแล้ว:

  1. ค้นหาคลาสในซอร์สโค้ดที่รับผิดชอบในการเติมข้อความอัตโนมัติ
  2. เปลี่ยนเส้นทางให้ทำงานกับข้อมูลเมตาภายนอกและดึงข้อมูลเกี่ยวกับการรวมจากที่นั่น
  3. ??
  4. กำไร

ฉันเข้าใจจุดแรกได้ค่อนข้างเร็ว - ฉันพบคำขอในตัวติดตามจุดบกพร่องให้ปรับการป้อนอัตโนมัติและในส่วนที่เกี่ยวข้อง ให้สัญญา ค้นพบคลาส SQLCompletionAnalyzer ฉันดูรหัสและนั่นคือสิ่งที่ฉันต้องการ สิ่งที่เหลืออยู่คือเขียนใหม่เพื่อให้ทุกอย่างทำงานได้ ฉันรอช่วงเย็นฟรีและเริ่มคิดถึงการดำเนินการ ฉันตัดสินใจเขียนกฎการเชื่อมโยงตาราง (ข้อมูลเมตา) ใน json ฉันไม่มีประสบการณ์จริงในการทำงานกับรูปแบบนี้ และงานปัจจุบันถูกมองว่าเป็นโอกาสในการแก้ไขการละเลยนี้

เพื่อทำงานกับ json ฉันตัดสินใจใช้ไลบรารี json-ง่าย จาก Google นี่คือจุดเริ่มต้นของความประหลาดใจ เมื่อปรากฎว่า dbeaver เป็นแอปพลิเคชันที่แท้จริงถูกเขียนบนแพลตฟอร์ม Eclipse โดยใช้เฟรมเวิร์ก OSGi สำหรับนักพัฒนาที่มีประสบการณ์ สิ่งนี้ทำให้สะดวกในการจัดการการขึ้นต่อกัน แต่สำหรับฉัน มันเหมือนกับเวทมนตร์แห่งความมืด ซึ่งเห็นได้ชัดว่าฉันยังไม่พร้อม: ตามปกติ ฉันจะนำเข้าคลาสที่ฉันต้องการจากไลบรารี json-simple ในส่วนหัวของ คลาสที่แก้ไขแล้ว ให้ระบุใน pom.xml หลังจากนั้นโปรเจ็กต์ปฏิเสธที่จะประกอบตามปกติอย่างเด็ดขาดและขัดข้องโดยมีข้อผิดพลาด

ในท้ายที่สุด ฉันจัดการเพื่อแก้ไขข้อผิดพลาดในการสร้าง: ฉันลงทะเบียนไลบรารีที่ไม่ได้อยู่ใน pom.xml แต่อยู่ในรายการ manifest.mf ตามที่ OSGI กำหนด ในขณะที่ระบุเป็นแพ็คเกจการนำเข้า ไม่ใช่วิธีแก้ปัญหาที่สวยงามที่สุด แต่ใช้งานได้ แล้วความประหลาดใจครั้งต่อไปก็ปรากฏขึ้น หากคุณกำลังพัฒนาใน Intellij Idea คุณไม่สามารถเริ่มแก้ไขจุดบกพร่องโปรเจ็กต์ของคุณโดยใช้แพลตฟอร์ม eclipse ได้: นักพัฒนาที่ไม่มีประสบการณ์ควรต้องทนทุกข์ทรมานไม่น้อยไปกว่านักวิเคราะห์หากคิวรีไม่เสร็จสิ้น นักพัฒนาบีเวอร์เองก็มาช่วยเหลือโดยระบุในวิกิถึงการเต้นรำทั้งหมดด้วยแทมบูรีนที่ต้องทำ สิ่งที่น่ารำคาญที่สุดคือแม้หลังจาก squats ทั้งหมดนี้แล้ว โปรเจ็กต์ก็ไม่ต้องการเปิดตัวในการดีบักด้วยไลบรารี 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 และ SQLCompletionAnalyzer แนวคิดก็คือ: หากโปรแกรมไม่พบคำแนะนำในการเติมข้อความอัตโนมัติที่เหมาะสมโดยใช้ตรรกะพื้นฐาน โปรแกรมจะตรวจสอบการมีอยู่ของการรวมที่เป็นไปได้โดยใช้ไฟล์ xml ภายนอก ตัวไฟล์จะจัดเก็บคู่ของตารางที่ระบุฟิลด์ที่ตารางเหล่านี้จำเป็นต้องเชื่อมโยง ข้อจำกัดเกี่ยวกับวันที่มีผลบังคับใช้ทางเทคนิคของบันทึก eff_dttm และ exp_dttm และการตั้งค่าสถานะการลบโลจิคัล Delete_ind จะถูกตั้งค่าตามค่าเริ่มต้น

เมื่อมีการเปลี่ยนแปลงโค้ด คำถามก็เกิดขึ้น - ใครจะเป็นผู้เติมข้อมูลเมตาในไฟล์ มีเอนทิตีมากมายในพื้นที่เก็บข้อมูล การลงทะเบียนการเชื่อมต่อทั้งหมดด้วยตัวเองมีราคาแพง ด้วยเหตุนี้ ฉันจึงตัดสินใจมอบหมายงานนี้ให้เพื่อนนักวิเคราะห์ของฉัน ฉันโพสต์ไฟล์ข้อมูลเมตาใน svn จากจุดชำระเงินไปยังไดเร็กทอรีในเครื่องด้วยโปรแกรม หลักการคือ: มีเอนทิตีใหม่ปรากฏในที่เก็บหรือไม่? นักวิเคราะห์คนหนึ่งป้อนความเป็นไปได้ในการเข้าร่วมในไฟล์ ดำเนินการเปลี่ยนแปลง ส่วนที่เหลือตรวจสอบกับตัวเองและเพลิดเพลินไปกับการเติมข้อมูลอัตโนมัติที่ทำงาน: ชุมชน การสั่งสมความรู้ และอื่นๆ อีกมากมาย จัดเวิร์คช็อปเกี่ยวกับการใช้โปรแกรมสำหรับเพื่อนร่วมงาน เขียนบทความใน Confluence - ตอนนี้บริษัทมีเครื่องมือที่สะดวกอีกหนึ่งอย่าง

การทำงานเกี่ยวกับฟีเจอร์นี้ทำให้ฉันเข้าใจว่าไม่จำเป็นต้องกลัวที่จะปรับแต่งโปรเจ็กต์โอเพ่นซอร์ส - ตามกฎแล้ว โปรเจ็กต์เหล่านี้มีสถาปัตยกรรมที่ชัดเจน และแม้แต่ความรู้พื้นฐานเกี่ยวกับภาษาก็เพียงพอสำหรับการทดลอง และด้วยความเพียรพยายามในระดับหนึ่ง คุณจะสามารถกำจัดการปฏิบัติงานประจำที่เกลียดชังออกไปได้ ซึ่งจะช่วยประหยัดเวลาสำหรับการทดลองใหม่ ๆ

ที่มา: will.com

เพิ่มความคิดเห็น