หน้าแรก > คุย....ฐานข้อมูล, คุย..บริหารserver, MySQL, Oracal, PosgreSQL > Database Server สำหรับการใช้งานในองค์กร

Database Server สำหรับการใช้งานในองค์กร

Database server คือ เครื่องบริการข้อมูล ที่เปิดให้ผู้ใช้เพิ่มข้อมูล ลบ หรือแก้ไข สำหรับโปรแกรมบริการระบบฐานข้อมูลที่นิยมใช้ ได้แก่ MYSQL หรือ Microsoft Access เป็นต้น โดยผู้ใช้ต้องเขียนโปรแกรมสั่งประมวลผล ปรับปรุงข้อมูล หรือนำข้อมูลในส่วนที่ตนเองมีสิทธิ์ ไปใช้ตามต้องการ

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

MySql Database Server คือ Program ทางด้านฐานข้อมูลใช้ในการจัดเก็บข้อมูลต่าง ๆ ตามที่เราต้องการ เป็น Freeware นั้นคือ คุณสามารถเข้าไป Download และนำมาใช้ฟรี ๆ โดยไม่ต้องเสียงเงินเพื่อซื้อลิขสิทธิ์ในการใช้งานโปรแกรมแต่อย่างใด MySQL เป็นที่นิยมใช้กันมากกับฐานข้อมูลบน website ครั้งนี้เราจะมาเรียนรู้เรื่องการติดตั้ง MySQL กัน

จุดเริ่มต้นของ MySQL เริ่มต้นขึ้นในปี ค.ศ.1979 Michael Widenius ชาวฟินแลนด์ หรือรู้จักกันทั่วไปในชื่อ Montyได้พัฒนาเครื่องมือสำหรับฐานข้อมูลตัวหนึ่งชื่อ UNIREG เพื่อใช้งานภายในบริษัท TcX (บริษัททางด้านระบบคลังข้อมูล ประเทศสวีเดน) ซึ่งต่อมาในปี ค.ศ.1994 บริษัทต้องการเพิ่มความสามารถของ UNIREG ให้สามารถใช้งานร่วมกับระบบฐานข้อมูลด้วยภาษา SQL (Structured Query Langauge) เพื่อการใช้งานในรูปแบบเว็บเบส ทั้งนี้ทางทีมฯ จึงได้เริ่มต้นมองหาระบบฐานข้อมูลเพื่อความต้องการการใช้งานดังกล่าว

ในตอน แรก ได้ทำการทดสอบระบบฐานข้อมูลเชิงพาณิชย์หลายตัว แต่ก็พบว่าไม่เป็นที่น่าพอใจ เนื่องจากตารางข้อมูลของบริษัทฯ มีขนาดใหญ่ ผลลัพธ์ที่ได้จากการประมวลผลช้าเกินกว่าจะรับได้ แต่ก็ได้พบกับระบบฐานข้อมูลตัวหนึ่งชื่อ mSQL หรือ Mini SQL ซึ่งพัฒนาขึ้นโดย David Hughes บริษัทฯ มีความสนใจในระบบฐานข้อมูลตัวนี้เป็นอย่างมาก เพราะว่ามีราคาไม่แพงนัก ในครั้งแรกทางบริษัทฯ ก็ได้ทำงานร่วมกับผู้พัฒนา เพื่อแก้ไขและเพิ่มเติมความสามารถของ mSQL ไม่ว่าจะเป็นความสามารถในการเชื่อมต่อกับตารางข้อมูลแบบ ISAM (Indexed Sequential Access Method) รวมทั้งการสนับสนุนการใช้งานดัชนี (Index) เป็นต้น

แต่ในที่สุดแล้ว ผลลัพธ์ที่ได้ก็ยังไม่เป็นที่น่าพอใจ Monty จึงมีความคิดที่จะพัฒนาระบบฐานข้อมูลขึ้นมาเอง และนั่นก็คือจุดเริ่มต้นของ MySQL ที่มาของชื่อ MySQL มาจากชื่อลูกสาวของ Monty เอง โดยลูกสาวชื่อ “มาย” (My) และอีกเหตุผลหนึ่ง บางคนเชื่อว่าตั้งชื่อตามชื่อไดเรกทอรี และไลบรารี ที่ใช้ภายใน TcX เอง ซึ่งส่วนใหญ่จะตั้งชื่อขึ้นต้นด้วยคำว่า “My” อนึ่ง มีความเป็นไปได้สูงที่จะตั้งชื่อตามชื่อลูกสาว เพราะนอกจากนี้ก็ยังมี MySQL รุ่นที่ใช้งานสำหรับ SAP ที่ชื่อ MaxDB ซึ่งตั้งชื่อตาม Max ลูกชายของ Monty ด้วยเช่นกัน

การเรียกชื่อที่ถูกต้องของ MySQL จะต้องอ่านว่า มาย-เอส-คิว-แอล (ไม่ได้อ่านว่า มาย-ซี-ควัล) ซึ่งการเรียกชื่อ MySQL จะเหมือนกับการเรียกชื่อภาษา SQL (อ่านว่า เอส-คิว-แอล) เช่นกัน

ต่อมาในปี ค.ศ.1995 David Axmark (หนึ่งในผู้ร่วมก่อตั้งบริษัท MySQL AB) มีความคิดที่จะเผยแพร่ MySQL และทำการตลาดไปสู่อินเทอร์เน็ต โดยแบ่งเป็น 2 รูปแบบ คือแบบใช้งานได้โดยไม่เสียค่าใช้จ่ายตามสิทธิบัตร GNU และแบบเชิงพาณิชย์ ซึ่งในที่สุดในปี ค.ศ.1996 MySQL เวอร์ชันแรก 3.11.1 จึงได้เริ่มเผยแพร่แก่สาธารณชน โดยการแจกจ่ายซอฟท์แวร์แบบไบนารีสำหรับระบบปฏิบัติการ ลีนุกซ์ (Linux) และโซลาริส (Solaris) ทุกวันนี้ MySQL สามารถใช้งานได้บนระบบปฏิบัติการต่างๆ มากมาย ซึ่งมีการแจกจ่ายซอฟท์แวร์ในแบบไบนารี และแบบซอร์สโค้ด

“การแจกจ่ายซอฟท์แวร์แบบไบนารี (Binary Distributions) คือการแจกจ่ายซอฟท์แวร์ในรูปแบบที่สามารถนำไปใช้งานได้ทันที โดยไม่ต้องนำไปแปลโปรแกรมใดๆ เพิ่มเติมอีก”

“การแจกจ่ายซอฟท์แวร์แบบซอร์สโค้ด (Source Code) เป็นรูปแบบที่จะต้องนำโค้ดที่ได้ไปผ่านการแปลด้วยตัวแปลโปรแกรม (Compiler) ก่อน จึงจะสามารถใช้งานได้ รูปแบบนี้เหมาะสำหรับโปรแกรมเมอร์ที่ต้องการการใช้งานพิเศษเฉพาะ และต้องการความชำนาญในการโปรแกรมภาษา C สำหรับการแปลซอร์สโค้ดอีกด้วย”

ในครั้งนี้จึงมีการเกิดขึ้นของบริษัท MySQL AB โดยสามทหารเสือผู้ก่อตั้ง คือ David Axmark, Michael “Monty” Widenius และ Allan Larsson ดูแลรับผิดชอบการจำหน่ายและเผยแพร่ MySQL ทั้งรุ่นสำหรับโอเพ่นซอร์ส และสำหรับการใช้งานเชิงพาณิชย์ นอกจากนี้ บริษัทฯ ยังเปิดให้บริการการอบรม และการบริการทางด้านเทคนิคสำหรับ MySQL อีกด้วย ปัจจุบัน MySQL ถูกขายให้กับบริษัทซันไมโครซิสเต็ม และตกอยู่ภายใต้บริษัทออราเคิลในที่สุด เนื่องจากบริษัทซันถูกรวมเข้ากับบริษัทออราเคิลประมาณเดือนเมษายน ปี ค.ศ. 2009 (อ้างถึง : http://www.padtito.com)

รุ่นของผลิตภัณฑ์นั้นแบ่งออกมาได้สามสายการผลิต ได้แก่ เวอร์ชันใช้ฟรี เวอร์ชันการค้า และเวอร์ชันที่สนับสนุนกับผลิตภัณฑ์ SAP (MAX DB) ความแตกต่างคือเวอร์ชันคอมมิวนิตี้นั้นสามารถนำไปใช้งานได้ฟรีแต่ขาดการสนับสนุนหรือการช่วยเหลือเมื่อมีปัญหาเกิดขึ้น, เวอร์ชันที่เป็นคอมเมอร์เชียลนั้นให้บริการด้านความสนับสนุนเมื่อมีปัญหา (ซื้อบริการ) สรุปคร่าวๆ ประเภทดาต้าเบสให้เลือกใช้ดังนี้(อ้างถึง : http://www.padtito.com)

 ประเภทการจัดเก็บข้อมูล (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

ส่วนเชื่อมต่อกับภาษาการพัฒนาอื่น (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

(อ้างถึงใน http://th.wikipedia.org/wiki)

Oracle คืออะไร

คือ Object – Relational Database Management System (ORDBMS) มีความสามารถทำงานได้ทั้งในรูปแบบ Rational และบางคุณสมบัติของ Object Oriented เป็นผลิตภัณฑ์จากบริษัทออราเคิล
และยังเป็น RDBMS เชิงพาณิชย์ตัวแรกของโลก ออราเคิลเซิร์ฟเวอร์ มีความสามารถโดดเด่นในด้าน
การจัดการฐานข้อมูล มีความน่าเชื่อถือสูง (reliable) ด้วยเทคโนโลยี Rollback Segment
ซึ่งเป็นลิขสิทธิ์ของบริษัทออราเคิล โดยปกติ Log file หรือไฟล์ที่เก็บ Transaction ของระบบ
ตัวอย่างเช่น การโอนเงินจากบัญชีธนาคารหนึ่งไปเข้าอีกบัญชีธนาคารหนึ่ง การทำงานมีอยู่สองรูปแบบ
คือ AIJ(After Image Journal) และ BIJ (Before Image Journal) โดย AIJ จะเก็บข้อมูลที่เป็น New Value ก่อนทำการแก้ไข ส่วน BIJ จะเก็บข้อมูลที่เป็น Old Value หลังจากการทำการแก้ไขข้อมูล ในส่วนของ MS SQL Server ซึ่งเป็นฐานข้อมูลเหมือนกันนั้นจะมี AIJ อย่างเดียว ในขณะที่ Oracle มีทั้ง AIJ และ BIJ ซึ่งทาง Oracle เรียกว่า Rollback Segment

ประโยชน์ Rollback Segment ที่ทำให้ผลิตภัณฑ์ของ Oracle ครองตลาดผู้ใช้มากสุด เนื่องจากสามารถจัดการกับข้อมูลในกรณีที่เกิด การล้มเหลวของระบบ หรือภาวะระบบไม่สามารถให้บริการได้ ด้วยเทคโนโลยี Rollback Segmentจะจัดการ Instance Recovery ข้อมูลไม่ให้เกิดความเสียหายอันเนื่องมาจาก การล้มเหลวของระบบ ได้อย่างดีมาก
นอกจากนี้ Oracle ยังมีส่วนที่เรียกว่า Timestamp ทำงานเกี่ยวข้องกับ Concurrency Control เป็นส่วนที่จัดการการทำงานกับหลาย ๆ Transaction ในเวลาเดียวกัน โดยทุก ๆ Transaction จะมี Timestamp เป็นตัวกำหนดเวลาเริ่มต้นของการประมวลผล (Process) ซึ่งช่วยในการขจัดปัญหาหลักของ Concurrency Problems
ปัจจุบันบริษัทออราเคิลกลายเป็นผู้ขายฐานข้อมูลสัมพันธ์ที่ใหญ่ที่สุดในโลก ฐานข้อมูลมีให้ใช้ได้ 80 แพลตฟอร์มซึ่งครอบคลุมเกือบทุกแพลตฟอร์มที่มีอยู่ในปัจจุบัน เริ่มตั้งแต่เครื่องคอมพิวเตอร์บนเมนเฟรม, มินิคอมพิวเตอร์, พีซี บนระบบปฏิบัติการตั้งแต่ Window 9x, NT, Window CE, UNIX, SOLARIS, LINUX โดยที่ในทุกพอร์ตมีโครงสร้างการเหมือนกันๆหมด คำสั่งที่ใช้ก็เป็นแบบเดียวกัน สามารถทำงานร่วมกันได้ สามารถนำข้อมูลจากพอร์ตหนึ่งไปพอร์ตอื่นได้อย่างไม่มีปัญหา เหมาะแก่การทำระบบต้นแบบ (Prototype) เช่น นักพัฒนาสามารถเขียน,ทดสอบ,พัฒนาระบบบนเครื่องเดส์กทอปได้โดยไม่ต้องสนใจว่าสุดท้ายจะใช้นำไปใช้ที่แพลตฟอร์มไหน
เป็นหัวใจสำคัญของซอฟต์แวร์จากบริษัทออราเคิล
ฐานข้อมูล Oracle เป็นฐานข้อมูลที่ได้รับความนิยมและมีการใช้งานอย่างแพร่หลาย เนื่องจากเป็นฐานข้อมูลที่มีประสิทธิภาพในการทำงานสูง เหมาะกับการจัดการเก็บข้อมูลขนาดใหญ่ที่ต้องการความปลอดภัยและความมั่นคงในการใช้งาน การจัดการฐานข้อมูล Oracle ให้เป็นไปอย่างถูกต้องจะช่วยให้การใช้งานฐานข้อมูลเป็นไปได้ง่ายและมีประสิทธิภาพมากยิ่งขึ้น หน้าที่ในการจัดการฐานข้อมูลเป็นหน้าที่หลักของผู้ดูและระบบฐานข้อมูล หรือ DBA (Database Administrator)

ประวัติการพัฒนา
ประวัติ Oracle ในปี ค.ศ. 1977 บริษัท Relation Software Inc หรือ RSI ได้ถือกำเนิดขึ้นใน Redwood รัฐ Clariflornia ผู้ร่วมก่อตั้งคือ Lawrence; J Ellison จบการศึกษาจากมหาวิทยาลัยอิลินอยส์และ ชิคาโก ต่อมาในปี ค.ศ.1983 บริษัท RSI ได้เปลี่ยนชื่อเป็น Oracle Corparation เพื่อหลีกเลี่ยงความสับสนกับคู่แข่งที่ชื่อ RIT ณ เวลานั้นนักพัฒนา Applicationได้สร้างระบบฐานข้อมูลที่สามารถทำงานได้หลายแพลตฟอร์มซึ่งเป็นเวอร์ชั่น 3 และออกจำหน่ายในท้องตลาด โดยเวอร์ชั่นนี้สามารถทำงานได้ทั้งระบบ Digital VAX / VMS แต่ยังสามารถทำงานบนแพลตฟอร์ม Unix และแพลตฟอร์มอื่น ๆ อีกด้วย
จนถึง ค.ศ. 1985 บริษัท Oracle ได้กล่าวว่าระบบฐานข้อมูลสามารถทำงานได้มากกว่า 30 แพลตฟอร์ม ในปัจจุบันนี้สามารถทำงานได้ถึง 80 แพลตฟอร์ม เช่น แพลตฟอร์ม Sun”Solaris, IBM, AIX, Windows ต่างๆและ Linux เพื่อต้องการส่วนแบ่งตลาดมากที่สุด นอกจากมีการสนับสนุนหลายๆแพลตฟอร์มแล้ว ข่าวคราวของ Oracle กลางทศวรรษที่ 1980 ยังคงได้ยินจนถึงปัจจุบันนี้ รวมถึงเครื่องมือในการพัฒนา Software และการตัดสินใจภาษา SQL ตามมาตรฐาน ANSI สามารถทำงานข้ามแพลตฟอร์มต่างๆได้และเชื่อมต่อเน็ตเวิร์คมาตรฐาน เป็นต้น
ตั้งแต่กลางทศวรรษที่ 1980 โมเดลการกระจายฐานข้อมูลก็ค่อยๆปรากฏออกมาจาก ดาตาเบส แอปพลิเคชั่น เซิร์ฟเวอร์เป็น ไคลแอนท์/เซิร์ฟเวอร์ แล้วกลายมาเป็น Internet ที่ทำงานบนเครื่องคอมพิวเตอร์ส่วนบุคคลและเครื่องคอมพิวเตอร์ไคลแอนท์ที่ใช้ทรัพยากรน้อย หรือเรียกว่า Thin Client และสามารถเข้าถึง ดาต้าเบสแอปพลิเคชั่นด้วยเบราเซอร์และกลายเป็นเทคโนโลยี Three-Tier ซึ่งเราจะพบเห็นในปัจจุบันนี้เช่น Web Service Oracle นะนำลักษณะเด่นด้านเทคนิคใหม่ๆ มาใส่ไว้ในฐานข้อมูลเหมือนกับโมเดลการคำนวณและการกระจายที่มี การเปลี่ยนแปลง จากการให้ฐานข้อมูลแบบกระจายจนถึง Java Virtual Machine ในเอ็นจิน ฐานข้อมูลหลัก
กว่า 3 ทศวรรษ ที่ออราเคิลยืนหยัดอยู่บนถนนสายซอฟต์แวร์ แลรี่ เอลลิสัน ก่อตั้งออราเคิลขึ้น เพราะเห็นโอกาสเติบโตสูงมากของตลาดฐานข้อมูล(ดาต้าเบส) และยังพัฒนาขยายธุรกิจดาต้าเบส ซึ่งเป็นเจ้าตลาดอยู่แล้วอย่างต่อเนื่อง ชื่อของออราเคิลในฐานะบริษัทซอฟต์แวร์ด้านระบบบริหารฐานข้อมูลที่ใหญ่ที่สุดในโลกและมีระบบบริหารธุรกิจ การบัญชีการเงิน ระบบบริหารการผลิต บริหารลูกค้าสัมพันธ์ (CRM) หรือเรียกรวมๆว่า อีบิสซิเนส สวีท (E-Business Suite) ซึ่งคุณสมบัติของ Oracle เช่น โปรแกรมประมวลผลคำ โปรแกรมตารางคำนวณ โปรแกรม ฐานข้อมูล โปรแกรมนำเสนอเกม โปรแกรมป้องกันไวรัส นอกจากนี้ยังมีระบบการติดตั้งที่รวดเร็ว ช่วยให้วงจรการดำเนินธุรกิจหลักๆ ขับเคลื่อนได้ภายในเวลาอันสั้น อีกทั้งยังเป็นชุดแอปพลิเคชั่นอยู่ภายใต้งบประมาณที่เหมาะสม
ชุดผลิตภัณฑ์ฐานข้อมูล Oracle 1. เวอร์ชั่นบุคคล เป็นฐานข้อมูลที่ใช้คนเดียวเพราะสามารถ เขียน แก้ไขบนโค้ดคอมพิวเตอร์เดียว ซึ่งถ้ามีการ Hank ของข้อมูลก็จะไม่ทำให้ผู้อื่นเดือดร้อน 2. เวอร์ชั่นมาตรฐาน เป็นฐานข้อมูล Server ใช้กันหลายคนหรือเรียกว่า Work group Server 3. เวอร์ชั่น Enterprise เช่นเดียวกับเวอร์ชั่นมาตรฐาน แต่สนับสนุนผู้ใช้ได้มากและรวมฟังก์ชั่นเครื่องมือต่างๆเพิ่มขึ้น เช่นการจัดการระดับสูง network program คลังข้อมูล เป็นต้น

ประเภทของ Oracle
ลักษณะงาน ซอฟแวร์ของ Oracle มี 2 แบบ คือ
1. Personal Oracle
2. Oracle Server

ทั้ง 2 แบบนี้มีลักษณะการใช้งานและคำสั่งเหมือนกัน แต่ต่างกันที่ Personal Oracle คือฐานข้อมูลที่เมื่อติดตั้งบนเครื่องคอมพิวเตอร์แล้ว ผู้ใช้จะต้องนั่งทำงานกับ Oracle นี้ที่หน้าเครื่องท่านั้น ส่วนของ Oracle Server คือ ฐานข้อมูลในลักษณะเซิร์ฟเวอร์ คือเครื่องคอมพิวเตอร์ที่ติดตั้งโปรแกรมของ Oracle Server ไว้ และยอมให้ผู้ใช้งานเรียกฐานข้อมูล หรือจัดการกับข้อมูลจากเครื่องคอมพิวเตอร์อื่น ๆ ได้(เรียกเครื่องอื่นๆ เป็นไคลเอนต์) ดังนั้นถ้าต้องการให้มีผู้เรียกใช้ข้อมูลจากฐานข้อมูลหลาย ๆ คนได้ ก็ควรต้องเลือกแบบที่เป็น Oracle Server

การทำงานของ Oracle
ในการติดต่อใช้งานกับ Oracle Database นั้น เราต้องใช้ภาษา SQL (ซึ่งบางท่านเรียกว่า SEQUEL)
ซึ่งเป็นภาษาที่ใช้ในการกำหนด และจัดการกับ Database (DDL, DML)
การทำงานกับ Database ในแบบ Relational Database นั้นหมายความว่า Database Engine จะมีการจัดเก็บข้อมูล ในลักษณะที่เป็นกลุ่มของข้อมูลที่มีความสัมพันธ์กัน ใน 1 Database สามารถที่จะมี Table ตั้งแต่ 1 table เป็นต้นไป และในแต่ละ Table ก็สามารถมีได้หลาย Column หลาย Row
โดยปกตินั้น Oracle Database Software จะแบ่งออกเป็น 4 ประเภทด้วยกัน คือ
? Oracle Enterprise Edition จะเป็น Edition ที่มีความสามารถครบที่สุด มี Feature ตามที่ Oracle โฆษณาไว้ทุกอย่าง
? Oracle Standard Edition จะมีความสามารถน้อยกว่า Enterprise Edition ซึ่งถูกออกแบบเพื่อรองรับงานระดับ Department โดยความสามารถที่ขาดหายไปจาก Enterprise Edition ก็อย่างเช่น การทำ Parallel Processing และ Function ที่เกี่ยวกับ Data Warehousing เป็นต้น
? Oracle Personal Edition จะมีความสามารถใกล้เคียงกับ Enterprise Edition เกือบทุกอย่าง เพียงแต่ว่า Edition นี้ถูกออกแบบให้ใช้งาน Database ได้เพียงแค่คนเดียว
? Oracle Lite ถูกออกแบบเพื่อให้ใช้งานกับอุปกรณ์ประเภท Mobile อย่าง Palm หรือ Windows CE เป็นต้น

Oracle Server
Oracle Database
? Data files
? Control files
? Redo log files
? Archived log files
? Parameter file
? Password file

An Oracle Database
Oracle Database คือส่วนของ Oracle Server ที่จะจัดเก็บข้อมูลต่าง ๆ ไว้ที่ storage ที่เป็นลักษณะ Persistence หรือเรียกง่าย ๆ ว่าถ้าปิดไฟฟ้าแล้วข้อมูลต้องยังอยู่ ซึ่งแน่นอนว่า Disk เป็น Storage ที่เป็นที่นิยมที่สุด กล่าวโดยสรุปก็คือ Oracle Database จะถูกจัดเก็บบน Disk ในลักษณะเป็น files โดยแบ่งเป็นประเภท ดังนี้
Data Files
คือ ส่วนในการจัดเก็บข้อมูลของระบบฐานข้อมูล ซึ่ง Data File นั้นเป็นชื่อเรียกทาง Physical ในขณะที่ทาง Logical จะเรียกว่า Tablespace โดยจะทำการตัดแบ่งไฟล์ไปจัดเก็บในหน่วยเล็กๆ ที่เรียกว่า Data blocks โดยส่วนหัวของบล็อกจะเรียกว่า Header ซึ่งจะจัดเก็บรายละเอียดของ Data Files เช่นขนาดของไฟล์ ขนาดของบล็อก พื้นที่จัดเก็บตาราง เวลาที่สร้าง เป็นต้น เมื่อมีการเปิดใช้งานข้อมูลในฐานข้อมูล ออราเคิลจะทำการตรวจสอบรายละเอียดของไฟล์ที่ส่วนหัวนี้ เพื่ออ่านข้อมูลใน Data Files มาเก็บในหน่วยความจำชั่วคราวแบบแคช ทำให้สามารถค้นหาข้อมูลได้รวดเร็วมากขึ้นซึ่งเราจะเรียกส่วนนี้ว่า Database Buffer cache
Tablespace อย่างน้อยที่สุดจะต้องมี System Tablespace ซึ่งจะทำหน้าที่เก็บ Data Dictionary ของ Database ทั้งหมด พูดให้ง่ายขึ้นก็คือเป็นข้อมูลอย่างเช่น มี tables ,user หรือ objects อื่น ๆ อะไรบ้าง ใครเป็นเจ้าของ เป็นต้น
เวลาที่เราทำงานกับฐานข้อมูลของออราเคิล เพื่อประสิทธิภาพในการทำงานที่ดี ขอแนะนำให้สร้าง Tablespace ใหม่ขึ้นมาเพื่อใช้เก็บข้อมูลของแต่ละงานแยกกัน โดยปกติถ้าเราใช้ DBCA เป็นตัวสร้าง Database ตัว DBCA จะสร้าง tablespace อื่นนอกเหนือจาก Systems Tablespace ให้เราด้วยแล้ว

Control Files
คือไบนารี่ไฟล์ซึ่งเก็บข้อมูลเกี่ยวกับระบบปฏิบัติการที่ใช้งานอยู่ชื่อฐานข้อมูล เวลาที่สร้างชื่อ Data Files และ Online Redo Log Files รวมถึง Archived Redo Log Files ด้วย ทุกครั้งที่มีการ mount ฐานข้อมูลก็จะเกิด Control File ขึ้นเพื่อระบุ Data Files และ Online Redo Log Files ที่ต้องใช้ในการทำงานของระบบฐานข้อมูล ถ้าหากมีการเปลี่ยนแปลง เช่น มีการสร้าง Data File หรือ Redo Log File ใหม่ขึ้นมาก็จะทำการบันทึกลงใน Control File ซึ่งโดยปกติแล้วควรจะแยกเก็บเป็น mirror ไว้บนฮาร์ดดิสก์คนละตัวกัน เพื่อป้องกันการ Fail ของฮาร์ดดิสก์ และเก็บเป็นไฟล์นามสกุล .con นอกจากนี้เรายังควรที่จะทำการสำเนาไฟล์นี้เอาไว้เผื่อกรณีฉุกเฉินด้วย

Online Redo Log Files
ออราเคิลจะมี Redo Log File เพื่อใช้ในการจัดเก็บการเปลี่ยนแปลงทุกอย่างที่เกิดขึ้นกับ Database เพื่อนำไว้ใช้ในกรณีที่เกิดเหตุการไม่ปกติกับ Database อย่างเช่น มีคนซนดึง plug ไฟฟ้าของเครื่องออก โดยที่ยังไม่ได้ทำการ Shutdown Database ก่อน

Archived Redo Log Files
ส่วนนี้จัดเก็บข้อมูลจาก Online Redo Log File ที่มีการจัดเก็บจนเต็มแล้ว โดยแยกเก็บในพื้นที่ภายนอก ที่สามารถขยายได้ (เนื่องจาก Online Redo Log File นั้นเมื่อบันทึกจนเต็มก็จะย้ายไปทำงานที่ตัวถัดไป จนกระทั่งทุกตัวบันทึกเต็มหมดแล้ว ก็จะกลับมาเริ่มที่ตัวแรกใหม่ ซึ่งจะเริ่มเขียนทับข้อมูลเดิม ดังนั้นออราเคิลจึงได้ทำการย้ายไปเก็ฐใน Archive Redo Log File แทน )ทำให้เราสามารถจัดเก็บข้อมูลย้อนหลังได้มากขึ้นเพื่อว่าเวลาที่เกิดปัญหาขึ้นจะได้สามารถนำ ข้อมูลกลับคืนมาได้ครบถ้วน Archived Redo log files จะเกิดขึ้นในกรณีที่ Database เรากำหนด mode เป็น ARCHIVELOG Mode ซึ่งจะทำให้เราสามารถกู้ข้อมูลกลับคืนมาได้ทั้งหมด ในกรณีที่มีปัญหาเกิดขึ้น

นอกจากนั้นจะมี file ประกอบการทำงานอีก 2 file คือ
Parameter File
ทำหน้าที่ เก็บ parameter ต่าง ๆ ข้อ Database ที่เราใช้งานซึ่งรวมไปถึงการกำหนดขนาดของ SGA และพฤติกรรมการทำงานต่าง ๆ ฉะนั้นเวลา DBA เค้าคิดจะ Tuning เจ้าตัว Database เค้าก็จะมาปรับแต่งที่ file นี้
Password File
ทำหน้าที่เก็บ user และ password ของคนที่มีสิทธิ startup และ shutdown Database ได้

Oracle Server
Memory Structure
? SGA
? Shared pool
? Library Cache
– Data Dictionary cache
– Database Buffer cache
? Redo buffer cache
? PGA
SGA
SGA(System Global Area) เป็นโครงสร้างหน่วยความจำส่วนที่สำคัญมากของ Oracle Server ซึ่งประกอบด้วย buffer cache หลายประเภทด้วยกันตามประเภทการใช้งาน ซึ่งจุดประสงค์โดยรวมก็เพื่อลดเวลาในการทำ I/O ให้มากที่สุดเพื่อประสิทธิภาพที่ดีในการทำงานกับฐานข้อมูล ภายใน SGA นั้น ประกอบด้วย buffer cache ประเภทต่าง ๆ ซึ่งในบทความนี้จะกล่าวถึงเฉพาะส่วนประกอบสำคัญๆ ดังนี้

Redo Log Buffers Cache
Redo Log Buffers Cache จะทำการบันทึก การเปลี่ยนแปลงที่เกิดขึ้นในฐานข้อมูล โดยการเปลี่ยนแปลงเหล่านี้ก็จะถูกเขียนลงไปใน Online redo log files ซึ่งการบันทึกการเปลี่ยนแปลงที่เกิดขึ้นนี้สามารถที่จะนำไปใช้ในการ roll-forwardในระหว่างที่ฐานข้อมูลกระทำการกู้ข้อมูล โดยการกระทำนี้จะเกิดขึ้นก่อนที่จะเขียนหรือบันทึกข้อมูลลงไปใน Online redo log files ขนาดของ Redo Log Buffers Cache จะสามารถตั้งค่าผ่าน LOG_BUFFER parameter ในไฟล์ init.oraได้

Database Buffer Cache
การทำสำเนาข้อมูลที่ถูกเรียกใช้จาก data files โดยจะช่วยให้การทำงานในการเรียกใช้ข้อมูลจากฐานข้อมูลมีความรวดเร็วขึ้นโดยการเก็บข้อมูลที่ถูกเรียกใช้งานเป็นประจำเอาไว้ใน Database Buffer Cache โดยสามารถใช้คำสั่ง DB_BLOCK_SIZE ในการกำหนดเนื้อที่ของ Database Buffer Cache
Shared pool
Shared pool ถูกใช้สำหรับเก็บการกระทำการของ SQL statement และ รายละเอียดต่างๆของข้อมูล ในการกำหนดขนาดของ Shared pool ใช้คำสั่ง SHARED_POOL_SIZE โดย Shared pool มีส่วนประกอบด้วยกัน 2 ส่วนคือ
1. Library Buffer Cache จะใช้สำหรับเก็บประโยคคำสั่ง SQL และ PL/SQLที่ใช้ในการทำงานโดย Library Buffer Cache ประกอบด้วย 2 โครงสร้าง คือ Shared SQL area และ Shared PL/SQL area ขนาดของ Library Buffer Cache จะขึ้นอยู่กับการกำหนดจาก Share pool
2. Data Dictionary Cache จะเก็บรวบรวมรายละเอียดต่าง ๆ ที่ใช้ในฐานข้อมูลรวมทั้งข้อมูลที่เกี่ยวกับ tables, indexes, columns, users, privileges และ object ฐานข้อมูลอื่น ๆ ขนาดของ Data Dictionary Cache จะขึ้นอยู่กับการกำหนดจาก Share pool

PGA
PGA เป็นพื้นที่ ( พื้นที่ส่วนนี้จะถูกจองเมื่อมีการ start ของ server process เกิดขึ้น )ที่อยู่ในหน่วยความจำซึ่งจะช่วย user process ในการกระทำการดังตัวอย่าง เช่น bind variable information, sort areas, cursor information และsession information ซึ่งโดยทั่วไปแล้วในการกระทำการของ SQL statements ในshared area ถูกเรียกใช้จาก Library cache แล้วคุณสงสัยไหมว่าทำไม user จึงต้องการพื้นที่ในการที่จะกระทำการเป็นของตนเอง เหตุผลก็คือ userต้องการที่จะกระทำการ select หรือ update โดยไม่มีการถูกใช้ข้อมูลร่วมกันได้ ( Shared ) เพราะฉะนั้น PGA จึงถูกใช้ในการเก็บข้อมูลจริง ๆ ในที่ซึ่งไม่มีผู้ใดสามารถมองเห็นได้ สำหรับที่จะกระทำ SQL statement

(อ้างถึง : http://diamondit.wordpress.com/)

 Postgresql คืออะไรPostgresql เป็น Object-Relational DBMS โดยสามารถใช้รูปแบบของภาษา SQL ได้เกือบทั้งหมด และสามารถใช้ subselects , transactions , user-defined types และ functions ได้ อีกทั้งเป็น Database ซึ่งให้ Source code ฟรี ด้วย

ประวัติการพัฒนา

· เป็น Project ของ Prof. Michael Stonebraker ที่ มหาวิทยาลัย Berkeley

· ซึ่งเดิมพัฒนามาจาก Ingres ซึ่งเป็นที่รู้จักในชื่อ CA-Ingres II ซึ่ง Ingres ใช้ ภาษา query , QUEL เป็นภาษาของตัวเอง ปัจจุบันได้หยุดพัฒนาไปแล้ว แต่ยังสามารถนำมาใช้ได้ฟรี

· ต่อมา Prof. Stonebraker ได้นำมาพัฒนาเป็น Postgres (มาจาก after Ingres) ซึ่งได้ใช้ภาษา query เป็น POSTQUEL เป็น Postgres version 4.2

· ต่อมาในช่วง ปี 1987 Postgres ได้เสนอ rules , procedures , time travel , extensible types และ object-relational concepts

· Postgres ถูกนำมาใช้ เพื่อการค้า ในชื่อว่า Illustra (ปัจจุบัน ถูก Informix ซื้อไป และรวมเข้าไว้ใน Universal Server)

· ต่อมา นักศึกษาปริญญาเอก 2 คน คือ Andrew Yu และ Jolly Chen ได้พัฒนา Postgres ให้ใช้ภาษา query ตามรูปแบบที่เป็นมาตราฐาน แทนที่ ภาษา POSTQUEL เดิม ซึ่งได้เผยแพร่ในปี 1995 จึงเรียกเป็น Postgres95 หรือ version 5 หลังจากนั้น การพัฒนาต่อ โดย กลุ่มพัฒนาทาง Internet

· ปัจจุบัน เปลี่ยนชื่อเป็น PostgreSQL?พัฒนาต่อเนื่องเป็น version 8.2

ลักษณะโครงสร้าง

ระบบที่ใช้ PostgreSQL? จะติดตั้ง PostgreSQL? ไว้ที่เครื่อง Server ซึ่งเป็นที่เก็บ database ด้วย และยังสามารถ ติดตั้ง PostgreSQL?ได้มากกว่า 1 ชุดใน Server เครื่องเดียว

ผู้ดูแลระบบ PostgreSQL?จะใช้ชื่อว่า postgres ซึ่งเป็นผู้ดูแลทั้ง ตัวโปรแกรม และ database ซึ่งสามารถทำงานกับบางคำสั่งเฉพาะ เพื่อจัดการ database และ ผู้ใช้บริการ (user) ซึ่ง ผู้ดูแลระบบ database (postgres) จะคล้ายการทำงานของ superuser ในระบบ Unix หน้าที่ของ postgres สามารถ สร้างชื่อ user และกำหนดสิทธิและระดับการใช้งานต่างๆได้

PostgreSQL?ใช้รูปแบบการทำงาน แบบ Client/Server ซึ่งในการทำงานจะประกอบด้วย 3 process ทำงานร่วมกัน คือ

1. Postmaster เป็น supervisory daemon process ซึ่งจัดการติดต่อระหว่าง Frontend กับ Backend process ในการ allocate share buffer , จัดการค่าเริ่มต้นต่างๆในระหว่างเริ่มทำงาน และเก็บบันทึกการเข้าใช้ระบบและความผิดพลาดต่างๆที่เกิดขึ้น

2. Postgres เป็น backend process เพื่อจัดการ database ถือว่าส่วนนี้เป็น process ที่ทำงานจริงๆ เช่น ทำงานตาม query โดย Postmaster จะสั่งให้สร้าง Backend process สำหรับทุกๆ การเชื่อมต่อกับ Frontend ดังนั้น Postgres นี้จะทำงานที่ server

3. Frontend เป็น application ซึ่งจะทำงานที่เครื่อง client และจะส่งคำสั่งการเชื่อมต่อ หรือคำสั่งต่างๆ มาที่ Postmaster แล้ว Postmaster จึงส่งต่อการทำงานไปที่ Postgres

หลักการทำงานของ PostgreSQL?

การทำงานจะแบ่ง process ที่ทำงานดังที่กล่าวมาแล้ว คือ

1. ในส่วนของ Supervisory daemon process คือ Postmaster

2. ในส่วนของ User’s Frontend application เช่น โปรแกรม psql หรือ CGI-Perl

3. และในส่วน Backend database servers คือ Postgres

· เมื่อโปรแกรม ทาง Frontend ต้องการข้อมูล หรือทำงานกับ database โดยเรียกผ่านทาง library libpq ซึ่ง library libpq นี้ จะส่ง requests ผ่านทาง Network ไปยัง Postmaster เมื่อ Postmaster ได้รับ request ดังกล่าว ทาง Postmaster จะสร้าง Backend process ขึ้นที่ server เพื่อติดต่อกับ Frontend แทน การทำงานนั้นจะเกิดขึ้นระหว่าง Frontend กับ Backend โดยไม่ผ่าน Postmaster อีก และ Postmaster ก็ทำงานต่อไป คือรอรับ request อื่นๆต่อไป

· Library libpq จะให้ หนึ่ง Frontend สามารถติดต่อได้หลาย Backend processes แต่การทำงานยังเป็นแบบ single threaded เนื่องจาก library libpq ยังไม่สามารถทำ multithreaded ได้

· ตามหลักการที่กล่าวมา ดังนั้น Postmaster กับ Backend จะต้องทำงานอยู่ที่ เครื่องเดียวกัน คือ database server แต่ Frontend จะทำงานที่เครื่องใดก็ได้

  1. กัลยา เชอหมื่อ
    กันยายน 3, 2013 ที่ 19:26

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

    • กันยายน 8, 2013 ที่ 14:53

      กำหนดสิทธิการเข้าถึงครับ อย่างน้อยต้อง 2 ระดับครับ
      – admin
      – ผู้ใช้ครับ

      และผมขอแนะนำว่า หา database ที่รองรับการเข้าใช้งานที่มีมากกว่า เพิ่ม ลบ แก้ไข ข้อมูลน่ะครับ

  2. Faisol555
    พฤศจิกายน 5, 2014 ที่ 15:57

    รบกวน ขอคำแนะนำ พอดีผมจะทำระบบการคลังวัสดุและครุภัณฑ์ ควรใช้อะไรในการทำ server และใช้ Programming อะไร ไหนการ link กับ server

    • มกราคม 22, 2015 ที่ 11:14

      ถ้าระบบขนาดใหญ่และมีเครือข่ายๆ หรือสาขาจำนวนมาก แนะนำให้เป็น Oracal รองลงมา SQL Express หรือ ถ้าฟรี Postgresql
      ถ้าขนาดไม่ใหญ่มาก ก็ mysql สะดวก เขียนง่าย เข้าใจง่าย กำลังพอเหมาะครับ แค่ config ให้สามารถรองรับข้อมูลขนาดใหญ่ นิดหน่อย รองรับได้ 1T ก็โอเคแล้วครับ

  1. No trackbacks yet.

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

%d bloggers like this: