(توضیح: این مطلب را در پاسخ یکی از دوستان که پرسش را مطرح کرده بود نوشتم.)

PSM چیست؟

SQL: Structured Query Language زبانی استاندارد برای انجام عملیات خاص و روشن و از پیش تعریف شده بر روی بانک های اطلاعاتی (Database) است. مجموعه دستورات DML و DDL از جمله دستورات استاندارد و اصلی SQL می باشند که در کل به عنوان DSL شناخته می شوند. (Domain Specific Language)


SQL Data Manipulation Language (DML)
SQL (Structured Query Language) is a syntax for executing queries. But the SQL language also includes a syntax to update, insert, and delete records.
These query and update commands together form the Data Manipulation Language (DML) part of SQL:
SELECT - extracts data from a database table
UPDATE - updates data in a database table
DELETE - deletes data from a database table
INSERT INTO - inserts new data into a database table

SQL Data Definition Language (DDL)
The Data Definition Language (DDL) part of SQL permits database tables to be created or deleted. We can also define indexes (keys), specify links between tables, and impose constraints between database tables.
The most important DDL statements in SQL are:
CREATE TABLE - creates a new database table
ALTER TABLE - alters (changes) a database table
DROP TABLE - deletes a database table
CREATE INDEX - creates an index (search key)
DROP INDEX - deletes an index


ولی این دستورات همه نیازها را در کار با بانک های اطلاعاتی پوشش نمی دهد. ما علاوه بر کارهای روشن و صریح، به رویه ها و پروسه ها هم نیازمندیم.

برای رفع این نقیصه در زبان SQL استاندارد، از سال 1996 قسمتی به زبان SQL اضافه شد که به PSM: Persistent Stored Module شناخته می شوند.

با افزوده شدن PSM به SQL، امکان انجام عملیات رویه ای و پروسه ای (Procedural) در اختیار کاربران این زبان قرار گرفت.

به این مجموعه دستورات در محیط های مختلف و بانک های مختلف، اسامی مختلفی نسبت داده شده است. مثلا در Oracle به این مجموعه دستورات، PL/SQL: Procedural Language/Structured Query Language گفته می شود.

PSM شامل دستوراتی نظیر CALL, SET, LOOP, LEAVE, WHILE, REPEAT و شرط ها (If ... Then ... Else) و حلقه ها می باشد.

با بهره گیری از PSM می توان Stored Procedure ها (روال های ذخیره شده) و همچنین Trigger ها (ماشه - ترجمه استاد روحانی رانکوهی) را ایجاد کرد.


از فواید و مزایای PSM می توان به موارد زیر اشاره کرد:

- قراردادن Business Logic برنامه در قالب Stored Procedure ها در Database
که این کار باعث بالا رفتن Performance کلی برنامه می شود

- محفوظ کردن Business Logic
اگر Business Logic توسط PSM در Database پوشش داده شود، با تغییر زبان برنامه نویسی، نیازی به بازنویسی قواعد نخواهد بود.

- بالا بردن کارایی
استفاده از Stored Procedure ها در سطح Database باعث افزایش سرعت اجرای دستورات Business Logic می شود و در نهایت این امر باعث بالارفتن سرعت اجرای برنامه می شود. همچنین وقتی که برای بار دوم یک Stored Procedure اجرا می شود، دیگر نیازی به تفسیر مجدد کد نیست و از تفسیر پیشین استفاده می شود و این امر نیز مجددا باعث بهبود کارایی اجرای Stored Procedure ها می شود.

- صرفه جویی در زمان و هزینه
با استفاده مجدد از Stored Procedure هایی که یک بار ایجاد کرده ایم در برنامه های مختلف، باعث بالابردن سرعت برنامه نویسی می شویم. همچنین استفاده از Stored Procedure ها باعث می شود که کدهای برنامه خواناتر باشند و عیب یابی آنها با سرعت و سهولت بیشتری انجام گیرد.



موضوعات مشابه: