แนะนำการต่อ Database
สามารถดู video ของหัวข้อนี้ก่อนได้ ดู video
Database คืออะไร ?
Database คืือ collection ของ data ที่ถูกเก็บเอาไว้ โดยตัว data นั้นสามารถถูกเก็บ, ถูกจัดการ และสามารถถูกดึงนำมาใช้ได้ โดยจุดประสงค์ของการใช้ Database (เทียบกับการเก็บ data แบบทั่วไป)
- Structured Data = data สามารถถูกกำหนดผ่าน table, collection ให้เป็นระเบียบและมีโครงสร้างได้
- Database Management Systems (DBMS) = มี software สำหรับจัดการ Database ที่ช่วย create, read, update, and delete data ที่อยู่ใน Database
- Data Integrity and Transactions = สามารถจัดการให้ข้อมูลสมบูรณ์และถูกต้องอยู่ตลอดได้ รวมถึงสามารถจัดการ transaction, triggers ที่สามารถจัดการ operation พร้อมกันทีละหลายๆ operation ได้
- Scalability = สามารถรองรับ transaction จำนวนมากและ scale (ขยายเพิ่ม) เพื่อรองรับ transaction จำนวนมากได้
- Security = Database มักจะมาพร้อมกับ feature ป้องกัน sensitive data ซึ่งจะช่วยจัดการเรื่อง user access controls, encryption รวมถึง security network พื้นฐานเพื่อไม่ให้คนทั่วๆไปสามารถเข้าถึง Database ได้โดยง่าย
ประเภทของ Database
Database นั้นเองก็มีหลายประเภท ตามแต่รูปแบบของข้อมูลที่จะให้จัดเก็บ แต่ในทีนี้ เพื่อให้ง่าย เราจะแบ่งออกเป็น 2 ประเภทใหญ่ๆก่อนคือ
- Relational Databases
- เก็บ data แบบ pre defined structured data (data ที่มีการกำหนดรูปแบบไว้แล้ว) ในรูปแบบของ table โดยจัดเก็บเป็นรูปแบบ row, column
- data สามารถสร้าง relation ระหว่าง table กันผ่าน foreign keys ได้
- มักใช้ภาษา SQL (Structured Query Language) เป็นตัวสำหรับจัดการ query และจัดการ data
- เช่น PostgreSQL, MySQL, Microsoft SQL
- NoSQL Databases
- สามารถเก็บ data แบบ unstructured (ไม่ต้องมีรูปแบบตายตัวได้) โดยไม่มีการ strict format
- ถูก design ขึ้นมาสำหรับการเก็บข้อมูลขนาดใหญ่และการเก็บข้อมูลแบบกระจ่าย
- เช่น MongoDB, Cassandra, CouchDB
โดยเพื่อเป็นการปูพื้นฐานการใช้ Database เราจะเริ่ มต้นจาก Relational Databases ก่อน เพื่อให้เข้าใจความเป็น Structure ของการเก็บข้อมูลใน Database
เราจะทำอะไรกันบ้างใน Session นี้
- รู้จักพื้นฐานของ PostgreSQL
- พื้นฐาน SQL Query ที่ใช้งานร่วมกับ PostgreSQL
- การดึงข้อมูลผ่าน Go ด้วย
database/sql
ผ่าน SQL Query
- CRUD
- JOIN
- Transaction
- ใช้งานร่วมกับ Fiber
- สร้าง API พื้นฐานสำหรับ CRUD