บทความนี้เพิ่งย้ายมาจากบล๊อกเก่า อาจจะมีเนื้อหายังไม่สมบูรณ์ กำลังรีไรท์นะ
"Database" หรือ "ฐานข้อมูล" เป็นสิ่งที่มีคนนิยามความหมายให้มันมากมาย เช่น
integrated collection of logically structure
(ที่ที่นำข้อมูลมารวมกันเก็บไว้ โดยมีการจัดเรียงอย่างเป็นโครงสร้างที่สัมพันธ์กัน)
แต่โดยหลักการแล้ว มันคือ ที่เก็บ Data นั่นเอง ... แล้ว Data พวกนี้มันมีอะไรบ้างล่ะ
คนที่เขียนโปรแกรมเป็นจะรู้ว่า ในโปรแกรมเราจะมีสิ่งที่เรียกว่า Variable หรือ ตัวแปร อยู่ เช่น int x = 1;
แต่ ตัวแปรพวกนี้จะหายไปทุกครั้งที่เรารันโปรแกรมจบ ประเด็นก็คือ เมื่อเราเปิดโปรแกรมขึ้นมาใหม่อีกรอบ ตัวแปรก็จะกลับไปเป็นค่าเริ่มต้นอีกรอบ
แล้วถ้าโปรแกรมเกิดไม่สามารถจำได้ว่าเมื่อกี้เนี้ยผู้ใช่ทำอะไรลงไป
ไม่ว่าจะอัพเดตStatus โพสต์รูป หรือ เช็กอินฯ ทันทีที่เปิดโปรแกรมมาใหม่ (การรีเฟรชหน้าใหม่เวลาเล่นอินเตอร์เน็ตก็นับเป็นการรันโปรแกรมใหม่อีกครั้ง) ข้อมูลทั้งหมดจะหายไปในทันที แน่นอนว่ามันส่งไปไม่ถึงเพื่อนๆ อย่างที่หวังเอาไว้ (ฮา)
งั้นจะทำยังไงให้ข้อมูลหรือเจ้า Data จากการรันโปรแกรมครั้งที่แล้วยังคาอยู่ได้ คำตอบแน่นอนว่าไม่ใช่เก็บไว้ในโปรแกรมเพราะตัวแปรทั้งหมดจะถูกล้างหลังรัน โปรแกรมเสร็จ
ก็เอาไปเก็บไว้ที่นึงที่ไมถูกล้างทิ้งไงล่ะ
ถูกต้อง!
ก็ในเมื่อเก็บไว้ในโปรแกรมไม่ได้ ก็ต้องเอาไปเก็บไว้ที่อื่น
งั้นคำถามต่อไป ... ที่ไหนดีล่ะ?
File System
เป็นความคิดสุดบรรเจิดของโปรแกรมเมอร์สมัยก่อน
โปรแกรม รันเสร็จแล้วจะต้องคืน resource ให้ระบบ (ใครไม่เข้าใจไว้จะมาอธิบายต่อในหัวข้อ Operating System) --> ก็เก็บไว้ในสิ่งที่ไม่มีวันหาย (นอกจากเราจะไปกดลบมันเอง) นั่นคือ File (ไฟล์)
วิธี ทำ: ก่อนที่โปรแกรมจะปิดตัวเองไปเพราะมันรันเสร็จเรียบร้อยแล้ว ก็เพิ่มฟังก์ชั่นให้มัน จัดการเขียนค่าตัวแปรทั้งหมดในโปรแกรมลงไปเก็บไว้ในไฟล์ก่อน
เช่น
int x = 1;
int y = 20;
x++;
y--;
int z = x + y;
wrtie( "variable-x":x, "variable-y":y );
ผลที่ได้อาจจะเป็นแบบนี้
ไฟล์ xyz.txt ที่เมื่อเปิดดูข้างในแล้วจะพบ
x=2
y=19
อืม ก็ไม่รู้ว่าโปรแกรมนี้มันทำงานยังไงล่ะนะแต่มันทันทึกไว้ว่าตอนที่จบโปรแกรม นั้น ค่า x และ y มีค่าเป็นเท่าไหร่ งั้นครั้งหน้าถ้าเปิดโปรแกรมขึ้นมา อยากได้ค่า x กับ y จากการรันครั้งที่แล้วก็มาอ่านไฟล์นี้เอาละกัน
เยี่ยม!! ดูเหมือนเราแก้ปัญหาตัวแปรหายไปทุกครั้งได้แล้ว...สินะ?
ใช่ มันแก้ได้ แต่วิธีการใช้มันยุ่งยากมาก
ไหนจะต้องเขียนฟังก์ชั่นเขียนไฟล์และอ่านไฟล์
อ่านเข้ามาแล้วจะแปลความถูกมั้ย
ถ้าตัวแปรซับซ้อนแบบพวก Object ล่ะ จะเขียนใส่ไฟล์ว่าอะไร
แล้วถ้าจะทำงานข้ามโปรแกรม แบบให้โปรแกรมอื่นมาอ่านค่าจากโปรแกรมเราด้วย ทำได้เหรอ
และ ที่สำคัญคือ ถ้ามีข้อมูลซัก "ร้อยล้าน" ตัว จะเก็บไหวแน่นะ แล้วถ้ามันเยอะขนาดนั้น กดค้นหาค่าอะไรบางอย่าง เดินไปต้มมาม่ากลับมาจะได้เสร็จทันมั้ย
ด้วยปัญหามากมาย พวกนี้ โปรแกรมเมอร์รุ่นเก๋าจึงคิดและพัฒนา Tools ที่จะเอาไว้เก็บข้อมูลได้อย่างมีประสิทธิภาพ ทั้งในด้านของ ความแน่นอนของข้อมูล ความเร็ว ความปลอดภัย บีบอัดข้อมูลทำให้ประหยัดที่ บลาๆๆ
ผลสุดท้ายจึงออกมาเป็น...
Database System
อย่างที่บอกไปตอนต้น Database เป็นพื้นที่เก็บข้อมูลที่มีโครงสร้างดีเยี่ยมที่ถูกออกแบบมาอย่างยาวนาน (ใช้ความรู้ด้วย Data Structure เพิ่มอัพพลังมันอย่างเต็มที่)
ดัง นั้นมันสามารถจะเก็บข้อมูลที่ซับซ้อน (แต่บางครั้งก็ต้องเลือกประเภท Database ให้เหมาะกันงาน) แต่ก็ยังให้ performance และ ความเร็ว ที่ดีเยี่ยมเมื่อเทียบกับระบบแบบเก่าอย่าง File System
ข้อ ดีอีกอย่างคือความสามารถในการแชร์ข้อมูลให้โปรแกรมที่ต่างกัน เขียนกันคนละภาษา มาใช้งาน Data ตัวเดียวกันได้โดยไม่ต้องมากังวลว่าโปรแกรมโน้นมันเขียนไฟล์มาด้วย structure แบบไหน เราจะอ่านมันรู้เรื่องมั้ยเนี่ย