Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cuộc chiến cơ sở dữ liệu: MSSQL Server, Oracle PL/SQL và MySQL


Với nhiều lựa chọn RDBMS, cần hiểu sự khác biệt của 3 hệ thống hàng đầu: Microsoft SQL Server, Oracle PL/SQL, MySQL. RDBMS trở thành xương sống ngành công nghiệp từ thập niên 1980. MS SQL Server và Oracle là phần mềm thương mại, MySQL là mã nguồn mở.

Oracle ra mắt RDBMS thương mại đầu tiên vào năm 1980. Microsoft gia nhập giữa thập niên 1990 với SQL Server. MySQL phát hành 1995, phiên bản Windows 1998. Năm 2008 được Sun mua, sau đó Oracle mua Sun.

Ngôn ngữ - Trái tim giao tiếp

Tất cả dùng biến thể SQL. MS SQL Server dùng T-SQL (mở rộng từ Sybase). Oracle dùng PL/SQL (Procedural Language/SQL). Hai "phương ngữ" này khác nhau về cú pháp, biến, stored procedure, hàm built-in. PL/SQL gom procedure thành package (T-SQL không làm được). PL/SQL phức tạp hơn nhưng mạnh hơn, T-SQL đơn giản, dễ triển khai.

MySQL dùng phiên bản nhẹ của T-SQL và ngôn ngữ thủ tục gần SQL/PSM. Stored code của MySQL gần chuẩn ANSI nhưng không sâu rộng như T-SQL.

Kiểm soát giao dịch (Transaction Control)

Giao dịch là nhóm thao tác thực hiện như một đơn vị (all-or-nothing).

  • MS SQL Server: Mặc định tự commit từng lệnh. Cần BEGIN TRANSACTION để nhóm, COMMIT để ghi đĩa, ROLLBACK để hủy trong khối transaction. Sau COMMIT không thể rollback nữa.
  • Oracle: Mỗi kết nối mới là một transaction mới. Thay đổi chỉ ở bộ nhớ/cache cho đến khi COMMIT rõ ràng. Linh hoạt hơn, kiểm soát lỗi tốt hơn.
  • MySQL: Hỗ trợ transaction qua engine InnoDB (mặc định). Tuân thủ ACID, hỗ trợ foreign key.

Tổ chức đối tượng cơ sở dữ liệu

  • MS SQL Server: Tổ chức theo tên database. User gán login, cấp quyền per database. Mỗi database có file đĩa riêng.
  • Oracle: Nhóm theo schema (cấu trúc con của đối tượng DB). Đối tượng chia sẻ giữa schema/user. Quyền hạn định nghĩa per user/schema/table.

Tóm lại, MySQL, Oracle, SQL Server đều là RDBMS mạnh. Dù khác nhau "dưới capo", có thể dùng tương đương cho mục đích khác nhau. Mục đích giống nhau, triển khai khác nhau.