วันอังคารที่ 4 พฤศจิกายน พ.ศ. 2557

MySQL



MySQL

        MySQL (มายเอสคิวแอล) เป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (Relational Database Management System) โดยใช้ภาษาSQLแม้ว่า MySQL เป็นซอฟต์แวร์โอเพนซอร์สแต่แตกต่างจากซอฟต์แวร์โอเพนซอร์สทั่วไป โดยมีการพัฒนาภายใต้บริษัท MySQL AB ในประเทศสวีเดนโดยจัดการ MySQL ทั้งในแบบที่ให้ใช้ฟรี และแบบที่ใช้ในเชิงธุรกิจ

ประเภทการจัดเก็บข้อมูล (Database Storage Engine)
  • MyISAMค่าปกติ (default)
  • InnoDBสนับสนุนการทำ ทรานแซคชั่น (transaction) แบบACID
  • Memoryการจัดเก็บในหน่วยความจำ ใช้เป็นตารางชั่วคราวเพื่อความรวดเร็ว เนื่องจากเก็บไว้ในหน่วยความจำทำให้มีความเร็วในการทำงานสูงมาก
  • Merge เป็นการรวม Table หลาย ๆ ตัวให้แสดงผล หรือแก้ไข เสมือนเป็นข้อมูลจาก Table เดียว
  • Archive เหมาะสำหรับการจัดเก็บข้อมูลพวกlog file,ข้อมูลที่ไม่ต้องมีการ คิวรี่ (query) หรือใช้บ่อยๆ เช่น log file เพื่อประโยชน์ในการตรวจสอบย้อนหลัง (Security Audit Information)
  • Federated สำหรับการจัดเก็บแบบปลายทาง (remote server) แทนที่จะเป็นการจัดเก็บแบบ local เหมือนการจัดเก็บ (Storage) แบบอื่นๆ
  • NDB สำหรับการจัดเก็บแบบคลัสเตอร์(cluster)
  • CSVเก็บข้อมูลจาก Text ไฟล์โดยอาศัยเครื่องหมาย คอมมา (comma) เป็นตัวแบ่งฟิลด์
  • Blackhole
  • Example
ชนิดของข้อมูลที่สนับสนุน
     ชนิดข้อมูลที่ MySQL สนับสนุนแบ่งเป็นสามประเภทหลักใหญ่ๆ

     ชนิดข้อมูลที่เป็นตัวเลข
  • BIT (มีใช้ได้กับ MyISAM, InnoDB, Memory)
  • TINYINT
  • SMALLINT
  • MEDIUMINT
  • INT
  • BIGINT
  • Float
     ชนิดข้อมูลที่เกี่ยวกับวันที่และเวลา
  • DATETIME
  • DATE
  • TIMESTAMP
  • TIME
  • YEAR
    ชนิดข้อมูลที่เกี่ยวกับตัวอักษร
  • CHAR
  • VARCHAR
  • BINARY
  • VARBINARY
  • BLOB
  • TEXT
  • ENUM
  •  SET
         
    การใช้งาน
             MySQL เป็นที่นิยมใช้กันมากสำหรับฐานข้อมูลสำหรับเว็บไซต์ เช่น มีเดียวิกิ และ phpBB และนิยมใช้งานร่วมกับภาษาโปรแกรม PHP ซึ่งมักจะได้ชื่อว่าเป็นคู่ จะเห็นได้จากคู่มือคอมพิวเตอร์ต่างๆ ที่จะสอนการใช้งาน MySQL และ PHP ควบคู่กันไป นอกจากนี้ หลายภาษาโปรแกรมที่สามารถทำงานร่วมกับฐานข้อมูล MySQL ซึ่งรวมถึงภาษาซีซีพลัสพลัสปาสคาลซีชาร์ปภาษาจาวาภาษาเพิร์ลพีเอชพีไพทอนรูบี และภาษาอื่น ใช้งานผ่าน API สำหรับโปรแกรมที่ติดต่อผ่านODBCหรือ ส่วนเชื่อมต่อกับภาษาอื่น (database connector) เช่น เอเอสพี สามารถเรียกใช้ MySQL ผ่านทาง MyODBC , ADO, ADO. NET เป็นต้น

    โปรแกรมช่วยในการจัดการฐานข้อมูล และ ทำงานกับฐานข้อมูล
            ในการจัดการฐานข้อมูล MySQL คุณสามารถใช้โปรแกรมแบบ command-line เพื่อจัดการฐานข้อมูล (โดยใช้คำสั่ง: mysqlและ mysqladminเป็นต้น).หรือจะดาวน์โหลดโปรแกรมจัดการฐานข้อมูลแบบGUIจากเว็บไซต์ของ MySQL ซึ่งคือโปรแกรม: MySQL Administrator และ MySQL Query Browser. เป็นต้น

    ส่วนเชื่อมต่อกับภาษาการพัฒนาอื่น (database connector)
            มีส่วนติดต่อ (interface) เพื่อเชื่อมต่อกับภาษาในการพัฒนา อื่นๆเพื่อให้เข้าถึงฟังก์ชันการทำงานกับฐานข้อมูล MySQL ได้เช่น ODBC (Open Database Connector) อันเป็นมาตรฐานกลางที่กำหนดมาเพื่อให้ใช้เป็นสะพานในการเชื่อมต่อกับโปรแกรมหรือระบบอื่นๆ เช่น MyODBCอันเป็นไดรเวอร์เพื่อใช้สำหรับการเชื่อมต่อในระบบปฏิบัติการวินโดว์, JDBC คลาสส่วนเชื่อมต่อสำหรับ Java เพื่อใช้ในการติดต่อกับ MySQL และมี API (Application Programming Interface) ต่างๆมีให้เลือกใช้มากมายในการที่เข้าถึง MySQL โดยไม่ขึ้นอยู่กับภาษาการพัฒนาใดภาษาหนึ่งนอกเหนือจาก ตัวเชื่อมต่อกับภาษาอื่น (Connector) ที่ได้กล่าวมาแล้ว ยังมี API ที่สนับสนุนในขณะนี้คือ
    • DBIสำหรับการเชื่อมต่อกับ ภาษาperl
    • Ruby สำหรับการเชื่อมต่อกับ ภาษาruby
    • Python สำหรับการเชื่อมต่อกับภาษาpython
    • .NET สำหรับการเชื่อมกับภาษา.NET framework
    • MySQL++ สำหรับเชื่อมต่อกับภาษาC++
    • Chสำหรับการเชื่อมต่อกับCh (C/C++ interpreter)
    • PHP สำหรับการเชื่อมต่อกับภาษาPHP
      
  • ความสามารถและการทำงานของโปรแกรม MySQL 
              MySQL ถือเป็นระบบจัดการฐานข้อมูล (DataBase Management System (DBMS)
    ฐานข้อมูลมีลักษณะเป็นโครงสร้างของการเก็บรวบรวมข้อมูลการที่จะเพิ่มเติมเข้าถึงหรือประมวลผลข้อมูลที่เก็บในฐานข้อมูลจำเป็นจะต้องอาศัยระบบจัดการฐานข้อมูลซึ่งจะทำหน้าที่เป็นตัวกลางในการจัดการกับข้อมูลในฐานข้อมูลทั้งสำหรับการใช้งานเฉพาะ และรองรับการทำงานของแอพลิเคชันอื่นๆที่ต้องการใช้งานข้อมูลในฐานข้อมูลเพื่อให้ได้รับความสะดวกในการจัดการกับข้อมูลจำนวนมาก MySQL ทำหน้าที่เป็นทั้งตัวฐานข้อมูลและระบบจัดการฐานข้อมูล
    MySQL เป็นระบบจัดการฐานข้อมูลแบบ relational
    ฐานข้อมูลแบบ relational จะทำการเก็บข้อมูลทั้งหมดในรูปแบบของตารางแทนการเก็บข้อมูลทั้งหมดลงในไฟล์เพียงไฟล์เดียว ทำให้ทำงานได้รวดเร็วและมีความยืดหยุ่น นอกจากนั้นแต่ละตารางที่เก็บข้อมูลสามารถเชื่อมโยงเข้าหากันทำให้สามารถรวมหรือจัดกลุ่มข้อมูลได้ตามต้องการ โดยอาศัยภาษา SQL ที่เป็นส่วนหนึ่งของโปรแกรม MySQL ซึ่งเป็นภาษามาตรฐานในการเข้าถึงฐานข้อมูล
    MySQL แจกจ่ายให้ใช้งานแบบ Open Sourceนั่นคือ ผู้ใช้งาน MySQL ทุกคนสามารถใช้งานและปรับแต่งการทำงานได้ตามต้องการ สามารถดาวน์โหลดโปรแกรม MySQL ได้จากอินเทอร์เน็ตและนำมาใช้งานโดยไม่มีค่าใช้จ่ายใดๆ
    ในระบบปฏิบัติการ Red Hat Linux นั้นมีโปรแกรมที่สามารถใช้งานเป็นฐานข้อมูลให้ผู้ดูแลระบบสามารถเลือกใช้งานได้หลายโปรแกรม เช่น MySQL และ PostgreSQLผู้ดูแลระบบสามารถเลือกติดตั้งได้ทั้งในขณะที่ติดตั้งระบบปฏิบัติการ Red Hat Linux หรือจะติดตั้งภายหลังจากที่ติดตั้งระบบปฏิบัติการก็ได้อย่างไรก็ตาม สาเหตุที่ผู้ใช้งานจำนวนมากนิยมใช้งานโปรแกรม MySQL คือ MySQL สามารถทำงานได้อย่างรวดเร็ว น่าเชื่อถือและใช้งานได้ง่ายเมื่อเปรียบเทียบประสิทธิภาพในการทำงานระหว่างโปรแกรม MySQL และ PostgreSQLโดยพิจารณาจากการประมวลผลแต่ละคำสั่งได้ผลลัพธ์ดังรูปที่ 1 นอกจากนั้น MySQL ถูกออกแบบและพัฒนาขึ้นมาเพื่อทำหน้าเป็นเครื่องให้บริการรองรับการจัดการกับฐานข้อมูลขนาดใหญ่ ซึ่งการพัฒนายังคงดำเนินอยู่อย่างต่อเนื่องส่งผลให้มีฟังก์ชันการทำงานใหม่ๆที่อำนวยความสะดวกแก่ผู้ใช้งานเพิ่มขึ้นอยู่ตลอดเวลารวมไปถึงการปรับปรุงด้านความต่อเนื่อง ความเร็วในการทำงาน และความปลอดภัยทำให้ MySQL เหมาะสมต่อการนำไปใช้งานเพื่อเข้าถึงฐานข้อมูลบนเครือข่ายอินเทอร์เน็ต

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

         - นอกจากผู้ดูแลฐานข้อมูลแล้ว ไม่ควรให้ผู้ใช้งานคนอื่นๆ เข้าถึงตาราง user ของฐานข้อมูล
         - ผู้ดูแลฐานข้อมูลควรศึกษาถึงระบบการให้สิทธิ์การเข้าถึงฐานข้อมูลโดยละเอียด
         - รหัสผ่านที่ใช้งานจะต้องเป็นรหัสผ่านที่ดี และการเก็บค่ารหัสผ่านจะต้องได้รับการเข้ารหัส
         - ถ้ามีการส่งข้อมูลผ่านอินเทอร์เน็ต ข้อมูลที่ส่งจะต้องได้รับการเข้ารหัสทุกครั้ง
         - ตรวจสอบการส่งข้อมูลโดยใช้คำสั่ง tcpdumpและ strings ของระบบปฏิบัติการ
         - ต้องกำหนดให้ผู้ใช้งานฐานข้อมูลทุกคนมีรหัสผ่านในการเข้าใช้งาน


    ข้อดี ข้อเสีย ของ MySQL เมื่อเปรียบเทียบกับ Access และ Sql Server

    ข้อดี 
    -สามารถเอาซอร์โค้ดโปรแกรมมาพัฒนาต่อยอดได้
    -สามารถนำไปใช้ได้กับทุกระบบทุกแพลตฟอร์ม ใช้กับ ASP,JSPก็ได้ แต่ที่เรานิยมเอามาใช้งานร่วมกับ PHP ก็เพราะว่า MySQL กับ PHP เป็น Open Source เหมือนกัน มีความน่าเชื่อถือสูง สามารถทำงานร่วมกันได้อย่างเสถียรมากที่สุด รองรับการใช้งานหลายแพลตฟอร์ม และค่าใช้จ่ายน้อย

    -เนื่องจากเป็นที่นิยมจึงสามารถ หาข้อมูลการใช้งานได้ง่าย (หาง่ายกว่า Access , SQL server )
    -ใช้ทรัพยากรเครื่องน้อย performance สูง
    - มีผู้ให้บริการServerส่วนใหญ่ รองรับฐานข้อมูลMySqlมากกว่าฐานข้อมูลแบบอื่น

    ข้อเสีย
    -ใช้งานยากกว่าสองตัวข้างต้น ซึ่งจะเป็นการสร้างฐานข้อมูลด้วย Command line แบบพิมพ์คำสั่ง                 
    แต่ก็ในปัจจุบันมี เครื่องมือช่วยออกแบบฐานข้อมูลแบบมีหน้าจอGUI  ที่เรียกว่าphpmyadmin                   
    ที่ช่วยในการสร้างMySqlได้อย่างง่ายขึ้น ซึ่งสามารถโหลดเพิ่มเติมได้
    -เครื่องมือให้ใช้ได้น้อยกว่า(SqlServer,Access)ซึ่ง Mysqlจะเหมาะสำหรับใช้งานในระบบงานขนาดเล็กถึงขนาดกลาง และจะใช้งานได้ดีมากๆถ้าเขียนโปรแกรมติดต่อMySqlด้วยภาษา PHP และติดตั้งลงบน OS Unix platform ซึ่งนอกจากจะไม่เสียตังแล้วยังมีความปลอดภัยสูงอีกด้วย

    ความสามารถของ MySQl
    MySQL จะมีความความสามารถครอบคลุมทุกความต้องการของผู้ใช้ในระบบงานขนาดเล็กถึงขนาดกลาง
    นั่นหมายความว่า ถ้าฐานข้อมูลประเภทอื่นเช่น Sql Server ,Access ,oracle  ในงานขนาดเล็กหรือขนาดกลาง
    จะทำให้ได้รับความสามารถต่างๆของระบบฐานข้อทูล ที่เกินความจำเป็น  ซึ่งถือเป็นการสิ้นเปลืองงบประมาณ
    โดย MySqlมีความสามารถเด่น ๆ ดังนี้
    - MySQL สามารถใช้คำสั่ง SQL ในการสั่งงาน
    - ใช้ Kernel Threads ในการทำงานแบบ Multi - threaded
    - สนับสนุน  API ต่าง ๆ มากมาย เพื่อใช้ในการพัฒนาระบบ
    - MySQL สามารถรันได้ในหลายระบบปฏิบัติการ
    - สนับสนุน Group by และ Order by clauses และ Group Fune
    - สนับสนุน  Rihgt outer Join และ Left outer Ioin
    - มีความยืดหยุ่นสูง ในการกำหนดสิทธิและรหัสผ่านให้มีความปลอดภัย
    - สามารถรับรองข้อมูลขนาดใหญ่ ได้ระดับล้านระเบียน
    และอื่นๆ




    *** ที่มาhttp://th.wikipedia.org/wiki

                                                                                                                                                                                                                           

ไม่มีความคิดเห็น:

แสดงความคิดเห็น