Range Partition เป็นการแบ่งข้อมูล ในแต่ละ Partition แบบเท่าๆ กัน ซึ่งในแต่ละ Partition จะเก็บข้อมูล โดยแบ่งตาม Range ของข้อมูล ตาม Column ที่สนใจ 1 Column หรือ มากกว่า ขึ้นไป เพื่อใช้ประโยชน์สำหรับเก็บข้อมูลที่สัมพันธ์กันไว้ใน Partition เดียวกัน นอกจากนั้น ในแต่ละโหนด อาจมี Range ที่มีขอบเขตมากน้อยไม่เท่ากัน เพื่อเก็บข้อมูลในแต่ละโหนดให้มีจำนวนเท่าๆ กัน โดยส่วนใหญ่ Range Partition มักจะใช้ก่อนหน้าที่จะ ทำการเรียงข้อมูล
ในการใช้งาน Range Partition จำเป็นต้องมีการสร้าง Range Map ซึ้งทำได้โดย ใช้ Stage ชื่อ Write Range Map ซึ่งจะแสดงรายละเอียดในหัวข้อถัดไป
รูป 1
จากรูป 1 เป็นกราฟ แบบแท่ง แสดงแบ่ง Partition ตามข้อมูลอายุ โดยกราฟแต่ละแท่งคือจำนวน Partition และ Range ของแต่ละ Partition คือ ตัวเลขที่ปรากฎบนแท่งกราฟ ความสูลของกราฟ คือ จำนวนรายการข้อมูลที่บรรจุในแต่ละ Partition สังเกตุว่า Data Stage จะแบ่งข้อมูลให้เก็บในแต่ละ Partition ให้เท่าๆ กัน โดยมีขอบเขตของ Range ของข้อมูล ในแต่ละ Partition อาจไม่เท่ากัน โดยการคำนวณจะใช้ Range Map ในการคำนวณ
การใช้งาน Range Partition
รูป 2
จากรูปเป็นการรวม Sequential File 3 File เพื่อหาข้อมูลที่เก็บใน Column ชื่อ CRN_BAL สูงสุด 20 อันดับแรก ซึ่งก่อนหน้าจำทำการเรียงลำดับข้อมูล CRN_BAL โดย Sort Stage ที่ชื่อ srt_Data_In_Partition แล้วใช้ Head Stage ที่ชื่อ hd_Top_20_on_Partition_0 เพื่อเก็บเฉพาะข้อมูล 20 รายการแรก จะต้องทำการเปลี่ยนแปลง Partition ให้เป็นแบบ Range Partition โดยกำหนดที่ Transformer Stage ที่ชื่อ xfrm_Set_Range_Partition
จากที่กล่าวมา ในเมื่อมีการใช้ Partition แบบ Range Partition จะต้องมีการสร้าง Range Map ก่อน แล้วจึงนำ Range Map ที่ได้ ไปใช้เมื่อต้องการใช้ Partition แบบ Range Partition ดังนั้นก่อนหน้าที่จะสร้าง Job ดังรูป 1 ต้องสร้าง Job เพื่อสร้าง Range Map ดังต่อไปนี้
รูป 3
จากรูป 3 เป็น Job สำหรับสร้าง Range Map โดยนำ Sequential File ทั้ง 3 มารวมกัน และ เรียงลำดับข้อมูลใน CRN_BAL ด้วย Sort Stage ชื่อ srt_By_CRN_BAL เพื่อจำเรียงข้อมูลก่อน จะสร้าง Range Map ด้วย Write Range Map Stage ชื่อ Write_Range_Map
เนื่องจาก การสร้าง Range Map นั้น Data Stage จะอ่านข้อมูล CRN_BAL ทั้งหมดเพื่อการคำนวน Range ของข้อมูล ให้สัมพันธ์กับ จำนวน Partition ที่กำหนด ดังนั้นการเรียงลำดับจะช่วยให้ การสร้าง Range Map ทำได้เร็วขึ้น จึงควรมีการใช้ Sort Stage ก่อน Write Range Map Stage
รูป 4
รูป 5
จากรูป 4 เป็นการกำหนดค่าสำหรับ Write Range Map Stage ที่ Input Tab ไปที่ Property Tab กำหนด Option ต่างๆ ดังนี้
- File Update Mode กำหนดเป็น Overwrite เพื่ออนุญาติให้สามารถสร้าง Range Map ทับ File เดิมได้
- Key กำหนดเป็น CRN_BAL ซึ่งก็คือ Key Column ที่ต้องการสร้าง Range Map โดย กำหนด Option ย่อย ชื่อ Sort Order เป็น Descending เพื่อให้เรียงข้อมูลแบบมากไปหาน้อย
- Range Map File กำหนด Path และ ชื่อ File ที่ใช้เก็บ Range Map (รูป 5) โดยจะนำไปใช้เมื่อต้องการแบ่ง Partition แบบ Range Partition
การประยุกต์ใช้ Range Partition เพื่อหา Top20
เมื่อ Run Job ที่ใช้สร้าง Range Map เรียบร้อย จึงนำ Range Map (File และ Path ที่กำหนดเมื่อสร้าง Range Map ดังที่กล่าวมา) ดังต่อไปนี้
รูป 6
กำหนด รูป แบบ Partition ที่ Transformer Stage ที่ชื่อ xfrm_Set_Range_Partition ของ Job ในรูป 2 ที่ Inputs Tab และ ไปที่ Partitioning Tab กำหนด Property ต่างๆ ดังนี้
- Partition Type กำหนดเป็น Range เพื่อเลือก การแบ่ง Partition แบบ Range Partition
- Available กำหนดเป็น CRN_BAL (เมื่อ Click แล้ว จะไปปรากฏที่ Column ชื่อ Key ของตาราง Selected) เป็นการกำหนด Key Column โดย กำหนด Option ที่ตาราง Select เป็น Descending
หมายเหตุ : ในการเลือก Key Column และ Option จะต้องเลือกให้เหมือนกับ Range Map ที่ได้สร้างไว้
- File Name และ Part ของ Range Map โดย Click ที่ปุ่ม ที่ปรากฏด้านหลังของ List Box ที่ชื่อ Partition Type โดยเมื่อ Click แล้ว ช่องให้ระบุ Name และ Part ของ Range Map
หลังจากที่กำหนด Property ที่ Write Range Map Stage แล้วจึงทำการเรียงลำดับข้อมูลโดยใช้ Sort Stage ที่ชื่อ srt_Data_In_Partition โดยกำหนดให้ เรียงลำดับตาม ข้อมูลใน Column ที่ชื่อ CRN_BAL และ เรียงลำดับแบบ Descending แต่ต้องมีการกำหนด Partition Type ของ Sort Stage แบบ Same เมื่อให้ใช้ การแบ่ง Partition แบบเดียวกันกับ Transformer Stage ที่ส่งข้อมูลเข้ามา จะทำให้ข้อมูล CRN_BAL ที่มากที่สุดถูกเก็บไว้ที่ Partition ที่ 1
รูป 7
เมื่อได้ข้อมูลที่ถูกเรียงลำดับ CRN_BAL จากมากไปหาน้อย และ ข้อมูลดังกล่าว ถูกเก็บไว้ที่ Partition ที่ 1 ขั้นต่อไปเป้นการเลือกข้อมูล เฉพาะ 20 อันดับแรก จากรูป 7 เลือกใช้ Head Stage โดยกำหนด Property ตามขั้นตอนต่อไปนี้
เลือก Stage Tab และ ไปที่ Property Tab กำหนด Property ดังนี้
- Rows
- Number of Rows (Per Partition) กำหนดเป็น 20 เพื่อเลือกข้อมูล 20 รายการแรก ของ ทุก Partition
- Partitions
- All Partitions กำหนดเป็น False เพื่อเลือกข้อมูล เฉพาะ Partition ที่สนใจเท่านั้น
- Partition Number กำหนดเป็น 0 เพื่อเลือกข้อมูลจาก Partition ที่ 1 (เลขที่ ที่ใช้กำหนด Partition ที่สนใจ จะเริ่มจาก 0 คือ Partition ที่ 1 และ 1 คือ Partition ที่ 2 ต่อเนื่องกันไปตามจำนวน Partition)
ดังนั้นจากตัวอย่าง Range Partition สามารถใช้หาข้อมูล สูงสุด 20 อันดับ โดย ให้ Range Partition ช่วยในการรวบรวมข้อมูล สูงสุด ไปหา ต่ำสุด เก็บไว้ที่ Partition ที่ 1, 2, 3 … ไปจนถึง Partition สุดท้าย จากนั้นจึงใช้ Sort Stage ช่วยในการเรียงลำดับข้อมูลในแต่ละ Partition จากมากไปหาน้อย แล้วจึง ใช้ Head Stage เลือกข้อมูล 20 อันดับแรกจาก Partition ที่ 1 จึงทำให้ได้ข้อมูล 20 อันดับแรก ที่ถูกต้อง