Database
ในอดีตจนถึงปัจจุบัน เราอาจจะเห็นการพัฒนาซอฟต์แวร์ เว็บไซต์ และแอพต่างๆ มามากมาย โดยที่เมื่อเราได้ทำให้โปรเจคเหล่านั้นมีหน้าตาออกมาสวยงาม แสดงผลให้เราเห็นถึงข้อมูลที่ต้องการให้ผู้ใช้ ในแต่ละบริบทของจุดประสงค์ที่โปรเจคเหล่านั้นทำมา แต่การที่จะมีข้อมูลออกมาแสดงผลให้ผู้ใช้ได้เห็นผ่านหน้าจอต่างๆ นั้น ก็ย่อมต้องมีการเก็บข้อมูลอย่างถูกต้อง เป็นระเบียบ และเรียกใช้ได้ง่าย สิ่งนั้นเรียกว่า ฐานข้อมูล หรือที่เหล่านักพัฒนาได้พูดกันก็คือ Database
Credit: https://mindphp.com/images/2022/06/database_01.png
ฐานข้อมูล (Database) คืออะไร
ฐานข้อมูล คือ ชุดของข้อมูลที่มีโครงสร้างหรือข้อมูลที่มีการจัดระเบียบ ซึ่งโดยทั่วไปแล้ว จะจัดเก็บอยู่ในระบบคอมพิวเตอร์ ฐานข้อมูลมักจะถูกควบคุม โดยระบบจัดการฐานข้อมูล (DBMS: Database Management System) ทั้งข้อมูลและ DBMS ที่ทำงานร่วมกับแอพพลิเคชัน จะถูกเรียกว่า ระบบฐานข้อมูล (Database System) หรือจะเรียกแบบง่ายๆทั่วไปว่า ฐานข้อมูล
ข้อมูลภายในฐานข้อมูลประเภททั่วไปที่ดำเนินการอยู่ในแัจจุบัน มักจะสร้างอยู่ในรูปแบบของแถว (rows) และคอลัมน์ (columns) ที่อยู่ในชุดของตาราง เพื่อให้การประมวลผลและการสืบค้นข้อมูลมีประสิทธิภาพ ข้อมูลสามารถเข้าถึง จัดการ แก้ไข ปรับปรุงข้อมูล รวมไปถึงการควบคุมและจัดระเบียบข้อมูลได้ง่าย ฐานข้อมูลโดยส่วนใหญ่จะใช้ภาษา SQL เป็นรากฐาน สำหรับการเขียน (writing) และการสืบค้นข้อมูล (querying)
SQL (Structured Query Language)
SQL เป็นภาษาการเขียนโปรแกรมที่ใช้โดยฐานข้อมูลเชิงสัมพันธ์เกือบทั้งหมดในการสืบค้นข้อมูล (query), จัดการ (manipulate) และกำหนดข้อมูลและทำให้สามารถเข้าถึงการควบคุมของข้อมูลได้ โดยที่ SQL ได้รับการพัฒนาครั้งแรกที่ IBM ในปี 1970 ซึ่งมี Oracle เป็นผู้สนับสนุนหลัก จนนำไปสู่การสร้างมาตรฐานในการพัฒนาฐานข้อมูลด้วย SQL ที่หลากหลายมากขึ้น แต่ในปัจจุบันก็มีภาษาโปรแกรมใหม่เริ่มปรากฎให้เห็นมากขึ้น
กว่าจะมาเป็น ฐานข้อมูล (Evolution of Database)
ฐานข้อมูลมีการพัฒนาอย่างมาก ตั้งแต่การเริ่มแรกในช่วง 1960 Navigational Database เช่น Hierarchical Database ซึ่งมีการวางรูปแบบเป็นเสมือนต้นไม้ จะทำให้มีการสร้างความสัมพันธ์ระหว่างกันเป็นแบบ one-to-many เท่านั้น และ Network Database เป็นรูปแบบฐานข้อมูลที่มีความยืดหยุ่นกว่าที่สามารถสร้างความสัมพันธ์ระหว่างกันได้หลากหลาย ทั้งหมดนั้นเป็นระบบดั้งเดิมที่ใช้จัดเก็บข้อมูล และจัดการข้อมูล ซึ่งถึงแม้ว่ามันจะดูเรียบง่ายและกำลังดี แต่ระบบเริ่มแรกนั้นไม่ได้มีความยืดหยุ่นในการใช้งานมากมายสักเท่าไหร่ ในปี 1980 ฐานข้อมูลเชิงสัมพันธ์ (Relational Database) ได้รับความนิยม ซึ่งตามมาด้วยฐานข้อมูลเชิงวัตถุ (Object-oriented Database) ในปี 1990 และไม่นานมานี้ก็ได้มีการสร้าง NoSQL ที่เกิดจากการเติบโตของการใช้งานอินเตอร์เน็ตและความต้องการใช้งานที่รวดเร็วมากขึ้น รวมถึงการประมวลผลข้อมูลที่ไม่มีโครงสร้าง ทุกวันนี้ฐานข้อมูลบน เคลาวด์ (Cloud Database) และฐานข้อมูลแบบขับเคลื่อนด้วยตัวเอง (Self-Driving Database) กำลังสร้างมิติใหม่ในแง่รวมข้อการรวบรวม จัดเก็บ จัดการและการใช้งานข้อมูล
ประโยชน์ของฐานข้อมูล
- ลดการเก็บข้อมูลที่ซ้ำซ้อน ข้อมูลบางชุดที่อยู่ในรูปของแฟ้มข้อมูลอาจมีการปรากฏอยู่หลายๆ แห่ง เพราะมีผู้ใช้ข้อมูลชุดนี้หลายคน เมื่อใช้ระบบฐานข้อมูลแล้ว จะช่วยทำให้ความซ้ำซ้อนหรือความไม่เป็นระเบียบของข้อมูลลดน้อยลงไปด้วย
- รักษาความถูกต้องของข้อมูล เนื่องจากฐานข้อมูลมีเพียงฐานข้อมูลเดียว ในกรณีที่มีข้อมูลชุดเดียวกันแสดงผลอยู่หลายแห่งในฐานข้อมูล ข้อมูลเหล่านั้นจะต้องมีค่าที่ตรงกัน ซึ่ง ณ ตรงนั้นจะมีการสร้างความสัมพัธ์ระหว่างข้อมูลอยู่ตลอด ดังนั้น ถ้ามีการแก้ไขมูลในทุกๆ จุด ที่มีข้อมูลแสดงอยู่ จะถูกแก้ไขทำให้ตรงกันหมด ด้วยระบบการจัดการของฐานข้อมูล
- การป้องกันและรักษาความปลอดภัยให้กับข้อมูล โดยที่ระบบฐานข้อมูลมีระบบการจัดการที่มีการควบคุมการเข้าถึงเฉพาะ จากบุคคลที่เกี่ยวข้องเท่านั้น โดยอาจจะอิงจากบัญชีผู้ใช้ที่มี access ระดับที่สูงมากๆ หรือ access เฉพาะ เพื่อที่จะเข้าไปสังเกตุหรือปรับเปลี่ยนข้อมูลต่างๆ ในฐานข้อมูลได้
Credit: https://img.freepik.com/free-vector/network-database-concept_1284-4084.jpg?w=2000
ประเภทของฐานข้อมูล
ฐานข้อมูลมีประเภทที่ถูกแบ่งออกมาได้หลากหลาย ซึ่งการจะเลือกใช้ฐานข้อมูลที่ดีที่สุดกับองค์กรแต่ละที่นั้น ขึ้นอยู่กับวิธีในการเลือกจัดเก็บข้อมูลของที่นั้นๆ ด้วย
Relational Database
ฐานข้อมูลเชิงสัมพันธ์ (Relational Database) เป็นรูปแบบฐานข้อมูลที่มีการใช้มาอย่างยาวนาน ซึ่งรูปแบบของข้อมูลที่ถูกเก็บในฐานข้อมูลประเภทนี้ จะถูกจัดระเบียบเป็นชุดของตารางที่มีคอลัมน์ (columns) และแถว (rows) รูปแบบของฐานข้อมูลประเภทนี้เป็นวิธีที่มีประสิทธิภาพและยืดหยุ่นที่สุดในการเข้าถึงข้อมูลที่มีโครงสร้าง (structured data/information)
Object-Oriented Database
ข้อมูลที่ถูกเก็บในฐานข้อมูลประเภทนี้ จะถูกเก็บอยู่ในรูปแบบของวัตถุ (Object) เป็นเช่นเดียวกันกับข้อมูลที่ถูกใช้งานในการเขียนโปรแกรมแบบเชิงวัตถุ (Object-Oriented Programming)
Distributed Database
ฐานข้อมูลรูปแบบนี้จะประกอบด้วยสองไฟล์ ที่ถูกเก็บไว้ต่างสถานที่ ซึ่งฐานข้อมูลอาจถูกเก็บไว้ในคอมพิวเตอร์หลายเครื่อง โดยอาจจะถูกติดตั้งวางไว้ในสถานที่เดียวกัน หรืออาจจะติดตั้งตามสถานที่ต่างๆ บนเครือข่ายเดียวกัน เช่น การวางฐานข้อมูลของเจ้าใหญ่ที่ถูกวางไว้ทั่วโลก เป็นต้น
Data warehouses
คลังข้อมูลส่วนกลาง จะเป็นฐานข้อมูลประเภทหนึ่งที่ออกแบบมาโดยเฉพาะสำหรับการสืบค้นข้อมูลและเพื่อการวิเคราะห์ข้อมูลที่รวดเร็วเป็นพิเศษ
NoSQL Database
NoSQL หรือฐานข้อมูลที่ไม่สัมพันธ์กัน จะสามารถจัดเก็บข้อมูลที่เป็นลักษณะไม่มีโครงสร้างและกึ่งโครงสร้างได้ ซึ่งแตกต่างกับ Relational Database กันอย่างสิ้นเชิง NoSQL เริ่มได้รับความนิยมมากขึ้น เนื่องจาก web application กลายเป็นเรื่องธรรมดาที่จะถูกพัฒนาขึ้นและซับซ้อมากขึ้น
Graph Database
ฐานข้อมูลชุดนี้จะจัดเก็บของมูลในรูปแบบของ entity และความสัมพันธ์กันระหว่าง entity ซึ่งอาจจะมีลักษณธคล้ายคลึงกันกับการ reference ถึงกันแบบ Relational Database
ฐานข้อมูลบนคลาวด์คือชุดข้อมูล ที่มีทั้งแบบมีโครงสร้างและแบบไม่มีโครงสร้าง ซึ่งอยู่บน cloud computing platform ที่มีทั้ง private, public และ hybrid รูปแบบของฐานข้อมูลประเภทนี้มีสองประเภท คือแบบดั้งเดิม (Traditional) และฐานข้อมูลในรูปแบบบริการ ( Database as a Service) ด้วยระบบของ DBaaS งานด้านการดูแลระบบและการบำรุงรักษาจะดำเนินดารโดยผู้ให้บริการ เช่น GCP (Google Cloud Platform), Azure (Microsoft), AWS (Amazon Web Services) เป็นต้น
Document/JSON database
ฐานข้อมูลรูปแบบนี้ จะมีการเก็บข้อมูลเป็นแบบของเอกสารหรือ JSON format ซึ่งเป็นรูปแบบฐานข้อมูลที่ทันสมัยในการจัดเก็บข้อมูล ที่ JSON จะแทนที่ตารางแบบ columns and rows
ฐานข้อมูลข้างต้นเป็นจำนวนหนึ่งที่มีการใช้กันอย่างแพร่หลายในปัจจุบัน ซึ่งอย่างที่กล่าวไปว่าการเลือกใช้นั้นขึ้นอยู่กับจุดประสงค์ของบริษัทหรือการใช้งานที่เฉพาะเจาะจงลงไป นอกจากนี้ก็ยังคงมีฐานข้อมูลประเภทอื่นอีก แต่อาจจะไม่ใช่ประเด็นหลักในการพูดถึงกันมากมาย เพราะเป็นรูปแบบของฐานข้อมูลที่มีการใช้งานที่เฉพาะเจาะจงและลึกในเชิงเทคนิคมากกว่าที่ใช้กันส่วนมากตามข้างต้น
การประยุกต์ใช้ของฐานข้อมูล
จากที่ได้แนะนำประเภทฐานข้อมูลต่างๆ ข้างต้น ก็ทำให้เราได้รู้ว่า มีฐานข้อมูลที่มีรูปแบบการจัดเก็บข้อมูลที่แตกต่างกันพอสมควร แต่ในการประยุกต์ใช้นั้น โดยส่วนใหญ่จะถูกนำมาใช้กับเหล่านักพัฒนาหรือ Developer/Programmer ที่เรารู้จักกัน โดยที่เหล่านักพัฒนาจะทำ resource หรือ configuration ของ server ที่ได้ทำการตั้งค่าเพื่อจัดเก็บฐานข้อมูลเหล่านั้น และทำการเชื่อมต่อฐานข้อมูลนั้นๆ เข้าสู่ผลิตภัณฑ์ต่างๆ เช่น เว็บไซต์ ซอฟต์แวร์ และ แอพมือถือ เป็นต้น