Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

Database Wars: เปรียบเทียบ MSSQL Server, Oracle PL/SQL และ MySQL

บทนำ

มี 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 ServerOracleMySQL
LicenseCommercialCommercialOpen Source (GPL)
LanguageT-SQLPL/SQLSQL/PSM (ANSI-like)
TransactionExplicit BEGIN/COMMITImplicit per ConnectionInnoDB: ACID, Explicit COMMIT
Object OrganizationBy DatabaseBy SchemaBy Database/Schema
Best ForWindows/.NET EcosystemEnterprise, High ConcurrencyWeb Apps, Cost-sensitive