รู้จักกับ Database system [ Database the series ] Part 2
มาต่อกันที่ Part 2 หลังจากที่รู้จักกับ Database เบื้องต้นกันแล้ว ต่อไปมาทำความเข้าใจกับ Database system ให้มากขึ้นกันอีกหน่อย
จาก Part ก่อนหน้านี้ได้บอกว่า Database system คือ Data , Database และ DBMS รวมกัน แล้วมันรวมกันอย่างไงหล่ะ?? ลองมาดูโครงสร้างของมันกัน
จากรูปจะเห็นได้ว่า Database system คือกรอบใหญ่ ที่รับคำสั่งการทำงานจาก User เช่น Queries ข้อมูลอะไรสักอย่าง โดยที่ DBMS จะเป็นตัวที่รับคำสั่งน้ันมา เข้าถึง Data ที่เก็บอยู่ซึ่งก็คือ Database นั่นเอง
จากที่เห็นในรูปว่า DBMS จะเป็นตัวที่คอยจัดการ Database แล้ว DBMS ทำอะไรได้บ้างหล่ะ
หน้าที่ของ DBMS
- กำหนด ฐานข้อมูลเฉพาะ ว่า ประเภทข้อมูล เป็นอะไร, โครงสร้าง เป็นยังไง และ ข้อจำกัด เป็นยังไง เช่น ฐานข้อมูลนี้ต้องมี ชื่อ (string) , เบอร์โทร (string) และ อายุ (int) ทั้ง 3 ข้อมูล
- สร้าง หรือ โหลด เนื้อหา จากฐานข้อมูลที่เก็บข้อมูลนั้นๆไว้
- จัดการ ฐานข้อมูล โดยมี 3 หน้าที่ย่อยๆ
- การดึงข้อมูล: การ Query ข้อมูล , สร้างรายงาน
- การแก้ไข: การเพิ่ม การลบ และการอัปเดตเนื้อหา ข้อมูล ตามข้อจำกัดที่กำหนดไว้
- การเข้าถึง: ฐานข้อมูล - การประมวลผล และ การแบ่งปัน ข้อมูลในฐานข้อมูล โดยยังทำให้ข้อมูลทั้งหมดถูกต้องและสอดคล้องกัน ตามข้อจำกัดที่กำหนดไว้
- ป้องกัน และ รักษาความปลอดภัย เพื่อป้องกันการเข้าถึงโดยไม่ได้รับอนุญาต
- Presentation และ Visualization ให้เห็นภาพข้อมูลที่ไปใช้ได้ หรือนำไปวิเคราะห์ต่อได้
- บำรุงรักษา ฐานข้อมูล และ โปรแกรมที่เกี่ยวข้อง ตามอายุการใช้งานของฐานข้อมูล
การใช้งานฐานข้อมูล
ตอนนี้เรารู้หน้าที่และสิ่งที่ DBMS สามารถทำได้กันไปแล้วจากที่เรารู้จากรูปแรกผู้ใช้งานหรือ application ที่เราเขียน จะใช้งานผ่าน DBMS แล้วจะต้องทำยังไงหล่ะถึงจะใช้งานฐานข้อมูลได้ผ่าน DBMS และต้องใช้ให้ดีด้วย
- ในการใช้งานฐานข้อมูล application จะสร้าง
- Queries : ใช้เข้าถึงส่วนต่างๆ ของฐานข้อมูล และ กำหนดรูปแบบของผลลัพธ์ที่ต้องการ
- Transactions : ฐานข้อมูลจะรับประกันว่า operation นี้เมื่อเริ่มทำแล้วจะทำให้เสร็จ หรือไม่ก็เหมือนไม่เคยเกิดขึ้นเมื่อเกิดความผิดพลาด เพื่อไม่ให้เกิดผลกระทบที่ไม่ต้องการ/ไม่ถูกต้องกับฐานข้อมูล - Application จะต้องไม่อนุญาตให้ unauthorized users เข้าถึงข้อมูลได้
- Application ต้องทำงานได้ แม้เปลี่ยน user requirement
ลักษณะสำคัญของฐานข้อมูล
ตอนนี้เรารู้จักระบบฐานข้อมูล และ การใช้งานกันแล้ว ต่อไปคือฐานข้อมูลที่ดีจะต้องเป็นยังไง โดยฐานข้อมูลที่ดีควรที่จะต้องมีลักษณะต่อไปนี้
- Self-describing nature of a database system : ฐานข้อมูลจะต้องสามารถอธิบายตัวมันเองได้ โดยมีการเก็บคำอธิบายของฐานข้อมูล เช่น โครงสร้างข้อมูล , ประเภท และข้อจำกัด โดยจะถูกเรียกว่า Meta-data
- Insulation between programs and data : เป็นฉนวนกั้นระหว่างโปรแกรมและข้อมูล เมื่อฐานข้อมูลถูกใช้งานบางครั้งจะมีโอกาสที่โครงสร้างบางอย่างของฐานข้อมูลจะถูกแก้ไข แต่โปรแกรมจะยังคงสามารถใช้ฐานข้อมูลนี้ต่อไปได้โดยที่ไม่ต้องไปแก้ไขโปรแกรม โดยจะถูกเรียกว่า program-data independence
- Data Abstraction : Data model ถูกใช้เพื่อที่จะซ่อนรายละเอียดการเก็บข้อมูลของ database แต่จะแสดงฐานข้อมูลในเชิงคอนเซ็ปต์แทนโดยใช้การสร้างแบบจำลองข้อมูล และเป็น blueprint ใช้ในการออกแบบ และ สื่อสารกับผู้ใช้งานฐานข้อมูล
- Support of multiple views of the data : รองรับการใช้งานข้อมูลในหลายมุมมอง ผู้ใช้งานฐานข้อมูลแต่ละคนมีจุดประสงค์ในข้อมูลนั้นๆที่แตกต่างกัน เช่น ฐานข้อมูลมหาวิทยาลัย อาจารย์สนใจเพียงแต่ รายชื่อ นักศึกษา และ วิชาที่ต้องสอน แต่ นักศึกษาสนใจว่า ต้องเรียนวิชาอะไรบ้าง ใน 2 ผู้ใช้งานนี้ใช้ฐานข้อมูลเดียวกัน โดยที่ฐานข้อมูลจะให้ข้อมูลเฉพาะข้อมูลที่ผู้ใช้สนใจเท่านั้น
- Sharing of data and multi-user transaction processing : รองรับการแบ่งปันข้อมูล และ การมีผู้ใช้งานหลายคน
- ผู้ใช้สามารถดึงข้อมูล และ อัปเดต ฐานข้อมูลพร้อมกันได้
- การควบคุมการทำงานพร้อมกัน โดยรับประกันว่า Transaction แต่ละครั้งดำเนินการอย่างถูกต้อง หรือ ถูกยกเลิกหากเกิดข้อผิดพลาด
- มีระบบ Recovery เมื่อเกิด failure เพื่อให้มั่นใจว่า Transaction ที่เสร็จสมบูรณ์จะถูกบันทึกไว้อย่างถาวรในฐานข้อมูล
- OLTP (Online Transaction Processing) ต้องสามารถทำธุรกรรมพร้อมกันได้หลายร้อยรายการ ต่อวินาที
จบไปแล้วสำหรับ Part 2 นะครับ เนื้อหาบทนี้คิดว่าค่อนข้างเข้าใจและเรียบเรียงยากหากอ่านแล้วไม่เข้าใจก็ขออภัยไว้ ณ ที่นี้ด้วยนะครับ หวังว่าจะมีประโยชน์กับคนที่ได้เข้ามาอ่านนะครับ ขอบคุณทุกคนที่อ่านจนจบนะครับ สำหรับเนื้อหาต่อจากนี้สามารถติดตาม Part 3 ต่อได้เลย
Credit
Illustration by Icons 8 from Ouch!