VSAM - KSDS

KSDS เรียกว่าชุดข้อมูลตามลำดับคีย์ ชุดข้อมูลตามลำดับคีย์ (KSDS) ซับซ้อนกว่า ESDS และ RRDS แต่มีประโยชน์และหลากหลายกว่า เราต้องเขียนโค้ดINDEXEDภายในคำสั่ง DEFINE CLUSTER สำหรับชุดข้อมูล KSDS คลัสเตอร์ KSDS ประกอบด้วยสององค์ประกอบต่อไปนี้ -

  • Index- ส่วนประกอบดัชนีของคลัสเตอร์ KSDS ประกอบด้วยรายการของค่าคีย์สำหรับระเบียนในคลัสเตอร์พร้อมด้วยตัวชี้ไปยังระเบียนที่เกี่ยวข้องในส่วนประกอบข้อมูล ส่วนประกอบดัชนีหมายถึงที่อยู่จริงของระเบียน KSDS สิ่งนี้เกี่ยวข้องกับคีย์ของแต่ละเรกคอร์ดกับตำแหน่งสัมพัทธ์ของเรกคอร์ดในชุดข้อมูล เมื่อมีการเพิ่มหรือลบระเบียนดัชนีนี้จะได้รับการอัปเดตตามนั้น

  • Data- ส่วนประกอบข้อมูลของคลัสเตอร์ KSDS ประกอบด้วยข้อมูลจริง แต่ละเร็กคอร์ดในส่วนประกอบข้อมูลของคลัสเตอร์ KSDS ประกอบด้วยฟิลด์คีย์ที่มีจำนวนอักขระเท่ากันและเกิดขึ้นในตำแหน่งสัมพัทธ์เดียวกันในแต่ละเร็กคอร์ด

ต่อไปนี้เป็นคุณสมบัติหลักของ KSDS -

  • บันทึกภายในชุดข้อมูล KSDS จะถูกจัดเรียงตามคีย์ฟิลด์เสมอ บันทึกจะถูกจัดเก็บจากน้อยไปหามากเรียงลำดับตามคีย์

  • บันทึกสามารถเข้าถึงได้ตามลำดับและยังสามารถเข้าถึงได้โดยตรง

  • บันทึกถูกระบุโดยใช้คีย์ คีย์ของแต่ละเรกคอร์ดคือฟิลด์ในตำแหน่งที่กำหนดไว้ล่วงหน้าภายในเรกคอร์ด แต่ละคีย์ต้องไม่ซ้ำกันในชุดข้อมูล KSDS ดังนั้นจึงไม่สามารถทำซ้ำบันทึกได้

  • เมื่อใส่ระเบียนใหม่ลำดับตรรกะของเร็กคอร์ดจะขึ้นอยู่กับลำดับการเรียงของฟิลด์คีย์

  • บันทึกในชุดข้อมูล KSDS อาจมีความยาวคงที่หรือความยาวผันแปรได้

  • KSDS สามารถใช้ในรูปแบบ COBOLโปรแกรมเช่นเดียวกับไฟล์อื่น ๆ เราจะระบุชื่อไฟล์ใน JCL และเราสามารถใช้ไฟล์ KSDS สำหรับการประมวลผลภายในโปรแกรม ในโปรแกรม COBOL ระบุการจัดระเบียบไฟล์เป็นIndexed และคุณสามารถใช้โหมดการเข้าถึงใดก็ได้ (Sequential, Random or Dynamic) ด้วยชุดข้อมูล KSDS

โครงสร้างไฟล์ KSDS

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

การกำหนด KSDS Cluster

ไวยากรณ์ต่อไปนี้แสดงพารามิเตอร์ที่เราสามารถใช้ได้ในขณะสร้างคลัสเตอร์ KSDS

คำอธิบายพารามิเตอร์ยังคงเหมือนเดิมตามที่กล่าวไว้ใน VSAM - โมดูลคลัสเตอร์

DEFINE CLUSTER (NAME(ksds-file-name)     -
BLOCKS(number)                           -
VOLUMES(volume-serial)                   -
INDEXED                                  -
KEYS(length offset)                      -
RECSZ(average maximum)                   -
[FREESPACE(CI-Percentage,CA-Percentage)] -
CISZ(number)                             -
[READPW(password)]                       -
[FOR(days)|TO(date)]                     -
[UPDATEPW(password)]                     -
[REUSE / NOREUSE])                       -
DATA                                     -
   (NAME(ksds-file-name.data))           -
INDEX                                    -
   (NAME(ksds-file-name.index))

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงวิธีสร้างคลัสเตอร์ KSDS ใน JCL โดยใช้ยูทิลิตี้ IDCAMS -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DEFINE CLUSTER (NAME(MY.VSAM.KSDSFILE)  -
   INDEXED                                 -
   KEYS(6 1)	                           -	
   RECSZ(80 80)                            -
   TRACKS(1,1)                             -
   CISZ(4096)                              -                            
   FREESPACE(3 3) )                        -
   DATA (NAME(MY.VSAM.KSDSFILE.DATA))      -
   INDEX (NAME(MY.VSAM.KSDSFILE.INDEX))    -
/*

หากคุณจะเรียกใช้ JCL ข้างต้นบนเซิร์ฟเวอร์ Mainframes ควรรันด้วย MAXCC = 0 และจะสร้างไฟล์ MY.VSAM.KSDSFILE VSAM

การลบ KSDS Cluster

คลัสเตอร์ KSDS ถูกลบโดยใช้ยูทิลิตี้ IDCAMS คำสั่ง DELETE จะลบรายการของคลัสเตอร์ VSAM ออกจากแค็ตตาล็อกและเป็นทางเลือกที่จะลบไฟล์ซึ่งจะทำให้พื้นที่ว่างที่อ็อบเจ็กต์ครอบครอง

DELETE data-set-name CLUSTER  
[ERASE / NOERASE] 
[FORCE / NOFORCE] 
[PURGE / NOPURGE] 
[SCRATCH / NOSCRATCH]

ไวยากรณ์ด้านบนแสดงพารามิเตอร์ที่เราสามารถใช้ได้ในขณะที่ลบคลัสเตอร์ KSDS คำอธิบายพารามิเตอร์ยังคงเหมือนเดิมตามที่กล่าวไว้ใน VSAM - โมดูลคลัสเตอร์

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงวิธีการลบคลัสเตอร์ KSDS ใน JCL โดยใช้ยูทิลิตี้ IDCAMS -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DELETE MY.VSAM.KSDSFILE CLUSTER
/*

หากคุณจะเรียกใช้ JCL ข้างต้นบนเซิร์ฟเวอร์ Mainframes ควรรันด้วย MAXCC = 0 และจะลบ MY.VSAM.KSDSFILE VSAM Cluster