Feb 2, 2010

4:47 AM - 1 comment

Giới thiệu về stored procedure trong MySQL (P.1)

Định nghĩa stored procedure

Stored procedure được định nghĩa như một tập các khai báo sql được lưu trữ ngay trong cơ sở dữ liệu (database) và sau đó, được triệu gọi bởi một program, một trigger hay thậm chí là một stored procedure khác.

Một stored procudure, như chính định nghĩa của nó, có tính đệ qui. Hầu hết các RDMBS (Relational database management system - hệ quản trị cơ sở dữ liệu quan hệ) đều hỗ trợ stored procedure đệ qui, tuy nhiên MySql lại không hỗ trợ tốt tính năng này. Vì vậy, chú ý kiểm tra phiên bản của MySql trước khi bạn có ý định dùng stored procedure theo kiểu đệ qui.

Stored procedure trong MySQL

Hiện tại, MySql là 1 RMBSM mã nguồn mở (open source) được sử dụng rộng rãi trong cộng đồng phát triển cũng như cho mục đích thương mại. Tuy nhiên, từ “thuở sơ khai”, MySql không hỗ trợ stored procedure, trigger hay event…Từ phiên bản 5.0 trở lện, những chức năng này mới được thêm vào MySql data base engine với mục đích đem lại tính linh động và mạnh mẽ hơn cho MySQL.

Nếu hứng thú với loạt bài về stored procedure này, bạn nên cài MySQL phiên bản 5.x trên máy tính

Những ưu điểm của stored procudure

Stored procedure làm tăng khả năng thực thi của ứng dụng. Sau khi được tạo, stored procedure sẽ được biên dịch (compile) và lưu trữ ngay trong database. Lẽ dĩ nhiên, nó sẽ chạy nhanh hơn là một lệnh sql chưa compile được gởi trực tiếp từ ứng dụng.

Stored procedure làm giảm lưu lượng thông tin giao tiếp giữa ứng dụng và database server, thay vì gởi những câu lệnh sql chưa complile dài lằng ngoằn, ứng dụng chỉ việc gởi tên của stored procedure và lấy lại kết quả

Stored procedure có thể được tái sử dụng và chuyển sang bất cứ ứng dụng nào muốn sử dụng chúng. Stored procedure có thể “trưng ra” giao diện database cho tất cả các ứng dụng, vì vậy lập trình viên không cần viết lại các chức năng đã hỗ trợ sẵn trong stored procedure trong tất cả các chương trình.

Stored procedure cũng rất an toàn. Quản trị viên cơ sở dữ liệu có thể gán quyền cho ứng dụng truy xuất vào các stored procedures được chỉ định mà không cho phép truy cập đến các bảng (table) ở phía dưới.
Bên cạch những tiện lợi như trên, stored procedure vẫn có 1 số bất tiện dưới đây:

Những nhược điểm của stored procudure

Stored procedure làm cho database server phải tốn nhiều tài nguyên về cả bộ nhớ lẫn xử lý. Thay vì tập trung vào tính năng lưu trữ và nhận dữ liệu, bạn còn phải yêu cầu database server thực hiện 1 loạt các tính toán logic hay các thao tác xử lý phức tạp vốn không thuộc “sở trường” của database server.

Stored procedure chỉ chứa đựng các khai báo sql, vì vậy rất khó có thể viết 1 procedure nhằm thực hiện các thao tác xử lý phức tạp như các ngôn ngữ khác làm được ở tần ứng dụng như C#, Java, C++…

Bạn cũng không thể debug stored procedure trong hầu hết các RDMBS và trong cả MySQL. Có 1 vài cách để khắc phục nhược điểm này, tuy nhiên vẫn chưa hoàn hảo lắm.

Việc viết và bảo trì (maintain) stored procedure thường yêu cầu 1 loạt các kỹ năng chuyên biệt nhiều khi không phải là kỹ năng của lập trình viên. Điều này dẫn đến các vấn đề trong cả khía cạnh phát triển ứng dụng và bảo trì sản phẩm.

Sơ luận

Stored procedure có những thuận tiện cũng như bất lợi như đã đề cập ở trên. Khi phát triển ứng dụng, bạn nên đánh giá giữa những ưu và nhược điểm để quyết định có nên sử dụng stored procude hay không. Các tutorial tiếp theo sẽ hướng dẫn bạn cách sử dụng store procedure trong lập trình database với 1 vài ví dụ thực tế.

1 comments:

Hi Bạn,
Hiện mình cần người viết game server bằng Java/MySql. Nếu bạn hứng thú thì liên hệ với mình nhé.

tamdinh@gmail.com

Thanks,
Tâm Đinh

Post a Comment