- Published on
Database คืออะไร
- Authors
- Name
- Somprasong Damyos
- @somprasongd
Database คืออะไร
พอดีมีไปสอนเรื่องการสร้าง REST API ติดต่อกับระบบฐานข้อมูล (Database) แต่มีน้องๆ หลายคนที่ยังไม่เคยใช้งาน Database มาก่อน เลยถือโอกาศเขียนบทความนี้เพื่ออธิบายว่า Database คืออะไร
เริ่มจาก Data คืออะไร
Data ก็คือ ข้อมูล เช่น จากรูปด้านล่าง ข้อมูลของคนมี ชื่อ, เพศ และอีเมล
![Data](/static/images/db/data.png)
ซึ่ง Data นั้นจะเป็นข้อมูลอะไรก็ได้ ไม่ว่าจะเป็นข้อความ รูปภาพ เพลง หรือวิดีโอ
แล้ว Database คืออะไร
Database ก็คือ ที่จัดเก็บ Data ทั้งหลายไม่ว่าจะเป็นข้อความ รูปภาพ เพลง หรือวิดีโอ โดยจะเก็บไว้ในระบบคอมพิวเตอร์
![Database](/static/images/db/database.png)
โดยการใช้งาน Database ไม่ว่าจะเป็นการทำงานโดยตรงกับ Database หรือใช้งานผ่าน Applications อื่นๆ นั้น เราจะต้องใช้งานผ่านระบบ DBMS (Database Management System)
![DBMS](/static/images/db/dbms.png)
ตัวอย่างของ DBMS
- PostgreSQL
- MySQL
- MongoDB
- Neo4j
- Cassandra
ซึ่งในปัจจุบันนั้นจะมี Database อยู่ 2 ประเภท
- Relational Database คือ ฐานข้อมูลที่มีโครงสร้างชัดเจน ในรูปแบบของตารางประกอบด้วย Row กับ Column เช่น PostgreSQL, MySQL, ORACLE Database
![Database](/static/images/db/table.png)
และแต่ละตารางจะมี ID ที่ไม่ซ้ำกันเรียกว่า Primary Key ซึ่งถ้า ID นี้ไปอยู่ในตารางอื่นจะเรียกว่า Foreign Key ทำให้หาความสัมพันธ์ระหว่างตารางได้
![Database](/static/images/db/relational.png)
รูปจาก https://www.codecademy.com/resources/docs/general/relational-database
Non-Relational Database คือ ฐานข้อมูลที่ตรงกันข้ามกับ Relational Database แบ่งออกเป็น 4 ประเภท
Document-oriented Database จะจัดเก็บข้อมูลในรูปแบบ Document โดยจะสร้าง key ขึ้นมาว่าจะเก็บข้อมูลอะไร โดยข้อมูลเดี่ยวๆ เช่น ข้อความ ตัวเลข หรือจะมีโครงสร้างซับซ้อนก็ได้
Key-Value Database จะจัดเก็บข้อมูลโดยมี key ที่ไม่ซ้ำกัน ที่อ้างอิงถึงค่า value แค่ 1 ตัว
Wide-Column Store ฐานข้อมูลจะจัดเก็บเป็นตาราง มี rows และ columns แต่จะตารางกับ relational database ที่ในภายในตารางเดียวกันนั้นแต่ละ row สามารถมีจำนวน columns ที่ไม่เท่าได้
Graph Database เอาไว้หาความสัมพันธ์ของข้อมูล ประกอบด้วย
- Nodes → วัตถุ สิ่งของ หรือ objects ต่างๆในโลกความจริง เช่น person, product
- Relationships → ความสัมพันธ์ระหว่าง objects ที่เราสร้างขึ้นมา
ทั้งหมดนี้ก็คือระบบฐานข้อมูลที่เราใช้งานกันอยู่ในปัจจุบันครับ