บทนำ
มี RDBMS (Relational Database Management Systems) หลายตัวในตลาด ทำให้ยากที่จะเลือก บทความนี้สำรวจประวัติและฟีเจอร์ของ 3 ตัวใหญ่:
- Microsoft SQL Server (Commercial)
- Oracle Database (Commercial)
- MySQL (Open Source)
ประวัติย่อ
- Oracle: รีลีส RDBMS แรกสำหรับเชิงพาณิชย์ในทศวรรษ 1980
- Microsoft SQL Server: เข้าตลาดกลางทศวรรษ 1990 แข่งกับ Oracle
- MySQL: เปิดตัว 1995, Windows Version 1998, ถูก Sun ซื้อ 2008 แล้ว Oracle ซื้อ Sun
ภาษา Query (Heart of Communication)
Microsoft SQL Server: T-SQL (Transact-SQL)
- Extension ของ SQL พัฒนาโดย Sybase ใช้โดย Microsoft
- Syntax และ Capabilities แตกต่างจากมาตรฐานเล็กน้อย
- ง่ายต่อการ Implement
Oracle: PL/SQL (Procedural Language/SQL)
- Complex และ Powerful มากกว่า
- รองรับ Packages (จัดกลุ่ม Procedures ได้) - T-SQL ไม่มี
- จัดการ Variables, Stored Procedures, Built-in Functions แตกต่างจาก T-SQL
MySQL: Light-weight T-SQL + SQL/PSM
- Stored Code Objects ใกล้เคียง ANSI Standards
- แต่ไม่ลึก/กว้างเท่า T-SQL หรือ PL/SQL
Transaction Control
MS SQL Server: Auto-commit by Default
- แต่ละคำสั่ง Commit เองอัตโนมัติ → ยากที่จะ Rollback หาก Error
- ต้องใช้
BEGIN TRANSACTION...COMMIT/ROLLBACKเพื่อจัดกลุ่ม
Oracle: Implicit Transaction per Connection
- Connection ใหม่ = Transaction ใหม่
- เปลี่ยนแปลงอยู่ใน Memory/Cache จนกว่าจะ
COMMITตรงๆ - ยืดหยุ่นกว่า ควบคุม Error ได้ดีกว่า
MySQL: InnoDB Engine (Default)
- ACID-compliant Transactions
- รองรับ Foreign Keys
- พฤติกรรมใกล้ Oracle (ต้อง COMMIT ตรงๆ)
การจัดระเบียบ Database Objects
MS SQL Server: จัดกลุ่มตาม Database Name
- Tables, Views, Procedures อยู่ภายใต้ Database
- User → Login → Database Access
- แต่ละ Database มีไฟล์ดิสก์ส่วนตัว (Private, Unshared)
Oracle: จัดกลุ่มตาม Schema
- Schema = Subset ของ Database Objects
- Objects แชร์กันทั้ง Schema/Users
- ควบคุมสิทธิ์ด้วย Roles/Permissions ต่อ Schema/Table
MySQL: Database = Schema (คำว่า Schema และ Database ใช้แทนกันได้)
- โครงสร้างเรียบง่าย ใกล้เคียง MS SQL Server
- ควบคุมสิทธิ์ระดับ Table/Column/Procedure
สรุป
ทั้งสามตัว: MySQL, Oracle, SQL Server เป็น RDBMS อันทรงพลัง 雖然有 "under the hood" 差異, 但大致可互換使用。各有優勢, 適用不同環境和目的。
| ด้านเปรียบเทียบ | MS SQL Server | Oracle | MySQL |
|---|---|---|---|
| License | Commercial | Commercial | Open Source (GPL) |
| Language | T-SQL | PL/SQL | SQL/PSM (ANSI-like) |
| Transaction | Explicit BEGIN/COMMIT | Implicit per Connection | InnoDB: ACID, Explicit COMMIT |
| Object Organization | By Database | By Schema | By Database/Schema |
| Best For | Windows/.NET Ecosystem | Enterprise, High Concurrency | Web Apps, Cost-sensitive |