ดึงข้อมูล แปลงข้อมูล โหลดข้อมูล

| การแปลงข้อมูล |
|---|
| แนวคิด |
| ภาษาการแปลง |
| เทคนิคและการแปลง |
| แอปพลิเคชัน |
| ที่เกี่ยวข้อง |
กระบวนการ ดึงข้อมูล แปลงข้อมูล และโหลดข้อมูล ( ETL ) เป็นกระบวนการ ประมวลผลสามขั้นตอนโดยข้อมูลจะถูกดึงออกมาจากแหล่งข้อมูลขาเข้า แปลงข้อมูล (รวมถึงการทำความสะอาดข้อมูล ) และโหลดเข้าไปในที่เก็บข้อมูลขาออก ข้อมูลสามารถรวบรวมได้จากแหล่งข้อมูลหนึ่งแหล่งหรือมากกว่า และสามารถส่งออกไปยังปลายทางหนึ่งแห่งหรือมากกว่าได้เช่นกัน โดยทั่วไปแล้ว การประมวลผล ETL จะดำเนินการโดยใช้แอปพลิเคชันซอฟต์แวร์แต่ก็สามารถทำได้ด้วยตนเองโดยผู้ดูแลระบบ ซอฟต์แวร์ ETL มักจะทำให้กระบวนการทั้งหมดเป็นไปโดยอัตโนมัติ และสามารถเรียกใช้งานได้ด้วยตนเองหรือตามกำหนดเวลาที่เกิดขึ้นซ้ำๆ ไม่ว่าจะเป็นงานเดี่ยวหรือรวมกันเป็นชุดงาน
ระบบ ETL ที่ออกแบบมาอย่างเหมาะสมจะดึงข้อมูลจากระบบต้นทางและบังคับใช้มาตรฐานประเภทข้อมูลและความถูกต้องของข้อมูล และรับรองว่าข้อมูลนั้นสอดคล้องกับโครงสร้างตามข้อกำหนดของเอาต์พุต ระบบ ETL บางระบบยังสามารถส่งมอบข้อมูลในรูปแบบที่พร้อมสำหรับการนำเสนอ เพื่อให้นักพัฒนาแอปพลิเคชันสามารถสร้างแอปพลิเคชันและผู้ใช้ปลายทางสามารถตัดสินใจได้[ 1 ]
กระบวนการ ETL มักใช้ในคลังข้อมูล[ 2 ]ระบบ ETL มักจะรวมข้อมูลจากแอปพลิเคชัน (ระบบ) หลายระบบ ซึ่งโดยทั่วไปแล้วได้รับการพัฒนาและสนับสนุนโดยผู้จำหน่าย ที่แตกต่างกัน หรือโฮสต์บนฮาร์ดแวร์คอมพิวเตอร์ที่แยกต่างหาก ระบบที่แยกต่างหากซึ่งมีข้อมูลต้นฉบับมักจะได้รับการจัดการและดำเนินการโดยผู้มีส่วนได้ส่วนเสีย ที่แตกต่างกัน ตัวอย่างเช่น ระบบบัญชีต้นทุนอาจรวมข้อมูลจากเงินเดือน การขาย และการจัดซื้อ
การสกัดข้อมูลเกี่ยวข้องกับการสกัดข้อมูลจากแหล่งข้อมูลที่เป็นเนื้อเดียวกันหรือต่างกัน การแปลงข้อมูลจะประมวลผลข้อมูลโดยการทำความสะอาดข้อมูลและแปลงข้อมูลให้เป็นรูปแบบ/โครงสร้างการจัดเก็บที่เหมาะสมสำหรับการสอบถามและการวิเคราะห์ และสุดท้าย การโหลดข้อมูลจะอธิบายถึงการแทรกข้อมูลลงในฐานข้อมูลเป้าหมายสุดท้าย เช่น ที่เก็บข้อมูลการดำเนินงานคลังข้อมูลคลังข้อมูลขนาดใหญ่หรือคลังข้อมูลขนาดใหญ่[ 3 ] [ 4 ]
ETL และ ELT (extract, load, transform) ซึ่งเป็นรูปแบบหนึ่งของ ETL กำลังถูกนำมาใช้มากขึ้นในระบบคลังข้อมูลบนคลาวด์ แอปพลิเคชันต่างๆ ไม่เพียงแต่เกี่ยวข้องกับการประมวลผลแบบแบตช์เท่านั้น แต่ยังรวมถึงการสตรีมมิ่งแบบเรียลไทม์ด้วย
ระยะต่างๆ
สารสกัด
กระบวนการ ETL เกี่ยวข้องกับการดึงข้อมูลจากระบบต้นทาง ในหลายกรณี นี่เป็นส่วนที่สำคัญที่สุดของ ETL เนื่องจาก1การดึงข้อมูลอย่างถูกต้องจะเป็นพื้นฐานสำหรับความสำเร็จของกระบวนการถัดไป โครงการคลังข้อมูลส่วนใหญ่จะรวมข้อมูลจากระบบต้นทางที่แตกต่างกัน แต่ละระบบอาจใช้การจัดระเบียบข้อมูลและ/หรือรูปแบบที่ แตกต่างกัน [ 5 ]รูปแบบแหล่งข้อมูลทั่วไป ได้แก่ฐานข้อมูลเชิงสัมพันธ์ฐาน ข้อมูล ไฟล์แบบแบนXMLและJSONแต่ยังอาจรวมถึงโครงสร้างฐานข้อมูลที่ไม่ใช่เชิงสัมพันธ์ เช่นIBM Information Management Systemหรือโครงสร้างข้อมูลอื่นๆ เช่นVirtual Storage Access Method (VSAM)หรือIndexed Sequential Access Method (ISAM)หรือแม้แต่รูปแบบที่ดึงมาจากแหล่งภายนอกโดยวิธีการต่างๆ เช่นเว็บครอว์เลอร์หรือการดึงข้อมูล[ 5 ]การสตรีมแหล่งข้อมูลที่ดึงมาและการโหลดแบบทันทีไปยังฐานข้อมูลปลายทางเป็นอีกวิธีหนึ่งในการดำเนินการ ETL เมื่อไม่จำเป็นต้องมีการจัดเก็บข้อมูลชั่วคราว[ 6 ]
ส่วนสำคัญของการดึงข้อมูลเกี่ยวข้องกับการตรวจสอบความถูกต้องของข้อมูลเพื่อยืนยันว่าข้อมูลที่ดึงมาจากแหล่งข้อมูลมีค่าที่ถูกต้อง/คาดหวังในโดเมนที่กำหนด (เช่น รูปแบบ/ค่าเริ่มต้น หรือรายการค่า) หากข้อมูลไม่ผ่านเกณฑ์การตรวจสอบความถูกต้อง ข้อมูลจะถูกปฏิเสธทั้งหมดหรือบางส่วน[ 7 ]โดยทั่วไปแล้ว ข้อมูลที่ถูกปฏิเสธจะถูกส่งกลับไปยังระบบต้นทางเพื่อการวิเคราะห์เพิ่มเติมเพื่อระบุและแก้ไขบันทึกที่ไม่ถูกต้อง หรือดำเนินการจัดการ ข้อมูล
แปลง
ใน ขั้นตอน การแปลงข้อมูลจะมีการใช้กฎหรือฟังก์ชันชุดหนึ่งกับข้อมูลที่ดึงออกมาเพื่อเตรียมข้อมูลสำหรับการโหลดไปยังเป้าหมายสุดท้าย[ 5 ] [ 6 ]
หน้าที่สำคัญของการแปลงข้อมูลคือการทำความสะอาดข้อมูลซึ่งมีเป้าหมายเพื่อส่งเฉพาะข้อมูลที่ "เหมาะสม" ไปยังเป้าหมาย ความท้าทายเมื่อระบบต่างๆ โต้ตอบกันอยู่ที่การเชื่อมต่อและการสื่อสารระหว่างระบบที่เกี่ยวข้อง ชุดอักขระที่อาจมีอยู่ในระบบหนึ่งอาจไม่มีในระบบอื่น[ 8 ]
ในกรณีอื่นๆ อาจจำเป็นต้องใช้การแปลงประเภทต่อไปนี้อย่างน้อยหนึ่งประเภทเพื่อให้ตรงกับความต้องการทางธุรกิจและทางเทคนิคของเซิร์ฟเวอร์หรือคลังข้อมูล: [ 9 ]
- การเลือกเฉพาะคอลัมน์ที่ต้องการโหลด (หรือการเลือก คอลัมน์ ที่เป็นค่าว่างเพื่อไม่ให้โหลด) ตัวอย่างเช่น หากข้อมูลต้นทางมีสามคอลัมน์ (หรือที่เรียกว่า "คุณลักษณะ") ได้แก่ หมายเลขประจำตัว อายุ และเงินเดือน การเลือกอาจเลือกเฉพาะหมายเลขประจำตัวและเงินเดือน หรือกลไกการเลือกอาจละเว้นข้อมูลทั้งหมดที่ไม่มีเงินเดือน (เงินเดือน = ค่าว่าง)
- การแปลงค่าที่เข้ารหัส ตัวอย่างเช่น หากระบบต้นทางเข้ารหัสเพศชายเป็น "1" และเพศหญิงเป็น "2" แต่คลังสินค้าเข้ารหัสเพศชายเป็น "M" และเพศหญิงเป็น "F"
- การเข้ารหัสค่าแบบอิสระ ตัวอย่างเช่น การแปลง "Male" เป็น "M"
- การหาค่าคำนวณใหม่ ตัวอย่างเช่น
sale_amount = qty * unit_price. - การจัดเรียงหรือเรียงลำดับข้อมูลตามรายการคอลัมน์เพื่อปรับปรุงประสิทธิภาพการค้นหา
- การรวมข้อมูลจากหลายแหล่ง ( เช่นการค้นหา การผสาน) และการลบข้อมูล ซ้ำซ้อน
- การรวมข้อมูล ตัวอย่างเช่น การรวมข้อมูลหลายแถวเข้าด้วยกัน – เช่น ยอดขายรวมของแต่ละร้าน และของแต่ละภูมิภาค เป็นต้น
- กำลังสร้างค่าคีย์ทดแทน
- การสลับตำแหน่งหรือการจัดเรียงใหม่ (การเปลี่ยนหลายคอลัมน์เป็นหลายแถว หรือในทางกลับกัน)
- การแบ่งคอลัมน์ออกเป็นหลายคอลัมน์ ตัวอย่างเช่น การแปลงรายการที่คั่นด้วยเครื่องหมายจุลภาคซึ่งระบุเป็นสตริงในคอลัมน์หนึ่ง ให้เป็นค่าแต่ละค่าในคอลัมน์ต่างๆ
- การแยกข้อมูลคอลัมน์ที่ซ้ำกัน
- ค้นหาและตรวจสอบความถูกต้องของข้อมูลที่เกี่ยวข้องจากตารางหรือไฟล์อ้างอิง
- การใช้การตรวจสอบความถูกต้องของข้อมูลในรูปแบบใดก็ตาม การตรวจสอบความถูกต้องที่ล้มเหลวอาจส่งผลให้ข้อมูลถูกปฏิเสธทั้งหมด บางส่วน หรือไม่ถูกปฏิเสธเลย และด้วยเหตุนี้ ข้อมูลบางส่วนหรือทั้งหมดจึงอาจถูกส่งต่อไปยังขั้นตอนถัดไป ขึ้นอยู่กับการออกแบบกฎและการจัดการข้อยกเว้น การแปลงข้อมูลข้างต้นหลายอย่างอาจส่งผลให้เกิดข้อยกเว้น เช่น เมื่อการแปลรหัสวิเคราะห์รหัสที่ไม่รู้จักในข้อมูลที่ดึงออกมา
โหลด
ขั้นตอนการโหลดข้อมูลจะโหลดข้อมูลไปยังเป้าหมายสุดท้าย ซึ่งอาจเป็นที่เก็บข้อมูลใดก็ได้ รวมถึงไฟล์ข้อความธรรมดาที่มีตัวคั่น หรือคลังข้อมูลขนาดใหญ่กระบวนการนี้จะแตกต่างกันไปอย่างมาก ขึ้นอยู่กับความต้องการขององค์กร คลังข้อมูลบางแห่งอาจเขียนทับข้อมูลที่มีอยู่ด้วยข้อมูลสะสม การอัปเดตข้อมูลที่ดึงออกมามักทำเป็นรายวัน รายสัปดาห์ หรือรายเดือน คลังข้อมูลอื่นๆ (หรือแม้แต่ส่วนอื่นๆ ของคลังข้อมูลเดียวกัน) อาจเพิ่มข้อมูลใหม่ในรูปแบบประวัติเป็นระยะๆ เช่น ทุกชั่วโมง เพื่อให้เข้าใจเรื่องนี้ ลองพิจารณาคลังข้อมูลที่จำเป็นต้องเก็บรักษาบันทึกการขายของปีที่ผ่านมา คลังข้อมูลนี้จะเขียนทับข้อมูลที่เก่ากว่าหนึ่งปีด้วยข้อมูลที่ใหม่กว่า อย่างไรก็ตาม การป้อนข้อมูลสำหรับช่วงเวลาหนึ่งปีใดๆ จะทำในลักษณะประวัติ ช่วงเวลาและขอบเขตในการแทนที่หรือเพิ่มข้อมูลนั้นเป็นทางเลือกในการออกแบบเชิงกลยุทธ์ ขึ้นอยู่กับเวลาที่มีอยู่และ ความต้องการ ทางธุรกิจระบบที่ซับซ้อนกว่านั้นสามารถเก็บรักษาประวัติและเส้นทางการตรวจสอบของการเปลี่ยนแปลงทั้งหมดที่โหลดลงในคลังข้อมูลได้ เนื่องจากขั้นตอนการโหลดข้อมูลมีการโต้ตอบกับฐานข้อมูล ข้อจำกัดที่กำหนดไว้ในโครงสร้างฐานข้อมูล รวมถึงในทริกเกอร์ที่ทำงานเมื่อโหลดข้อมูล จะมีผลบังคับใช้ (ตัวอย่างเช่น ความไม่ซ้ำกันความสมบูรณ์ของการอ้างอิงฟิลด์ที่จำเป็น) ซึ่งมีส่วนช่วยให้คุณภาพข้อมูลโดยรวมของกระบวนการ ETL ดีขึ้นด้วย
- ตัวอย่างเช่น สถาบันการเงินอาจมีข้อมูลเกี่ยวกับลูกค้าอยู่ในหลายแผนก และแต่ละแผนกอาจแสดงข้อมูลของลูกค้าในรูปแบบที่แตกต่างกัน แผนกสมาชิกอาจแสดงข้อมูลลูกค้าด้วยชื่อ ในขณะที่แผนกบัญชีอาจแสดงข้อมูลลูกค้าด้วยหมายเลข ETL สามารถรวบรวมองค์ประกอบข้อมูลทั้งหมดเหล่านี้และรวมเข้าไว้ในรูปแบบเดียวกัน เช่น เพื่อจัดเก็บในฐานข้อมูลหรือคลังข้อมูล
- อีกวิธีหนึ่งที่บริษัทต่างๆ ใช้ ETL คือการย้ายข้อมูลไปยังแอปพลิเคชันอื่นอย่างถาวร ตัวอย่างเช่น แอปพลิเคชันใหม่นั้นอาจใช้ผู้ให้บริการฐานข้อมูลรายอื่น และโดยส่วนใหญ่แล้วจะมีโครงสร้างฐานข้อมูลที่แตกต่างกันมาก ETL สามารถใช้เพื่อแปลงข้อมูลให้อยู่ในรูปแบบที่เหมาะสมสำหรับแอปพลิเคชันใหม่ที่จะใช้งานได้
- ตัวอย่างเช่นระบบการเรียกเก็บค่าใช้จ่ายและต้นทุนเช่นที่ใช้โดยนักบัญชีที่ปรึกษาและสำนักงานกฎหมายข้อมูลมักจะถูกส่งไปยังระบบบันทึกเวลาและการเรียกเก็บเงินแม้ว่าบางธุรกิจอาจใช้ข้อมูลดิบเพื่อจัดทำรายงานประสิทธิภาพการทำงานของพนักงานให้กับฝ่ายทรัพยากรบุคคล หรือรายงานการใช้งานอุปกรณ์ให้กับฝ่ายบริหารจัดการอาคารสถานที่ก็ได้
ขั้นตอนเพิ่มเติม
วงจร ETL ในชีวิตจริงอาจประกอบด้วยขั้นตอนการดำเนินการเพิ่มเติม ตัวอย่างเช่น:
- การเริ่มต้นรอบการทำงาน (ก่อน ETL: ตรวจสอบให้แน่ใจว่าระบบที่เกี่ยวข้องกับ ETL ทั้งหมดพร้อมใช้งาน ทำงานได้อย่างถูกต้อง และไม่มีปัญหาใด ๆ ที่จะทำให้การทำงาน ETL หยุดชะงักกะทันหันหลังจากเริ่มไปได้หนึ่งชั่วโมง เช่น การสมัครใช้งานทรัพยากรประมวลผล/หน่วยความจำ/พื้นที่จัดเก็บข้อมูล B2Bและคีย์ API ที่ถูกต้อง งบประมาณที่เหมาะสมสำหรับเวลา/เงินที่ประเมินไว้ และไม่มีงานที่มีลำดับความสำคัญสูงกว่า)
- สร้างข้อมูลอ้างอิง (เช่น การเชื่อมโยง ( ไม่ใช่การคัดลอกเอกสาร ) กับข้อมูลพื้นฐานทางประวัติศาสตร์ที่เชื่อถือได้)
- ดึงข้อมูล (จากแหล่งข้อมูล)
- ตรวจสอบความถูกต้อง (ตรวจสอบให้แน่ใจว่าข้อมูลสามารถ นำไปใช้ประโยชน์ได้ ในที่สุดข้อมูลไม่ใช่ขยะ 100%)
- แปลงข้อมูล ( ทำความสะอาดข้อมูล , ใช้กฎทางธุรกิจ , ตรวจสอบความถูกต้องของข้อมูล , สร้างข้อมูลรวมหรือข้อมูลแยกย่อย)
- จัดเตรียม (โหลดลงใน โต๊ะ จัดเตรียมหากใช้งาน)
- รายงานการตรวจสอบ (ตัวอย่างเช่น การตรวจสอบการปฏิบัติตามกฎระเบียบทางธุรกิจ นอกจากนี้ ยังช่วยในการวินิจฉัย/แก้ไขในกรณีที่เกิดข้อผิดพลาด)
- เผยแพร่ (ไปยังตารางเป้าหมาย)
- การจัดเก็บถาวร (การบีบอัดขั้นสูงสุด ประหยัดพื้นที่ สำหรับข้อมูลเก่าที่ใช้งานน้อยมาก ในบางกรณี อาจมีการสูญเสียข้อมูล บางส่วน )
ความท้าทายในการออกแบบ
กระบวนการ ETL อาจมีความซับซ้อนมาก และอาจเกิดปัญหาการดำเนินงานที่สำคัญได้หากระบบ ETL ได้รับการออกแบบอย่างไม่เหมาะสม
ความผันแปรของข้อมูล
ช่วงของค่าข้อมูลหรือคุณภาพข้อมูลในระบบปฏิบัติการอาจเกินความคาดหวังของผู้ออกแบบในขณะที่กำหนดกฎการตรวจสอบและการแปลง ข้อมูล การวิเคราะห์ข้อมูลต้นทางสามารถระบุเงื่อนไขข้อมูลที่ต้องได้รับการจัดการโดยข้อกำหนดของกฎการแปลง ซึ่งนำไปสู่การแก้ไขกฎการตรวจสอบที่นำไปใช้โดยตรงและโดยอ้อมในกระบวนการ ETL
โดยทั่วไปแล้ว คลังข้อมูลจะถูกรวบรวมจากแหล่งข้อมูลที่หลากหลายซึ่งมีรูปแบบและวัตถุประสงค์แตกต่างกัน ดังนั้น ETL จึงเป็นกระบวนการสำคัญในการนำข้อมูลทั้งหมดมารวมกันในสภาพแวดล้อมที่เป็นมาตรฐานและเป็นเนื้อเดียวกัน
การวิเคราะห์การออกแบบ[ 10 ]ควรสร้างความสามารถในการปรับขนาดของระบบ ETL ตลอดอายุการใช้งาน รวมถึงการทำความเข้าใจปริมาณข้อมูลที่ต้องประมวลผลภายในข้อตกลงระดับบริการเวลาที่มีให้ดึงข้อมูลจากระบบต้นทางอาจเปลี่ยนแปลง ซึ่งอาจหมายความว่าต้องประมวลผลข้อมูลจำนวนเท่าเดิมในเวลาที่น้อยลง ระบบ ETL บางระบบต้องปรับขนาดเพื่อประมวลผลข้อมูลหลายเทราไบต์เพื่ออัปเดตคลังข้อมูลที่มีข้อมูลหลายสิบเทราไบต์ ปริมาณข้อมูลที่เพิ่มขึ้นอาจต้องการการออกแบบที่สามารถปรับขนาดได้ตั้งแต่การประมวลผลแบบกลุ่ม รายวัน ไปจนถึงการประมวลผลแบบกลุ่มย่อยหลายวัน ไปจนถึงการบูรณาการกับคิวข้อความหรือการจับภาพการเปลี่ยนแปลงข้อมูลแบบเรียลไทม์สำหรับการแปลงและอัปเดตอย่างต่อเนื่อง
ความเป็นเอกลักษณ์ของกุญแจ
คีย์เฉพาะมีบทบาทสำคัญในฐานข้อมูลเชิงสัมพันธ์ทุกประเภท เนื่องจากเป็นตัวเชื่อมโยงทุกอย่างเข้าด้วยกัน คีย์เฉพาะคือคอลัมน์ที่ระบุเอนทิตีที่กำหนด ในขณะที่คีย์ต่างประเทศคือคอลัมน์ในตารางอื่นที่อ้างอิงถึงคีย์หลัก คีย์สามารถประกอบด้วยหลายคอลัมน์ ซึ่งในกรณีนี้เรียกว่าคีย์ผสม ในหลายกรณี คีย์หลักเป็นจำนวนเต็มที่สร้างขึ้นโดยอัตโนมัติซึ่งไม่มีความหมายสำหรับเอนทิตีทางธุรกิจที่แสดง แต่มีอยู่เพื่อวัตถุประสงค์ของฐานข้อมูลเชิงสัมพันธ์เท่านั้น ซึ่งโดยทั่วไปเรียกว่าคีย์ ทดแทน
เนื่องจากโดยปกติแล้วจะมีแหล่งข้อมูลมากกว่าหนึ่งแหล่งที่ถูกโหลดเข้าไปในคลังข้อมูล ดังนั้นคีย์จึงเป็นเรื่องสำคัญที่ต้องพิจารณา ตัวอย่างเช่น ลูกค้าอาจมีข้อมูลอยู่ในหลายแหล่งข้อมูล โดยมีหมายเลขประกันสังคมเป็นคีย์หลักในแหล่งข้อมูลหนึ่ง หมายเลขโทรศัพท์ในอีกแหล่งข้อมูลหนึ่ง และตัวแปรทดแทนในแหล่งข้อมูลที่สาม แต่คลังข้อมูลอาจต้องการรวมข้อมูลลูกค้าทั้งหมดเข้าไว้ในมิติเดียว
วิธีที่แนะนำในการจัดการกับข้อกังวลดังกล่าวคือการเพิ่มคีย์ตัวแทนคลังสินค้า ซึ่งใช้เป็นคีย์ต่างประเทศจากตารางข้อเท็จจริง[ 11 ]
โดยปกติ การอัปเดตจะเกิดขึ้นกับข้อมูลต้นทางของมิติข้อมูล ซึ่งจะต้องสะท้อนให้เห็นในคลังข้อมูล
หากคีย์หลักของข้อมูลต้นทางจำเป็นสำหรับการรายงาน มิติข้อมูลจะมีข้อมูลส่วนนั้นอยู่แล้วสำหรับแต่ละแถว หากข้อมูลต้นทางใช้คีย์ตัวแทน คลังข้อมูลจะต้องติดตามคีย์ตัวแทนนั้นแม้ว่าจะไม่เคยใช้ในแบบสอบถามหรือรายงานก็ตาม โดยจะทำได้โดยการสร้างตารางค้นหาที่มีคีย์ตัวแทนของคลังข้อมูลและคีย์ต้นทาง[ 12 ]ด้วยวิธีนี้ มิติข้อมูลจะไม่ปนเปื้อนด้วยคีย์ตัวแทนจากระบบต้นทางต่างๆ ในขณะที่ความสามารถในการอัปเดตยังคงอยู่
ตารางค้นหาถูกใช้ในรูปแบบต่างๆ ขึ้นอยู่กับลักษณะของข้อมูลต้นทาง มี 5 ประเภทที่ต้องพิจารณา[ 12 ]ซึ่งรวมอยู่ 3 ประเภทในที่นี้:
- ประเภท 1
- แถวมิติจะได้รับการอัปเดตเพื่อให้ตรงกับสถานะปัจจุบันของระบบต้นทางเท่านั้น คลังข้อมูลไม่ได้บันทึกประวัติไว้ ตารางค้นหาจะใช้เพื่อระบุแถวมิติที่จะอัปเดตหรือเขียนทับ
- ประเภท 2
- มีการเพิ่มแถวมิติใหม่พร้อมสถานะใหม่ของระบบต้นทาง มีการกำหนดคีย์ตัวแทนใหม่ และคีย์ต้นทางจะไม่ซ้ำกันในตารางค้นหาอีกต่อไป
- เข้าสู่ระบบเรียบร้อยแล้ว
- มีการเพิ่มแถวข้อมูลมิติใหม่พร้อมสถานะใหม่ของระบบต้นทาง ในขณะที่แถวข้อมูลมิติเดิมจะได้รับการอัปเดตเพื่อสะท้อนว่าไม่ได้ใช้งานอีกต่อไปแล้วและเวลาที่ปิดใช้งาน
ผลงาน
ผู้จำหน่ายซอฟต์แวร์ ETL ทดสอบประสิทธิภาพระบบจัดเก็บข้อมูลของตนที่ระดับหลายเทราไบต์ต่อชั่วโมง (หรือประมาณ 1 กิกะไบต์ต่อวินาที) โดยใช้เซิร์ฟเวอร์ทรงพลังที่มีซีพียูหลายตัว ฮาร์ดไดรฟ์หลายตัว การเชื่อมต่อเครือข่ายกิกะบิตหลายช่อง และหน่วยความจำจำนวนมาก
ในความเป็นจริงแล้ว ส่วนที่ช้าที่สุดของกระบวนการ ETL มักเกิดขึ้นในขั้นตอนการโหลดข้อมูลลงฐานข้อมูล ฐานข้อมูลอาจทำงานช้าลงเนื่องจากต้องจัดการกับการทำงานพร้อมกัน การรักษาความสมบูรณ์ของข้อมูล และดัชนี ดังนั้น เพื่อประสิทธิภาพที่ดีขึ้น อาจเหมาะสมที่จะใช้:
- ใช้วิธี การดึงข้อมูลโดยตรงหรือการดึงข้อมูลจำนวนมากเมื่อใดก็ตามที่เป็นไปได้ (แทนการสอบถามฐานข้อมูล) เพื่อลดภาระของระบบต้นทางในขณะที่ได้ความเร็วในการดึงข้อมูลสูง
- กระบวนการแปลงข้อมูลส่วนใหญ่เกิดขึ้นภายนอกฐานข้อมูล
- ดำเนินการขนส่งสินค้าจำนวนมากทุกครั้งที่เป็นไปได้
ถึงกระนั้น แม้จะใช้การดำเนินการแบบกลุ่ม การเข้าถึงฐานข้อมูลก็ยังคงเป็นคอขวดในกระบวนการ ETL อยู่ดี วิธีการทั่วไปที่ใช้เพื่อเพิ่มประสิทธิภาพ ได้แก่:
- ตาราง พาร์ติชัน (และดัชนี): พยายามรักษาขนาดของพาร์ติชันให้ใกล้เคียงกัน (ระวัง
nullค่าที่อาจทำให้การแบ่งพาร์ติชันผิดเพี้ยนไป) - ทำการตรวจสอบความถูกต้องทั้งหมดในเลเยอร์ ETL ก่อนการโหลด: ปิดใช้งาน การตรวจสอบ ความสมบูรณ์ (
disable constraint... ) ในตารางฐานข้อมูลเป้าหมายระหว่างการโหลด - ปิดใช้งานทริกเกอร์ (
disable trigger... ) ในตารางฐานข้อมูลเป้าหมายระหว่างการโหลด: จำลองผลกระทบของทริกเกอร์เหล่านั้นในขั้นตอนแยกต่างหาก - สร้าง ID ในเลเยอร์ ETL (ไม่ใช่ในฐานข้อมูล)
- ลบดัชนี (บนตารางหรือพาร์ติชัน) ก่อนทำการโหลด และสร้างดัชนีขึ้นใหม่หลังจากโหลดเสร็จแล้ว (คำสั่ง SQL:
drop index...; create index...) - ควรใช้การโหลดข้อมูลแบบขนานจำนวนมากเมื่อเป็นไปได้ – วิธีนี้ได้ผลดีเมื่อตารางถูกแบ่งพาร์ติชันหรือไม่มีดัชนี (หมายเหตุ: การพยายามโหลดข้อมูลแบบขนานลงในตารางเดียวกัน (พาร์ติชันเดียวกัน) มักจะทำให้เกิดการล็อก – หากไม่ล็อกแถวข้อมูล ก็มักจะล็อกดัชนี)
- หากมีความต้องการที่จะทำการแทรก อัปเดต หรือลบข้อมูล ให้ตรวจสอบว่าควรประมวลผลแถวใดด้วยวิธีใดในเลเยอร์ ETL จากนั้นจึงประมวลผลการดำเนินการทั้งสามนี้ในฐานข้อมูลแยกกัน โดยทั่วไปแล้ว คุณสามารถใช้การโหลดข้อมูลจำนวนมากสำหรับการแทรกได้ แต่การอัปเดตและการลบมักจะดำเนินการผ่านAPI (โดยใช้SQL )
การตัดสินใจว่าจะดำเนินการบางอย่างภายในฐานข้อมูลหรือภายนอกฐานข้อมูลนั้นอาจเกี่ยวข้องกับการแลกเปลี่ยนผลประโยชน์ ตัวอย่างเช่น การลบข้อมูลซ้ำโดยใช้ฟังก์ชันบางอย่างdistinctอาจใช้เวลานานในฐานข้อมูล ดังนั้นจึงควรทำภายนอกฐานข้อมูล ในทางกลับกัน หากการใช้ฟังก์ชันบางdistinctอย่างช่วยลดจำนวนแถวที่จะต้องดึงข้อมูลลงอย่างมาก (เช่น x100) ก็ควรลบข้อมูลซ้ำในฐานข้อมูลให้เร็วที่สุดเท่าที่จะเป็นไปได้ก่อนที่จะดึงข้อมูลออกมา
ปัญหาที่พบบ่อยในกระบวนการ ETL คือการพึ่งพาซึ่งกันและกันจำนวนมากระหว่างงาน ETL ตัวอย่างเช่น งาน "B" ไม่สามารถเริ่มต้นได้ในขณะที่งาน "A" ยังไม่เสร็จสิ้น โดยทั่วไปแล้ว เราสามารถเพิ่มประสิทธิภาพได้โดยการแสดงภาพกระบวนการทั้งหมดบนกราฟ และพยายามลดขนาดของกราฟโดยใช้ประโยชน์จาก การประมวลผล แบบขนาน ให้มากที่สุด และทำให้ "ห่วงโซ่" ของการประมวลผลต่อเนื่องสั้นที่สุดเท่าที่จะเป็นไปได้ การแบ่งพาร์ติชันของตารางขนาดใหญ่และดัชนีของตารางเหล่านั้นก็สามารถช่วยได้เช่นกัน
อีกปัญหาหนึ่งที่พบบ่อยคือ เมื่อข้อมูลกระจายอยู่ตามฐานข้อมูลหลายแห่ง และการประมวลผลจะทำในฐานข้อมูลเหล่านั้นตามลำดับ บางครั้งอาจต้องใช้การจำลองฐานข้อมูลเพื่อคัดลอกข้อมูลระหว่างฐานข้อมูล ซึ่งอาจทำให้กระบวนการทั้งหมดช้าลงอย่างมาก วิธีแก้ปัญหาทั่วไปคือการลดกราฟการประมวลผลเหลือเพียงสามชั้น:
- แหล่งที่มา
- ชั้น ETL ส่วนกลาง
- เป้าหมาย
วิธีการนี้ช่วยให้การประมวลผลใช้ประโยชน์จากความขนานได้อย่างเต็มที่ ตัวอย่างเช่น หากคุณต้องการโหลดข้อมูลลงในฐานข้อมูลสองแห่ง คุณสามารถเรียกใช้การโหลดแบบขนานได้ (แทนที่จะโหลดลงในฐานข้อมูลแรกก่อน แล้วจึงคัดลอกไปยังฐานข้อมูลที่สอง)
บางครั้งการประมวลผลต้องเกิดขึ้นตามลำดับ ตัวอย่างเช่น จำเป็นต้องมีข้อมูลเชิงมิติ (ข้อมูลอ้างอิง) ก่อนที่จะสามารถดึงและตรวจสอบความถูกต้องของแถวสำหรับตาราง "ข้อเท็จจริง" หลักได้
การประมวลผลแบบขนาน
ซอฟต์แวร์ ETL บางเวอร์ชันมีการประมวลผลแบบขนานซึ่งช่วยให้สามารถปรับปรุงประสิทธิภาพโดยรวมของ ETL เมื่อต้องจัดการกับข้อมูลปริมาณมากได้หลายวิธี
แอปพลิเคชัน ETL ใช้การประมวลผลแบบขนานหลักๆ สามประเภท:
- ข้อมูล: โดยการแบ่งไฟล์ข้อมูลลำดับเดียวออกเป็นไฟล์ข้อมูลขนาดเล็กกว่า เพื่อให้สามารถเข้าถึงข้อมูลแบบขนานได้
- ไปป์ไลน์ : ช่วยให้สามารถเรียกใช้งานหลายส่วนประกอบพร้อมกันบนกระแสข้อมูล เดียวกันได้ เช่น การค้นหาค่าในเรคอร์ดที่ 1 พร้อมกับการบวกค่าสองฟิลด์ในเรคอร์ดที่ 2 ไปพร้อมกัน
- องค์ประกอบ: การทำงานพร้อมกันของหลายกระบวนการบนสตรีมข้อมูลที่แตกต่างกันในงานเดียวกัน เช่น การเรียงลำดับไฟล์อินพุตหนึ่งไฟล์พร้อมกับการลบข้อมูลซ้ำในอีกไฟล์หนึ่ง
โดยปกติแล้ว การทำงานแบบขนานทั้งสามประเภทจะทำงานร่วมกันในงานหรือภารกิจเดียว
ความยากลำบากเพิ่มเติมอีกประการหนึ่งคือการตรวจสอบให้แน่ใจว่าข้อมูลที่กำลังอัปโหลดมีความสอดคล้องกัน เนื่องจากฐานข้อมูลต้นทางหลายแห่งอาจมีรอบการอัปเดตที่แตกต่างกัน (บางแห่งอาจอัปเดตทุกสองสามนาที ในขณะที่บางแห่งอาจใช้เวลาหลายวันหรือหลายสัปดาห์) ระบบ ETL อาจจำเป็นต้องระงับข้อมูลบางส่วนไว้จนกว่าแหล่งข้อมูลทั้งหมดจะซิงโครไนซ์กัน ในทำนองเดียวกัน ในกรณีที่ต้องตรวจสอบความถูกต้องของคลังสินค้ากับเนื้อหาในระบบต้นทางหรือกับบัญชีแยกประเภททั่วไป การกำหนดจุดซิงโครไนซ์และจุดตรวจสอบความถูกต้องจึงกลายเป็นสิ่งจำเป็น
การกู้คืนความล้มเหลว
โดยปกติแล้ว กระบวนการจัดเก็บข้อมูลแบบ Data warehousing จะแบ่งกระบวนการ ETL ขนาดใหญ่เป็นส่วนย่อยๆ ที่ทำงานตามลำดับหรือแบบขนาน เพื่อให้สามารถติดตามการไหลของข้อมูลได้ จึงควรติดแท็ก "row_id" ให้กับแต่ละแถวข้อมูล และติดแท็ก "run_id" ให้กับแต่ละส่วนของกระบวนการ ในกรณีที่เกิดความล้มเหลว การมี ID เหล่านี้จะช่วยให้สามารถย้อนกลับและเรียกใช้ส่วนที่ล้มเหลวซ้ำได้
แนวทางปฏิบัติที่ดีที่สุดยังรวมถึงการกำหนดจุดตรวจสอบ (checkpoint)ซึ่งเป็นสถานะที่ขั้นตอนต่างๆ ของกระบวนการเสร็จสมบูรณ์แล้ว เมื่อถึงจุดตรวจสอบแล้ว ควรบันทึกทุกอย่างลงดิสก์ ลบไฟล์ชั่วคราว บันทึกสถานะ ฯลฯ
การนำไปใช้
เฟรมเวิร์ก ETL ที่ได้รับการพัฒนาแล้วอาจช่วยปรับปรุงการเชื่อมต่อและความสามารถในการขยายขนาดได้เครื่องมือ ETL ที่ดีต้องสามารถสื่อสารกับฐานข้อมูลเชิงสัมพันธ์ ที่แตกต่างกันมากมาย และอ่านรูปแบบไฟล์ต่างๆ ที่ใช้ทั่วทั้งองค์กร เครื่องมือ ETL เริ่มย้ายไปสู่ระบบการรวมแอปพลิเคชันระดับองค์กรหรือแม้แต่ ระบบ Enterprise Service Busซึ่งปัจจุบันครอบคลุมมากกว่าแค่การดึงข้อมูล การแปลงข้อมูล และการโหลดข้อมูล ผู้จำหน่าย ETL หลายรายในปัจจุบันมีฟังก์ชันการวิเคราะห์ข้อมูลคุณภาพข้อมูลและเมตาเดต้าตัวอย่างการใช้งานทั่วไปสำหรับเครื่องมือ ETL ได้แก่ การแปลง ไฟล์ CSVเป็นรูปแบบที่ฐานข้อมูลเชิงสัมพันธ์สามารถอ่านได้ การแปลงข้อมูลหลายล้านรายการโดยทั่วไปจะทำได้ง่ายขึ้นด้วยเครื่องมือ ETL ที่ช่วยให้ผู้ใช้สามารถป้อนข้อมูล/ไฟล์ที่คล้ายกับ CSV และนำเข้าสู่ฐานข้อมูลโดยใช้โค้ดให้น้อยที่สุด
เครื่องมือ ETL มักถูกใช้งานโดยผู้เชี่ยวชาญหลากหลายกลุ่ม ตั้งแต่นักศึกษาด้านวิทยาการคอมพิวเตอร์ที่ต้องการนำเข้าชุดข้อมูลขนาดใหญ่ได้อย่างรวดเร็ว ไปจนถึงสถาปนิกฐานข้อมูลที่ดูแลการจัดการบัญชีของบริษัท เครื่องมือ ETL ได้กลายเป็นเครื่องมือที่สะดวกและเชื่อถือได้เพื่อให้ได้ประสิทธิภาพสูงสุด ในกรณีส่วนใหญ่ เครื่องมือ ETL จะมี GUI ที่ช่วยให้ผู้ใช้สามารถแปลงข้อมูลได้อย่างสะดวก โดยใช้ตัวแมปข้อมูลแบบภาพ แทนที่จะเขียนโปรแกรมขนาดใหญ่เพื่อแยกวิเคราะห์ไฟล์และแก้ไขประเภทข้อมูล
แม้ว่าเครื่องมือ ETL จะมีไว้สำหรับนักพัฒนาและเจ้าหน้าที่ไอทีมาโดยตลอด แต่บริษัทวิจัย Gartner เขียนว่าแนวโน้มใหม่คือการมอบความสามารถเหล่านี้ให้กับผู้ใช้ทางธุรกิจ เพื่อให้พวกเขาสามารถสร้างการเชื่อมต่อและการบูรณาการข้อมูลได้ด้วยตนเองเมื่อจำเป็น แทนที่จะต้องไปขอความช่วยเหลือจากเจ้าหน้าที่ไอที[ 13 ] Gartner เรียกผู้ใช้ที่ไม่ใช่ผู้เชี่ยวชาญด้านเทคนิคเหล่านี้ว่า Citizen Integrators [ 14 ]
การเปลี่ยนแปลง
ในการประมวลผลธุรกรรมออนไลน์

ใน แอปพลิเคชัน การประมวลผลธุรกรรมออนไลน์ (OLTP) การเปลี่ยนแปลงจากอินสแตนซ์ OLTP แต่ละรายการจะถูกตรวจจับและบันทึกไว้ในสแนปช็อตหรือชุดการอัปเดต อินสแตนซ์ ETL สามารถใช้เพื่อรวบรวมชุดข้อมูลทั้งหมดเหล่านี้เป็นระยะ แปลงให้เป็นรูปแบบทั่วไป และโหลดลงในดาต้าเลคหรือคลังข้อมูล[ 1 ]
ETL เสมือน
การจำลองข้อมูลเสมือน (Data virtualization)สามารถนำมาใช้เพื่อพัฒนาการประมวลผล ETL ได้ การประยุกต์ใช้การจำลองข้อมูลเสมือนกับ ETL ช่วยแก้ปัญหาการทำงาน ETL ทั่วไป เช่นการย้ายข้อมูลและการบูรณาการแอปพลิเคชันสำหรับแหล่งข้อมูลที่กระจัดกระจายหลายแหล่ง ETL เสมือนทำงานกับตัวแทนที่เป็นนามธรรมของวัตถุหรือเอนทิตีที่รวบรวมจาก แหล่ง ข้อมูลเชิงสัมพันธ์ กึ่งโครงสร้าง และไม่มีโครงสร้างที่หลากหลายเครื่องมือ ETL สามารถใช้ประโยชน์จากการสร้างแบบจำลองเชิงวัตถุและทำงานกับตัวแทนของเอนทิตีที่จัดเก็บอย่างถาวรใน สถาปัตยกรรม แบบฮับและสปokes ส่วนกลาง ชุดข้อมูลที่ประกอบด้วยตัวแทนของเอนทิตีหรือวัตถุที่รวบรวมจากแหล่งข้อมูลสำหรับการประมวลผล ETL เรียกว่าที่เก็บข้อมูลเมตา (metadata repository) และสามารถอยู่ในหน่วยความจำหรือจัดเก็บแบบถาวรได้ โดยการใช้ที่เก็บข้อมูลเมตาแบบถาวร เครื่องมือ ETL สามารถเปลี่ยนจากโครงการแบบครั้งเดียวไปเป็นมิดเดิลแวร์แบบถาวร ทำการประสานข้อมูลและการสร้างโปรไฟล์ข้อมูลได้อย่างสม่ำเสมอและเกือบจะแบบ เรียลไทม์
ดึงข้อมูล โหลดข้อมูล แปลงข้อมูล (ELT)
การดึงข้อมูล โหลดข้อมูล และแปลงข้อมูล (ELT) เป็นรูปแบบหนึ่งของ ETL โดยที่ข้อมูลที่ดึงออกมาจะถูกโหลดเข้าไปในระบบเป้าหมายก่อน[ 15 ]สถาปัตยกรรมสำหรับไปป์ไลน์การวิเคราะห์จะต้องพิจารณาถึงการทำความสะอาดและเพิ่มคุณค่าของข้อมูล[ 15 ]รวมถึงวิธีการปรับมิติให้สอดคล้องกัน[ 1 ]ข้อดีบางประการของกระบวนการ ELT ได้แก่ ความเร็วและความสามารถในการจัดการข้อมูลทั้งแบบไม่มีโครงสร้างและมีโครงสร้างได้ง่ายขึ้น[ 16 ]
หนังสือ The Data Warehouse ETL ToolkitของRalph KimballและJoe Caserta (Wiley, 2004) ซึ่งใช้เป็นตำราเรียนสำหรับหลักสูตรที่สอนกระบวนการ ETL ในคลังข้อมูล ได้กล่าวถึงประเด็นนี้[ 17 ]
คลังข้อมูลบนคลาวด์ เช่นAmazon Redshift , Google BigQuery , Microsoft Azure Synapse AnalyticsและSnowflake มอบพลังการประมวลผลที่ปรับขนาดได้สูง ทำให้ธุรกิจต่างๆ ไม่จำเป็นต้องทำการแปลงข้อมูลล่วงหน้า และสามารถคัดลอกข้อมูลดิบไปยังคลังข้อมูลได้ โดยตรง ซึ่งคลังข้อมูลจะสามารถแปลงข้อมูลเหล่านั้นได้ตามต้องการโดยใช้SQL
หลังจากใช้ ELT แล้ว ข้อมูลอาจได้รับการประมวลผลเพิ่มเติมและจัดเก็บไว้ในคลังข้อมูล[ 18 ]
เครื่องมือการรวมข้อมูลส่วนใหญ่มุ่งเน้นไปที่ ETL ในขณะที่ ELT เป็นที่นิยมในอุปกรณ์ฐานข้อมูลและคลังข้อมูล ในทำนองเดียวกัน เป็นไปได้ที่จะดำเนินการ TEL (Transform, Extract, Load) โดยที่ข้อมูลจะถูกแปลงบนบล็อกเชนก่อน (เพื่อบันทึกการเปลี่ยนแปลงข้อมูล เช่น การเผาโทเค็น) ก่อนที่จะดึงข้อมูลและโหลดไปยังแหล่งเก็บข้อมูลอื่น[ 19 ]
ดูเพิ่มเติม
- รูปแบบทางสถาปัตยกรรม (สถาปัตยกรรมอ้างอิง EA)
- ท่อส่ง CMS
- สร้าง อ่าน อัปเดต และลบ (CRUD)
- การทำความสะอาดข้อมูล
- การบูรณาการข้อมูล
- Data meshคือสถาปัตยกรรมข้อมูลที่มุ่งเน้นโดเมน
- การย้ายข้อมูล
- การแปลงข้อมูล (การคำนวณ)
- การแลกเปลี่ยนข้อมูลอิเล็กทรอนิกส์ (EDI)
- สถาปัตยกรรมองค์กร
- มาตรฐานการแลกเปลี่ยนข้อมูลอิเล็กทรอนิกส์ทางกฎหมาย (LEDES)
- การค้นพบเมตาเดตา
- การประมวลผลเชิงวิเคราะห์ออนไลน์ (OLAP)
- การประมวลผลธุรกรรมออนไลน์ (OLTP)
- ETL เชิงพื้นที่