นายสมชายลองไปหา database MUMPS เล่นดูครับ ไม่support SQL ครับ ฮาฮา
เพิ่งรู้จักระบบฐานข้อมูลที่ว่าเนี่ยแหละครับ เลยค้นได้ข้อมูลตามลิ้งก์นี้ที่พอสรุปได้เร็วที่สุด...
http://healthcaresecurity.wordpress.com/2010/10/12/why-are-hierarchical-databases-like-mumps-still-popular-in-healthcare/ ...
ประเด็นคือ MUMPS เป็นระบบฐานข้อมูลแบบ Hierarchical databases ในขณะที่ SQL เป็นแบบ Relational database management system : RDBMS ... เลยถึงบางอ้อ...
สรุปความได้ว่าที่มันนิยมในโรงบาลฯ กับในสถาบันการเงินมาตั้งแต่สมัย 20 กว่าปีที่แล้วก็เพราะ RDBMS เจอปัญหา 2 อย่างที่คนสมัยโน้นแก้ไม่ตกก็คือ 1) เรื่องความเข้าใจการออกแบบตรรกะข้างใน RDBMS ขยายความได้ว่าเป็นเรื่องของการเขียนสคีม่า(Schema - Logical design) หรืออธิบายให้นักคอมพิวเตอร์เข้าใจง่ายๆ ก็คือการนอมอลไลเซชั่น(Normalization) ได้แก่การออกแบบตารางและความสัมพันธ์ระหว่างตารางข้อมูลข้างในระบบฐานข้อมูล...
เรื่องข้อที่ 1 นี่เป็นปัญหาจริงๆ แม้แต่ปัจจุบันนี้ก็มีปัญหาว่าออกแบบกันไม่ได้ง่ายๆ แต่ที่จริงแล้วเรื่องมันง่ายมากหากทิ้งเรื่อง NF1-NF3 ให้หมด แล้วท่องเอาไว้ในใจว่า"อะไรของอะไรให้มันอยู่ด้วยกัน"... เพียงแค่นี้ก็จะได้ Entity ไล่เรียงเป็นรายการยาว และกลายเป็นคอนเซ็ปต์ของ OOP ไปเสียเลยในคราวเดียวกันนั่นแหละ แล้วจากนั้นก็ลาก Key Field เอาจากด้านหัวไปแปะไว้ในตารางด้านหาง(จาก 1 ไปแปะที่ Many) ซึ่งไม่น่าเชื่อว่าแค่ประโยค 2 ประโยคที่ว่านี่สามารถ"ลากยาว"เป็นหนึ่งวิชา 3 หน่วยกิตในมหาลัยมาตรฐานฯ... ไม่ฮา...
เรื่องการออกแบบฐานข้อมูล RDBMS มันก็เหมือนเล่นหุ้นแหละครับ คือคนส่วนใหญ่ของทั้งโลกไม่เคยนึกว่ามันออกแบบได้ง่ายมาก ทำนองเดียวกับคนเล่นหุ้นส่วนใหญ่ทั้งโลกก็นึกไปว่า"เป็นการพ้นวิสัยมนุษย์"ที่จะรู้ล่วงหน้าว่าหุ้นจะขึ้นหรือจะลง... แล้วก็เลยเกิดนักเล่นหุ้นสาย VI ซึ่งก็ไม่ได้หลงทางหรอกครับ แต่นายสมชายว่ามันอ้อมนะครับ... อันนี้ก็ไม่ฮา...
เรื่องที่ 2 คือข้อจำกัดของฮาร์ดแวร์สมัยก่อน ที่มีเม็มโมรี่จำกัด และมี CPU ทำงานช้า, ตัวอย่างเช่นอยากรู้ว่าผู้ป่วยในระบบฐานข้อมูลจำนวน 1 แสนคนมีใครเป็นโรคหวัดนกบ้าง ซึ่งเราไปค้นข้อมูลอย่างนี้ใน RDBMS นั่นก็แปลว่าเครื่องคอมฯ จะต้องโหลดตาราง"ผู้ป่วย"ทั้งแสนคนมาในเม็ม(หรือตารางข้อมูลชั่วคราว) แล้วโหลดตาราง"โรค"ทั้งหมดเข้ามาด้วย จากนั้นก็ไล่เช็ค Key field ว่าของใครมันตรงกัน แล้วก็ดีดเรคคอร์ด Output ไปใส่ในอีกตารางชั่วคราวไว้แสดงผลลัพธ์... แต่ตรงกันข้ามหากจัดเก็บข้อมูลไว้ในรูปแบบ Hierarchical databases เครื่องคอมมันจะกวาดหา"แฟลก"โรคหวัดนกจากตาราง"ผู้ป่วย"แค่ตารางเดียว แล้วได้ผลลัพธ์ตูมเดียวเลย(ฐานข้อมูล Hierarchical databases จะยอมเก็บข้อมูลซ้ำกันได้)...
สรุปคือ Hierarchical databases มันทำงานเร็วกว่าในสมัยก่อนครับ... แต่เดี๋ยวนี้ฮาร์ดแวร์ไปไกลแล้ว และที่เขายังคงใช้งาน Hierarchical databases อยู่ ก็เพราะองค์ความรู้มันยังมีอยู่ในสายอาชีพเช่นว่านั้น และมันยังไม่ตัน เขาก็ยังใช้งานต่อไป...
แต่จะว่าไปแล้วคุณป๊อกแมนฯ นี่มหัศจรรย์กว่าครับ เพราะ"สร้างระบบฐานข้อมูล"ด้วยมือตนเองเสียเลย... เพราะจากเท่าที่ให้ข้อมูลมายังใช้ DBF อยู่, นั่นแปลว่าหากจะหาผลลัพธ์ที่เกิดความสัมพันธ์ระหว่างหลายไฟล์ DBF ก็ต้องเปิดอะเรย์ แล้วโหลดทั้งตารางมาเขียนลูปให้เลื่อนทีละเร็คคอร์ดเพื่อวนหาคีย์ฟิลด์... ซึ่งตรงนี้บอกตรงๆ ว่านายสมชายตายแหงๆ หากโดนให้บังคับเขียนโปรแกรมแบบนี้... แฮ่ๆ...