Sep 24, 2011
115 Views

Tại sao tôi lại được khuyến cáo không sử dụng TRIGGER và PROCEDURE của MySQL?

Written by

Do đặc thù của php-mysql cũng có , do sự thay đổi trong việc thiết kế phần mềm cũng có .
Ứng dụng viết bằng php-mysql chia làm 3 loại :
– Ứng dụng viết sắn để cho-bán dùng chạy trên các shared hosting như (wordpress,vbb,smf,phpbb,openx ….)
– Ứng dụng viết cho một khách hàng cụ thể . (có thẻ viết chay  , trên 1 FW nào đó – nhưng không phải là 1 ứng dụng sẵn có được customize)
– Ứng dụng do các công ty internet tự build để phục vụ cho chính họ (FB , yahoo, zing ..).

Như vậy loại 1 chạy trên shared hosting cần : tương thích (php4-5, mysql 4-5), dễ cài cắm , dễ upgrade , chỉnh sửa mã … Nên sẽ nói không với những thứ nhì nhằng trong DB .

Loại 2 là loại có thể xuất hiện những thứ nhì nhằng này . Nhưng do học theo 1 , và việc các FW xuất hiện nhiều , nên TRIGGER & PROCEDURE cũng không xuất hiện mấy ở loại 2 .

Loại 3 là loại mình không biết chắc là họ có dùng không . Nhưng về lý thuết các ứng dụng cần scale out sẽ không dại gì mà làm phức tạp tầng DB (vì DB dc replication ra nhiều node ) .

Còn nguyên nhân trong việc thiết kế phần mêm . Theo mô hình 3 tier , chúng ta sẽ có : data tier ,business tier ,present tier . Nếu để sử xuất hiện của
TRIGGER & PROCEDURE thành thử ra data tier sẽ chịu trách nhiệm làm business ? Khi phát triển các ứng dụng trên PHP và MySQL, các bác nhà ta thường chuẩn bị tư thế sẵn sàng cho việc … vì lý do nào đó, thay đổi cơ sở dữ liệu sử dụng (từ MySQL sang Oracle chẳng hạn). Code tất cả các tính năng trong PHP giảm được sự phức tạp cho việc chuyển đổi này. Vì thế, MySQL chỉ được coi là thùng chứa dữ liệu, chứ các tính năng xử lý dựng sẵn không được coi trọng. Xử lý bằng PHP, về sau hệ thống cần phải chịu tải lớn, cần phải tối ưu hóa một số đoạn, việc refactor lại code sẽ dễ sàng hơn.

Không thể phủ nhận TRIGGER & PROCEDURE tiện dụng với 1 app khi app đó có db admin . Họ có thể thay đổi business của app với 1 vài PROCEDURE hay TRIGGER , nhưng nó không tốt về lâu dài với app , nó chỉ hũu dụng trong 1 vài thời điểm của app .

Giả sử chính sách thuế thay đổi , tác động đến phải thay đổi % thuế phải nộp VAT ,
Nếu dùng trigger DB admin sẽ không phải thay đổi code app , anh ta chỉ cần tạo 1 cái trigger là xong  . Nhưng đó là khi có DB admin , và anh ta chấp nhận vất vả nếu app thay đổi , anh ta sẽ phải điểu chỉnh lại db , ví dụ app cập nhật theo chính sách thế mới , anh ta sẽ phải xúa cái trigger kia đi , trước khi app cập nhật và chạy .

Còn nhiều nguyên nhân khác nữa khiến TRIGGER & PROCEDURE chỉ được sử dụng trong một số ít trường hợp . Tuy nhiên nguyên nhân chính là do bản thân php-mysql và do app design

i-php info

 

Article Tags:
· · ·
Article Categories:
Code/Web
    http://linholiver.com

    https://linholiver.com/diary/about/