Showing posts with label tuning. Show all posts
Showing posts with label tuning. Show all posts

Thursday, May 6, 2010

เร่งเครื่องให้เต็มที่ ด้วยวิธีพอเพียง

ปัญหาที่ว่าเครื่องคอมพิวเตอร์ทำงานช้านั้นผมเชื่อว่าเป็นสิ่งที่หลายท่านต้องเคยเจออย่างแน่นอน หลังจากที่เพิ่ง Format เครื่องไปเมื่อเดือนที่ผ่านมาแค่เดือนเดียวเท่านั้นเอง ปัญหานี้ส่วนใหญ่แล้วเกิดจากผู้ใช้งานระบบปฏิบัติการวินโดวส์ซะด้วย นั่นเพราะว่า Windows ไม่ดีหรือว่าเราไม่ไม่เข้าใจมันกันแน่นะ

ความอืดที่แลกมาเพื่อความสะดวก


อันที่จริงแล้วระบบปฏิบัติการทุกตัวก็คงไม่ได้แตกต่างกันมากในเรื่องของประสิทธิภาพหรอกครับ เพราะมันก็เป็นซอฟต์แวร์เหมือนกัน มันขึ้นอยู่กับว่าซอฟต์แวร์นั้นถูกพัฒนาขึ้นมาอย่างไร และให้คอมพิวเตอร์ประมวลผลอะไรบ้างเท่านั้นเอง และระบบปฏิบัติการ Windows ก็เป็นตัวอย่างที่ดีในเรื่องของประสิทธิภาพเมื่อเทียบกับระบบปฏิบัติการตัวอื่น
ถ้าลองไปถามใครต่อใครว่าระบบปฏิบัติการตัวไหนที่เร็วที่สุด คงไม่มีใครพูดถึง Windows จริงไหมครับ แล้วถ้าพูดถึงระบบปฏิบัติการที่ใช้งานง่ายและสะดวกที่สุดล่ะ แน่นอนส่วนใหญ่คงหนีไม่พ้น Windows นั่นเอง ดังนั้นจากจุดนี้เอง Windows ได้รับการออกแบบมาให้ใช้งานได้สะดวกจึงทำให้มันมีการทำงานที่ค่อนข้างซับซ้อนและมีการทำงานเพื่อเตรียมความพร้อมให้รองรับการใช้งานด้านต่างๆ กับผู้ใช้ไว้เสมอ ซึ่งบางครั้งก็ต้องยอมรับล่ะครับ ว่าเราก็ไม่ได้ใช้
คุณเคยสังเกตกันบ้างหรือไม่ครับว่าระบบปฏิบัติการวินโดวส์ที่คุณใช้อยู่นั้นสามารถทำงานได้ดีมาก จะทำโน่น ทำนี่ก็สามารถทำได้ทุกอย่าง ง่ายไปหมด จะติดตั้งโปรแกรม หรือจะใช้งานอุปกรณ์อะไรก็สามารถรองรับได้หมด แล้วคุณคิดว่าความสามารถทั้งหมดจะต้องการโค้ดหรือชุดคำสั่งที่มีความสลับซับซ้อนมากเพียงใด และโค้ดคำสั่งเหล่านี้จะต้องใช้การประมวลผลจากซีพียูแค่ไหน

Service ใน Windows


จริงอยู่ว่าคุณอาจจะไม่ได้ใช้งานฟังก์ชันทั้งหมดที่มันใส่มาในระบบ แต่ว่าของอย่างนี้ก็เลือกไม่ได้หรอกครับ คนที่พัฒนาซอฟต์แวร์ก็ต้องออกแบบให้มีความสมดุลและเอื้ออำนวยให้กับผู้ใช้ทุกกลุ่ม นั่นจึงเป็นสาเหตุที่ภายในเครื่องของเรามีฟังก์ชันการทำงานที่ถูกเปิดทิ้งไว้มากมาย โดยที่เราแทบจะไม่เคยได้ใช้ หรือไม่เคยรู้เลยด้วยซ้ำว่ามีมันอยู่ในระบบด้วย


Service ถือว่าเป็นรูปแบบการทำงานของโปรแกรมภายใน Windows อย่างหนึ่ง โปรแกรมที่อยู่ในกลุ่ม Service นี้จะคอยทำหน้าที่ช่วยเหลือผู้ใช้ในด้านที่มันรับผิดชอบ โดยจะคอยทำงานอยู่เบื้องหลัง จะว่าไปก็เหมือนกับโปรแกรมที่ทำงานในลักษณะ Background นั่นเอง แล้วคุณลองคิดซิครับว่าถ้ามี Service ทำงานอยู่ประมาณ 30 ตัว เครื่องจะช้าลงขนาดไหน ทั้งที่คุณอาจจะได้ใช้งานมันไม่ถึง 10 ตัวเลยด้วยซ้ำไป


เปิดใช้ Service ให้พอเพียง อย่างเพียงพอ


สมัยนี้เป็นยุคพอเพียงครับ ดังนั้นเราจึงควรจะต้องปิด Service ที่ไม่จำเป็นทิ้ง เพื่อให้คอมพิวเตอร์เอาเวลาที่ต้องไปประมวลผล Service เหล่านี้มาประมวลผลงานที่เราทำจะดีกว่า มาถึงนี้เราจะเข้าไปปิด Service ได้อย่างไร แล้วจะรู้ได้ยังไงว่าตัวไหนใช้บ้าง ไม่ใช้บ้าง เราจะไปดูพร้อมๆ กันเลยครับ


วิธีในการเข้าไปจัดการกับ Service

สำหรับ Service ในวินโดวส์นั้น คุณสามารถที่จะเข้าไปจัดการมันได้โดยมีวิธีการคือไปที่ปุ่ม Start แล้วเลือกคำสั่ง Run จากนั้นพิมพ์ service.msc ลงไปแล้วกดปุ่ม OK หน้าต่าง Service ก็จะรันขึ้นมาครับ โดยในนั้นจะมี Service มากมายในคุณได้ปรับการทำงาน (Startup Type) โดยจะแบ่งรูปแบบการตั้งค่าดังนี้

  • Automatic ให้เริ่มทำงานโดยอัตโนมัติทุกครั้งที่คุณเปิดเครื่องและบูตเข้าสู่ Windows
  • Manual ไม่ให้เริ่มทำงานเอง แต่จะสามารถสั่งให้หยุดหรือเริ่มการทำงานได้โดยผู้ใช้เอง หรือโปรแกรมบางตัว
  • Disable เป็นการปิดการทำงานของ Service ไม่ให้เริ่มการทำงาน

โหมด Startup ของ Service มีอยู่ด้วยกันหลัก 3 แบบแล้วแต่รูปแบบการใช้งาน


Service ไหนปิดได้บ้าง


เนื่องจาก Service ของระบบวินโดวส์มีอยู่มากมาย บางตัวเป็น Service ของโปรแกรมต่างๆ ที่เราติดตั้งไว้ และบางตัวก็เป็น Service ของระบบเอง ดังนั้นจึงต้องทราบก่อนว่า Service ไหนเป็นของอะไรและจะต้องใช้งานหรือไม่ จึงค่อยตัดสินใจปิดนะครับ เราไปดูกันเลยดีกว่ามี Service อะไรบ้างที่น่าจะปิดกันได้

  • AdobeLM Service: เป็น Service ของ Adobe ที่ไม่ได้ใช้ประโยชน์อะไรครับ ถ้าใครมีตัวนี้อยู่ก็ปิดได้เลย
  • Alerter: ตัวนี้ถ้าคุณไม่ได้เชื่อมต่อกับระบบเครือข่ายก็สามารถปิดได้เลย
  • Application Management: สำหรับตัวนี้ไม่แนะนำให้ปิดครับ แต่ให้เปลี่ยนเป็น Manual แทน
  • Automatic Updates: Service สำหรับ Windows Update ครับ ไม่ควรปิด นอกเสียจากว่าคุณจะใช้วิธีการอัพเดตแบบ Offline อย่างโปรแกรม AutoPatcher แทนครับ
  • ClipBook: เป็นตัวสำหรับแชร์บางอย่างบนเครือข่าย ส่วนใหญ่ไม่ได้ใช้อยู่แล้ว ปิดซะ
  • Computer Browser: ปิดอีกตัวถ้าไม่ได้ต่อกับเครือข่ายเหมือนกัน เพราะมันไว้สำหรับเข้าไปดึงไฟล์จากเครื่องอื่น
  • Cryptographic Services: ตัวนี้เป็นการเข้ารหัส ถ้าไม่แน่ใจว่าจำเป็นไหมก็ตั้งไว้เป็น Manual ครับ
  • Distributed Transaction Service: ตั้งค่าไว้เป็น Manual
  • DNS Client: ตัวนี้เปลี่ยนเป็น Manual ไปก็ได้ครับถ้าไม่ได้เชื่อมต่อกับเครือข่าย
  • Error Reporting Service: เวลามีโปรแกรมแฮงก์แล้วให้กดปุ่ม Don’t Sent ก็เพราะเจ้า Service ตัวนี้แหละครับ ดังนั้นปิดมันไปเลย
  • Fast User Switching Compatibility: สำหรับเครื่องที่มีแรมน้อยปิดไปเลยดีกว่าครับ เพราะ Fast
  • User Switching มีไว้สำหรับการสลับการทำงานของ User โดยไม่ต้อง Logout ก่อน ถ้าคุณมีหรือใช้แค่ User เดียวอยู่แล้วก็ปิดไปเลยครับ
  • FTP Publishing: ถ้าไม่ได้ใช้ FTP ก็ปิดได้เลยครับ
  • Help and Support: ถ้าคุณไม่เคยใช้ Help ของ Windows เลย (ซึ่งส่วนใหญ่ก็ไม่ได้ใช้) ปิดไปเลยดีกว่าครับ
  • HTTP SSL: ตั้งไว้เป็น Manual ครับ เผื่อต้องใช้เวลาเข้าเว็บที่มี Secure Login อย่างเว็บ E-Banking
  • Human Interface Device Access: ถ้าคุณไม่ได้ใช้ Hot-key หรือ remote system ก็ปิดไปก็ได้ครับ
  • IMAPI CD-Burning COM Service: Service สำหรับคนที่ใช้ไดรฟ์เขียนแผ่น CD/DVD ไม่ควรปิด แต่ตั้งไว้เป็น Manual จะดีกว่า เพื่อประหยัดเมมโมรี
  • Indexing Service: ตัวนี้เป็น Service ที่กินทรัพยากรสูงมาก สำหรับทำ Index ในการค้นหาข้อมูลในเครื่อง ดังนั้นถ้าคุณไม่ได้ใช้ฟังก์ชันค้นหาของวินโดวส์เลย ก็ปิดมันไปได้เลย เครื่องจะเร็วขึ้นอีกเยอะ
  • InstallDriver Table Manager: ตัวนี้ปิดไปได้เลยเหมือนกันครับ ไม่ส่งผลต่อการทำงาน
  • IPSEC Services: ตั้งไว้เป็น Manual ดีกว่า
  • Windows Messenger: ถ้าคุณไม่ได้ใช้ Windows Messenger (ไม่ใช่ MSN Messenger หรือ Windows Live Messenger นะครับ) ก็รีบปิดไปเลยครับ เพราะมันกินแรมเยอะมาก
  • MS Software Shadow Copy Provider: อันนี้ตั้งค่าให้เป็น Manual ครับ
  • Net Logon: อันนี้เปิดได้เลยครับถ้าไม่ได้เชื่อมต่อระบบเครือข่าย
  • NetMeeting Remote Desktop Sharing: สำหรับผู้ใช้ทั่วไปที่ไม่ได้ใช้ Remote Desktop อยู่แล้วก็ปิด Service นี้ไปได้เลยครับ
  • Network Provisioning Service: ถ้าไม่ได้เชื่อมต่อกับเครือข่ายก็ปิดอีกเหมือนกัน
  • NT LM Security Support Provider: ปิดไปได้อีก 1 ตัวเลยครับ
  • NVIDIA Display Driver Service: สำหรับคนใช้การ์ดจอ nVidia แล้วไม่ได้เปิดใช้ nVidia Desktop ก็ปิดดีกว่าครับ
  • Office Source Engine: ตัวนี้ปิดไปได้อีกเหมือนกัน ใช้ในกรณีที่ MS Office ของคุณมีปัญหาแล้วต้องการซ่อมแซมไฟล์ระบบ ซึ่งคุณสามารถใช้แผ่น CD ติดตั้งที่มีอยู่มาแทนได้อยู่แล้ว
    Portable Media Serial Number Service: ตัวนี้ตั้งไว้เป็น Manual ครับเพราะเราน่าจะใช้สื่อแบบพกพากันบ่อยอยู่แล้ว
  • Print Spooler: ถ้าคุณไม่ได้มีพรินเตอร์ก็ปิดไปได้อีกแล้ว
  • Protected Storage: ปิดไปเลยครับ ถ้าคุณไม่ได้ให้คนแปลกหน้ามานั่งเครื่องคุณอยู่แล้ว
  • Remote Desktop Help Session Manager: เป็นอีกหนึ่งตัวที่ถ้าคุณไม่ได้ใช้ Remote Desktop ก็ปิดไปจะดีกว่า
  • Remote Procedure Call Locator: อันนี้ให้ตั้งไว้เป็น Manual ครับ
  • Remote Registry: รีบปิดไปเลยครับ Service นี้ ถ้าเปิดไว้อาจจะเป็นภัยในภายหลังได้
  • Removable Storage: ตัวนี้ไม่ควรปิดครับเพราะเราใช้พวกแฟลชไดรฟ์อยู่แล้ว อย่างดีก็แค่ตั้งไว้เป็น Manual ครับ
  • Routing and Remote Access: อันนี้ให้ตั้งเป็น Manual ครับ
  • Secondary Logon: ไม่ค่อยมีประโยชน์ครับ ปิดไปได้เลย หรือถ้าไม่แน่ใจก็ปรับเป็น Manual
  • Security Accounts Manager: ปิดไปเลยก็ได้ครับไม่ได้ใช้อยู่แล้วนอกจากจะใช้การเข้ารหัสบน NTFS
  • Security Center: อันนี้ก็ปิดไปด้วยก็ได้ครับ กินทรัพยากรเครื่องไปเปล่าๆ
  • Server: ถ้าคุณไม่ได้ต่อกับเครือข่ายก็ปิดไปอีกตัวหนึ่งครับ
  • Smart Card: ไม่มีค่อยมีใครใช้ Smart Card กับเครื่องที่บ้านใช่ไหมครับ ดังนั้นปิดไปเถอะ
  • SSDP Discovery Service: ใช้สำหรับรองรับอุปกรณ์เครือข่ายแบบ UPnP ดังนั้นไม่มีก็ปิดครับ
  • Task Scheduler: ถ้าคุณไม่ได้ตั้งการทำงานอะไรไว้ที่ Task Scheduler อย่างสแกนดิสก์ หรือจัดเรียงข้อมูลก็ปิดครับ
  • TCP/IP NetBIOS Helper: ตั้งไว้เป็น Manual ครับตัวนี้
  • Telnet: ถ้าคุณเป็นผู้ใช้ตามบ้าน Telnet คงไม่ใช้ ดังนั้นปิดครับ แต่ถ้าคุณชอบซนหน่อยอาจจะตั้งเป็น Manual ก็ได้
  • Terminal Services: ถ้าคุณไม่ใช้ Remote Desktop ก็ปิดไปอีกเหมือนกัน
  • Uninterrupted Power Supply: ปิดไปได้เลยครับถ้าคุณไม่ได้ต่อ UPS เข้ากับคอมพิวเตอร์ผ่าน COM Port
  • Universal Plug and Play Device Host: อันนี้ปิดไม่ได้ครับ แต่ตั้งให้เป็น Manual ได้
  • User Privilege Service: อันนี้ให้ตั้งเป็น Manual ครับ
  • Volume Shadow Copy: ปิดไปได้เลยครับถ้าคุณไม่ได้ใช้ System Restore ของวินโดวส์
  • Windows Firewall/Internet Connection Sharing (ICS): อันนี้จะเปิดไว้ก็ได้ครับ แต่ถ้าคุณมีซอฟต์แวร์ไฟร์วอลล์อยู่แล้วมันจะซ้ำซ้อนกันเล็กน้อย ดังนั้นปิดดีกว่า (ถ้าคุณมีซอฟต์แวร์ไฟร์วอลล์นะ)
  • Windows Image Acquisition (WIA): ใช้สำหรับดึงภาพออกจากกล้องดิจิตอลและสแกนเนอร์ ปิดถ้าไม่ได้ใช้
  • Windows Media Connect: ถ้าคุณไม่ได้มีเครื่องเล่น MP3 ที่รองรับการ Sync ข้อมูลกับ WMP ได้ก็ปิดไปได้เลยครับ
  • Windows Media Connect (WMC) Helper: ปิดตัวนี้ด้วยครับ มันสัมพันธ์กับตัวข้างบน
  • Windows Time: ถ้าไม่ได้ใช้ระบบตั้งเวลากับ Server ก็ไม่ต้องใช้ครับ
  • Wireless Zero Configuration: ปิดไปถ้าไม่ได้ใช้เครือข่ายไร้สาย
  • WMI Performance Adapters: อันนี้ก็ปิดได้ครับ สำหรับการใช้งานทั่วไป
  • Workstation: ปิด Service อันนี้ด้วยครับถ้าคุณไม่ได้เชื่อมต่อกับเครือข่าย

ข้อควรระวัง
การแก้ไขการตั้งค่า Service ถือว่าเป็นเรื่องที่มีความเสี่ยงสูงครับ ถ้าคุณปิด Service ที่สำคัญกับระบบอาจจะทำให้การทำงานบางอย่างไม่สามารถทำงานได้หรือส่งผลเสียหายต่อระบบ ดังนั้นควรอ่านรายละเอียดของ Service แต่ละตัวให้ดีเสียก่อน และถ้าไม่แน่ใจจริงๆ ก็อย่างไปปรับมัน หรือปรับเป็น Manual แทนที่ปิด เพื่อลดความเสี่ยงลง

Monday, April 19, 2010

Data Normalization นั้นดีจริงหรือ

แค่อ่านหัวข้อก็รู้แล้วนะครับว่าบทความนี้ตั้งใจจะแสดงอีกแง่มุมหนึ่งซึ่งแตกต่างระหว่าง "การทำ Data Normalization ในภาคทฤษฏีและภาคปฏิบัติที่ส่งตรงมาจากประสปการณ์การทำงาน" ซึ่งต้องออกตัวก่อนว่าบทความนี้เป็นแค่ความคิดเห็นส่วนตัวของผมซึ่งอาจจะผิดหรือถูกก็แล้วแต่วิจารณญาณและสถานการณ์การนำไปใช้ของแต่ละคน ก่อนอื่นใดมาทำความรู้จักกับการทำ Database Normalization เพื่อปูพื้นฐานกันก่อนเลยครับ

Database Normalization คืออะไร
ถ้าว่าด้วยศาสตร์ของ Relational Database Design แล้ว Database Normalization ถือเป็นบทพื้นฐานที่นักศึกษา Computer Science จะต้องทำความเข้าใจ (แต่เหมือนไม่เคยผ่านตายังไงไม่รู้แฮะ) ซึ่งถ้าจะให้คำนิยามของการทำ Data Normalization แล้วมันก็คือ

การทำให้รูปแบบโครงสร้างของฐานข้อมูล (Database) อยู่ในรูปของ
Normal Form (NF) ซึ่งจะสามารถลดความซ้ำซ้อนของข้อมูล,
ลดพื้นที่เก็บข้อมูลและขจัดปัญหาความผิดปกติของข้อมูล

ที่เกิดจาก 3 สาเหตุหลัก
  1. Insertion Anormalies
  2. Deletion Anormalies
  3. Update Anormalies

หรือก็คือความผิดปกติจากการ เพิ่มข้อมูล ลบข้อมูล และ ปรับปรุงข้อมูลได้สามารถแบ่งออกได้เป็น 5 ระดับ ซึ่งในบทความนี้จะไม่ลงลึกถึงรายละเอียดไปมากกว่านี้เพราะเดี๋ยวจะกลายเป็นบทความสอนการทำ Normalization ไป เอาเป็นว่าถ้ายังไม่มีพื้นฐานก็สามารถไปศึกษาต่อได้ใน http://en.wikipedia.org/wiki/Database_normalization หรือ หนังสือ Database Design ทั่วไปนะครับ

คราวนี้เราก็ได้รู้ถึงความหมายและประโยชน์ของการทำ Normalization ไปแล้ว หลายท่านอาจจะคิดว่า ในเมื่อประโยชน์มันเห็นได้ชัดขนาดนี้ แถมตอนเรียนทั้งอาจารย์ทั้งตำราจากหลายสำนักก็เน้นนักเน้นหนาว่าการทำ Normalization นั้นมีความสำคัญยิ่ง แล้วทำไมถึงจะไม่ใช้ล่ะ จากตรงนี้ผมสรุปว่า "แล้วแต่กรณีครับ"

การทำ Normalization นั้นดีแน่อย่างที่อาจารย์ท่านสอนแหละครับ แต่!!~ (ลูบหลังแล้วตบหัว) ท่านรู้หรือไม่ว่าผลของการทำ Normalization จะทำให้เกิดตารางมากมายเพื่อจุดมุ่งหมายในการลดความซ้ำซ้อนของข้อมูล หรือถ้าถ้าให้พูดแบบตรงประเด็น

"การทำ Normalization
ในทัศนะของข้าพเจ้าคือการลดความซ้ำซ้อนของข้อมูลแต่เพิ่มความซับซ้อนของข้อมูลหากใช้ไม่เหมาะสมกับกรณี"

นั่นเองและสิ่งที่ตามมาที่ Software Developer หรือแม้แต่ Software Engineer ทั้งน้อยใหญ่มองข้ามในประเด็นแรกก็คือ Performance Issue ครับ

ผมคงจะไม่ปฏิเสธที่ตำราหรืออาจารย์บอกให้ทำ Normalization แต่นั่นเหมาะสมและดีที่สุดสำหรับระบบใหญ่มากหรือใช้ร่วมกับ OR-Mapping แต่สำหรับ Application ในปัจจุบันการเลือกใช้ Normalization นั้น Software Develoer ยังเลือกใช้ได้ไม่เหมาะสมเท่าที่ควร เนื่องจากการแตกกระจายตัวของตารางนั้นก่อให้เกิดความยุ่งยากมากมายในการพัฒนา Application ยกตัวอย่างเช่น ถ้าท่านจะเขียน Summary Report ขึ้นมา 1 ตัว โดยดึงข้อมูลจากตารางที่ทำ Normalization สิ่งที่หลีดเลี่ยงไม่ได้คือการ Join ตารางเพื่อให้ได้ข้อมูลที่ครบถ้วน ซึ่งแน่นอนการ Join Table นั้น "กิน CPU มากกว่า" Select Statement ธรรมดาอยู่แล้ว ซึ่งทำให้บางครั้งการ Select 1 ครั้งอาจกินเวลาร่วมชั่วโมงเลยก็มี ประเด็นนี้เป็นประเด็นที่สำคัญมาก แต่หลายคนยังมองข้ามอยู่

การสร้างระบบที่สามารถรองรับได้หลาย Concurrent Users นั้นจำเป็นต้องมี Performance ที่ดี (อาจจะต้องลงลึกไปถึงระดับ SQL Optimization) ยิ่งจำนวนผู้ใช้งานระบบเยอะ Database Server ยิ่งทำงานหนัก ดังนั้นหากไม่มี Performance Tuning ที่ดีแล้ว อาจจะตามมาด้วยความเสียหายในธุรกิจที่ประเมิณค่าไม่ได้ก็เป็นไปได้ จากประสปการณ์ตรง ผมเคยเจอแบบนี้ครับ (พร่ามมาตั้งนาน ในที่สุดก็ยอมสารภาพ T^T) ต้องทำการ Maintainance ตัว Compliance Date Report จากฐานข้อมูลที่ทำการ NF และมี Concurrent Users ทั้งบริษัทครับ ผลก็คือผมต้องไปไล่ตาม Table ที่กระจัดกระจายอยู่เต็มไปหมด เจอ Sub Query ที่ผลาญ CPU ไปจำนวนมหาศาล เคยคิดจะแก้โดยการเขียน Query Catche หรือการทำ Index เพื่อช่วยเรื่องความเร็ว ขึ้นมาแทนครับ แต่ก็ยังไม่เร็วขึ้นเท่าไหร่ และที่สำคัญ ถ้ามี User กด Print Report นั้นขึ้นมาระบบอึดขึ้นทันตาเห็นเลยครับ หลายท่านอาจจะมองว่าแล้วทำไมไม่ไปแก้ไขที่ Hardware ล่ะ นั่นเป็นวิธีที่ไม่ได้ประสิทธ์ภาพเท่าไหร่นัก

ทำไมล่ะ ก็เครื่องมันช้าก็ต้องซื้อโน่นซื้อนี่มาเพิ่มสิ?

นั่นก่อให้เกิดความสิ้นเปลืองโดยที่ยังใช้เครื่องมือที่มีได้ไม่เต็มประสิทธิภาพ ปัจจุบันราคา Database Server นั้นสูงนะครับซึ่งอาจจะทำให้การอนุมัติขอซื้อจากบางบริษัทนั้นไม่ใช่เรื่องง่าย ไหนจะเสี่ยงต่อการที่ Hardware ตัวใหม่ที่ซื้อมาจะสร้างปัญหาหรือต้องลงทุนในการจ้างคนดูแลมากขึ้นไปอีกแถมยังต้องเจอกับประเด็นที่สองที่ทุกคนมองข้ามนั่นคือ "ความยุ่งยากมากกว่า" ที่เกิดจากการเขียน SQL Statement จนทำให้เราคิดกันจนผมหงอก หลายท่านอาจะไม่มองข้อนี้เป็นปัญหา แต่ท่านอย่าลืมว่า ถ้า Software Developer ใช้เวลามากขึ้นในการพัฒนา Application นั่นหมายถึง Cost ที่เพิ่มขึ้นและ Timeline ที่อาจจะเกินเวลาซึ่งอาจจะทำให้ Project นั้นเกิดอาการที่เรียกว่า "Delay" ได้ครับ

ดังนั้นจาก Case Study (ของผม) จะเห็นได้ว่า Normalization ไม่ใช่สิ่งที่จำเป็นที่สุดในการ Design Database ครับ มันขึ้นอยู่กับว่า เรามีจุดมุ่งหมายอะไรมากกว่า ซึ่งการ Design ในปัจจุบันก็มีให้เลือกใช้ได้ตั้งหลายแบบครับ ทั้ง Normalization, Demormalization, Centralization หรือรูปแบบอื่น

เขียนซะยาวแต่นั่นก็คือประสปการณ์ที่ผมอยากจะมาแบ่งปันให้ทุกคนครับ จะได้ไม่ยึดติดกับการทำ Normalization มากเกินไปวันนี้ไปก่อนครับ