[Internship@True]วันที่ 6
เนื่องจากยังไม่มี username ของทางทรู ทำให้ต้องมาเกาะใช้ username ของพี่ๆเวียนไปมาทำให้ต้องมาลงโปรแกรมที่จำเป็นใหม่ตลอด โดยในส่วนแรกขอสรุปโปรแกรมที่ใช้เลยและกัน
เนื่องจากยังไม่มี username ของทางทรู ทำให้ต้องมาเกาะใช้ username ของพี่ๆเวียนไปมาทำให้ต้องมาลงโปรแกรมที่จำเป็นใหม่ตลอด โดยในส่วนแรกขอสรุปโปรแกรมที่ใช้เลยและกัน
วันนี้ก็เรื่องมีสิ่งใหม่ๆ เข้ามาแล้วจากเดิมที่ query แบบปกติ คือ SQL ที่เราทำ มาเป็นตัว PL/SQL และก็มีโปรเจคเข้ามาแล้ว โดยตัวโปรเจตก็จะมีรายละเอียดคร่าวๆ
วันนี้ก็ทำงานตามปกติ ก็มีงานเดิม คือ query ข้อมูล กับดู log ของ roaming ส่วนช่วงบ่ายก็เริ่มชิว ลง xampp portable มาเพื่อจะลองศึกษา codeigniter ซึ่งเป็น php framework อีกตัวหนึ่ง ทวนความหลังกับ cakephp อันแสนโหดร้ายจากฝึกงานเมื่อปีที่แล้ว รับงานมา แต่เพื่อนร่วมทีมรับ job นอก และทิ้งงานไป TT
วันนี้ก็เริ่มมีงานให้ศึกษา log ของ Roaming ประมานค่า Acknowledge ที่เรียนตอน network และก็มาดูแต่ละ case หรือ scenario ว่ามันผ่านตรงตามข้อกำหนด หรือไม่
วันนี้ก็นั่งว่างๆ รอเมาส์ รองาน อ่านเอกสารที่พี่เค้าให้มา
ก็ไม่มีอะไรมาก นั่งงงรอพี่เลี้ยงมารับ 11 โมงกว่าๆ แต่พี่เลี้ยงลาสงกรานต์ ก็เลยได้อ่านเอกสารเกี่ยวกับ International Roaming
ดูโครงสร้างตารางกันก่อนมีตาราง CONSISTS (เก็บข้อมูลการสั่งไอศครีม แต่ละถ้วย) กับ STOCKS (เก็บข้อมูลของสินค้า) ลองสร้างโจทย์เล่นๆ กัน คือ หายอดขายของไอศครีม แต่ละชิ้นว่ามีการสั่งไปจำนวนกี่ครั้ง โดยจะต้องแสดงไอศครีมที่ยังไม่ได้ถูกสั่งด้วย มาดูโจทย์ทีละส่วน หายอดขายของไอศครีม แต่ละชิ้นว่ามีการสั่งไปจำนวนกี่ครั้ง แสดงว่าต้องมีการ join ตาราง CONSISTS กับ STOCKS เพื่อให้ได้ข้อมูลของไอศครีมแต่ละชนิดออกมา โดยจะใช้ RIGHT OUTER JOIN เพื่อให้ได้ข้อมูลไอศครีมที่ไม่ถูกสั่งออกมา ซึ่งจะเป็นค่า NULL จะต้องแสดงไอศครีมที่ยังไม่ได้ถูกสั่งด้วย มันจะได้เป็นค่า null โดยเราจะใช้ฟังค์ชั่น NVL ของ Oracle ในการเปลี่ยน NULL เป็น 0 วิธีการใช้ NVL(ชื่อคอลัมน์ , ตัวเลขที่จะให้เปลี่ยน) SQL แบบแรกที่ลองเขียนขึ้น แต่ข้อมูลไอศครีม (STOCK_TYPE = 1) มีทั้งหมด 19 ชนิด แสดงว่ามันตกหล่นไป 5 อย่าง เมื่อเราลองเปลี่ยน Alias ใน SQL มัน GROUP BY จาก C.STOCK_ID เป็น S.STOCK_ID แล้วผลที่ได้ คือ มีทั้งหมด 19 แถวออกมา (เลือกตัวที่จะ GROUP BY ผิดทีนี่ยาวเลย)
จากภาพกำหนดใน T1, T2, T3, T4 และ T5 หมายถึง Transaction ต่างๆ ในระบบ Tc และ Tf ซึ่งหมายถึงเวลาที่ระบบ DBMS ทำการตรวจสอบสถานภาพการทำงานของ Transaction ต่างๆ สมมติว่าระบบเกิดความขัดข้อง(System failure) ณ เวลาที่ Tfและมีจุดตรวจสอบ(Check Point)ครั้งสุดท้าย กระทำขึ้น ณ เวลา Tc จงตอบคำถามต่อไปนี้ โดยอาศัยข้อมูลต่างๆของแต่ละ Transaction ประกอบดังนี้ T1 คือ นาย ก ดูยอดเงินของตัวเอง พบว่ามีเงินอยู่ 1200 บาท T2 คือ นาย ก ถอนเงินออกจากบัญชี 1000 T3 คือ นาย ก ฝากเงินเข้าบัญชี 500 บาท T4 คือ นาย ข ฝากเงินเข้าบัญชี อีก 200 จากยอดเดิมที่มี 700 บาท T5 คือ นาย ข ฝากเงินเข้าไปอีก 300 บาท เมื่อระบบเกิดความขัดข้อง(System failure) แต่ละ Transaction จะมีการจัดการอย่างไร T1 ไม่ต้องทำอะไร เพราะ ข้อมูลถูกบังคับเก็บลงใน DB Space ตอน Check Point ที่เวลา TC T2 ทำ undo เพราะ System failure ก่อน commit ที่ให้ระบบไม่มี log-file T3 ทำ redo เพราะ มี log-file ของ Transaction จากการ commit T4 ทำ redo เพราะ มี log-file ของ…
อันนี้เป็น Blog ที่เขียนไว้นานมากแล้วที่ blogspot โดยผมได้ย้ายมาลง WordPress ตอนช่วงปี 2013 นะครับ ^__^ ลองอ่านดูกันได้เลย โดยเป็นโจทย์ที่ช่วงให้เข้าใจเกี่ยวกับ Isolation level มากขึ้นครับ หาก DBA ตั้งค่า ISOLATION LEVEL ที่ตัวระบบจัดการฐานข้อมูล ในระดับต่างๆแล้ว ณ เวลาที่ k ผลรวมของทุก Account ของ Ti จะมีค่าที่ได้เท่าไหร่ โดยแต่ละ Account มีค่าต่างๆ ดังนี้ READ-UNCOMMITTED READ-COMMITED REPETABLE-READ SERIALIZABLE