PDA

View Full Version : ضرورت ساخت Stored Procedure



drstrike
چهارشنبه 28 تیر 1391, 15:08 عصر
سلام...
خیلی از دوستان باتجربه تاکید دارند برای کار با جداول پایگاه داده از SP استفاده کنید، در صورتی که توی محیطهای برنامه نویسی مثل RAD Studio یا Visual Studio خیلی راحت تر میشه این عملیات را انجام داد

مثلا در Visual Studio با ADO.Net خیلی راحت میشه با یه متد Insert در جداول مختلف داده درج کرد،سوای از تعداد، نوع و نام فیلدها.... اما برای ساخت SP که عمل درج رو انجام میده باید برا هر جدول یکی بنویسیم (البته تا جایی که میدونم) که این کار در تعداد جداول بالا زمان زیادی میبره

شما از کدوم حالت استفاده می کنید؟
ممنون میشم اگه نظرتون رو با ذکر دلیل بیان کنید

Galawij
چهارشنبه 28 تیر 1391, 22:30 عصر
اما برای ساخت SP که عمل درج رو انجام میده باید برا هر جدول یکی بنویسیم (البته تا جایی که میدونم) که این کار در تعداد جداول بالا زمان زیادی میبره

سلام،
لزوما قرار نیست برای هر جدول، یک روال درج داشته باشید. می تونید یک SP مرکزی داشته باشید که نام جدول را به همراه مقادیر فیلدها در قالب یک XML پاس بدید.

lastmory
چهارشنبه 28 تیر 1391, 23:05 عصر
سلام
اگر مشکلت فقط زمان بردن زیاده ، باید بگم که اینطور نیست ، با برنامه هایی که خودشون SP رو جنریت میکنن ، این کار خیلی سریع انجام میشه
من خودم از همین روش استفاده میکنم
اینجوری برنامه انعطاف پذیر تر هم میشه
و هم اینکه از لایه ها به نحو احسن و درست استفاده میشه

drstrike
پنج شنبه 29 تیر 1391, 00:01 صبح
سلام،
لزوما قرار نیست برای هر جدول، یک روال درج داشته باشید. می تونید یک SP مرکزی داشته باشید که نام جدول را به همراه مقادیر فیلدها در قالب یک XML پاس بدید.
درست، اما قضاوت با خودتون که ساخت چنین SPهایی بیشتر زمانبر هست یا زدن چند تا Next توی محیطهای IDE؟ تکنولوژی EntityFramework رو فرض کنید؛ با چندتا Next به پایگاه داده وصل میشه و برای هر جدول یک کلاس با متدها و خصلت های مربوطه رو Generate میکنه، حتی کامل تر از SP

ضمن اینکه SP برای همه RDBMSها جوابگو نیست؛ مثل MS Access


اگر مشکلت فقط زمان بردن زیاده ، باید بگم که اینطور نیست ، با برنامه هایی که خودشون SP رو جنریت میکنن ، این کار خیلی سریع انجام میشه
من خودم از همین روش استفاده میکنم
اینجوری برنامه انعطاف پذیر تر هم میشه
و هم اینکه از لایه ها به نحو احسن و درست استفاده میشه
از وجود چنین برنامه هایی اطلاع دارم. مایکروسافت یک نمونه داره (http://msdn.microsoft.com/en-us/library/bb386987.aspx)، یه نمونه هم توی امضای جناب کرامتی موجوده

دقیقا نکنه همین جاست که چطوری استنباط میشه که استفاده از SP انعطاف پذیر تر و بهتر هست؟
و اگه استفاده از SP بهتر هست ایا مایکروسافت بیماره که ORMهایی با این همه امکانات بسازه؟!

Felony
دوشنبه 02 مرداد 1391, 08:16 صبح
دقیقا نکنه همین جاست که چطوری استنباط میشه که استفاده از SP انعطاف پذیر تر و بهتر هست؟
و اگه استفاده از SP بهتر هست ایا مایکروسافت بیماره که ORMهایی با این همه امکانات بسازه؟!
بهتر هست چون با ساخت یک SP در SQL Server بعد از اولین اجرا یک Plan برای اون SP ساخته میشه و در مراجعات بعدی کل کد SP از اول اجرا نمیشه بلکه فقط پارامترها به Plan ساخته شده ارجاع داده میشه و عملیات خیلی بهنیه تر میشه ؛ مخصوصا در مواردی که مراجعات زیادی به یک SP نیاز هست ( مثلا صدا زدن SP ها به صورت تو در تو ) .

بیمار نیست ؛ مایکروسافت میخواد حرفی برای گفتن برای رقبای دیگه نزاره ؛ مایکروسافت ریزترین مورادی که ممکمنه تو یک پروژه خاص بنا به دلایلی و شرایطی خاص بهشون نیاز پیدا بشه رو در نظر میگیره تا برنامه نویس فکر اینکه از ابزار دیگه ای برای فلان کار استفاده کنه یا پیش خودش بگه اگر از فلان ابزار استفاده میکردم بهتر بود به ذهنش هم نرسه ؛ این وظیفه شما هست که بسته به نیاز و پروژتون و شرایط ، ابزار و راهکارهای مناسب رو انتخاب کنید .

baktash.n81@gmail.com
دوشنبه 02 مرداد 1391, 08:35 صبح
البته با وجود تکنولوژیهایی مثل entity framework هنوز هم کسی نمی گه SP ننویسید این تکنولوژی هم شما می تونید از روی SP هاتون متد بسازید و از اونها استفاده کنید یعنی متد ها sp ها رو فراخونی خواهند کرد ...

ASKaffash
دوشنبه 02 مرداد 1391, 12:11 عصر
سلام
اول مزایا بررسی شود بعد موارد دیگر بحث شود.
مزایای استفاده از SP :
- استقلال دستورات تعاملی با بانک از برنامه کاربردی (زبان برنامه نویسی / پلتفرم / ... موثر نیست)
- در برنامه های WinBase و تحت شبکه بسیار انعطاف پذیری برای تغییرات را افزایش میدهد
- قابلیت فقط یکبار Compile شدن توسط RDBMS
- امنیت بالاتر به خصوص در مقابله با حملات SQLInjection
......
لزوما قرار نیست همه بخش های یک نرم افزار تماما SP و یا بالعکس باشد و بسته به ضرورت میتواند ترکیبی از هردو باشد که موضوع به ابزارهای مورد استفاده در تولید نیز وابسته خواهد بود