سه شنبه, ۹ بهمن, ۱۴۰۳ / 28 January, 2025
مجله ویستا

با SQL Server ۲۰۰۵ بیشتر آشنا شوید


با SQL Server ۲۰۰۵ بیشتر آشنا شوید

یکی از روش هایی که به انواع متدهای قفل کردن ردیف های یک جدول بانک اطلاعاتی در نسخه جدید اضافه شده است شیوه تصویر برداری از رکورد است

● Snapshot lsolation level

یکی از روش هایی که به انواع متدهای قفل کردن ردیف های یک جدول بانک اطلاعاتی در نسخه جدید اضافه شده است شیوه تصویر برداری از رکورد است. در روش های قبلی،اگر یک یا چند رکورد بانک اطلاعاتی توسط دستور Begitn Trans که شروع یک فرآیند را مشخص می کند در شرف تغییر یا حذف قرار می گرفتند،تا مادامی که فرآیند مذکور توسط دستور Commit Trans تایید یا توسط ROLLBack منتفی نشود،از هیچ جا و برنامه ای نمی توان رکوردهای مذکور را حتی با دستور ساده SELECT خواند. اما در روش جدید قفل گذاری در صورت بروز چنین رویدادی سایر کاربران می توانند همواره آخرین ارزش رکوردهای مذکور را با این فرض که هنوز هیچ تغییری در آن ها ایجاد نشده است بخوانند و مورد استفاده قرار دهند.

● باز هم دات نت

با نسخه جدید SQL Server ،برنامه نویسان بانک های اطلاعاتی قادرند از امکانات و قابلیت های موجود در پلتفرم دات نت و کلیه توابع و کلاس های ساخته شده در آن بهره مند شوند. یکی از ابتدایی ترین و در عین حال اساسی ترین این قابلیت ها،امکان استفاده از دو زبان مهم و کاربر پسند دات نت یعنی ویژوال بیسیک و سی شارپ در پیاده سازی اجزای مختلف یک بانک اطلاعاتی است. این عامل نه تنها باعث می شود که برنامه نویسان برای نوشتن ماژول هایی مثل تریگرها،روال ها(Stored procedures ) در توابع به جای استفاده از زبان استاندارد و در عین حال پیچیده T-SQL ،بتوانند از زبان های محیط دات نت با تمام ساختارها،دستورات،کلاس ها،آرایه ها،و خلاصه تمام ویژگی های یک زبان شی گرا استفاده کنند،بلکه این همکاری نزدیک بین موتور برنامه نویسی دات نت یعنی CLR (مسئول تبدیل کدهای نوشته شده دات نت به زبان سیستم عامل است) و موتور بانک اطلاعاتی SQL Server باعث شده تا به غیر از تنوع زبان های برنامه نویسی قابل استفاده در SQL Server ،تغییر قابل توجهی نیز در کارآیی ماژول های مذکور پیش آید. در واقع موضوع از این قرار است که اصولا” کدهای نوشته شده به زبان های دات نت، ابتدا توسط کامپایلر به زبان (IL ) ترجمه می شوند. سپس CLR این کد میانی را به کد قابل فهم سیستم عامل تبدیل و آماده اجرا می نماید. این کار سبب می شود تا کدهای نهایی به دلیل این بسیار به سیستم عامل نزدیک می باشد سریع تر از کدهای TSQL (که فقط توسط موتور بانک اطلاعاتی قابل اجرا هستند )اجرا شوند و در زمان اجرا از کارایی بیشتری برخوردار باشند. البته این مساله بدین معنی نیست که استفاده از زبان های دات نت همیشه بر زبان های SQL ارجحیت دارد،بلکه منظور آن است که در برخی موارد ممکن است آن قدر منطق و الگوریتم یک ماژول پیچیده باشد که برنامه نویس استفاده از زبان های دات نت را به دلیل آسان تر بودن ساختار و دستورات آن به زبان SQL ترجیح دهد. بنابراین زمانی که بیشتر عملیات یک ماژول مربوط به خواندن و نوشتن اطلاعات باشد بهتر است از همان دستورات استاندارد SQL یعنی DELETE,UPDATE,SELECR و INSERT استفاده کرده و بی جهت منابع سیستم را صرف تعریف متغیرها و کلاس های دات نت ننماید. اما در ماژول هایی که بیشتر عملیاتشان شامل پردازش اطلاعات مثل انجام عملیات های ریاضی یا مقا یسه اطلاعات با یکدیگر است بهتر است تا هم از امکانات برنامه نویسی و هم از سرعت و کارایی بالای دات نت در این زمینه بهره برد و ماژول های مذکور را با زبان های دات نت پیاده سازی کرد.

● ADO.NET وارد می شود

طبق یک سنت نه چندان قدیمی برنامه نویسی در محیط ویندوز،برنامه نویسان SQL Server بانک اطلاعاتی مورد نظرشان را بروی سرور و برنامه کاربردی نوشته شده با زبانی مثل ویژوال بیسیک را بر روی کلاینت ها قرار می دهند. سپس از طریق این برنامه کاربردی و با استفاده ا زاشیای از جنس ADO داده های مورد نیاز خود را از سمت سرور دریافت کرده و یا به آن ارسال می کنند. اکنون این ارتباط به لطف نسخه جدید SQL Server و همچنین محیط دات نت با امکانات جدید ADO.NET بسیار کامل تر از قبل شده است. این ارتباط جدید با استفاده از مکانیسمی به نام اعلان (Notification ) به یک ارتباط دو طرفه فعال تبدیل شده به طوری که ADD.NET قادر است پیغام هایی را از سمت پایگاه داده به سمت کلاینت ارسال کند. به عنوان مثال فرض کنید که شما با استفاده از ADO تعدادی از رکوردهای یک جدول بانک اطلاعاتی را انتخاب کرده و مشغول کار بر روی آن ها هستید. در همین هنگام کاربر دیگری از طریق کلاینت و ADO خود،رکوردی در محدوده رکوردهای مورد انتخاب شما را تغییر می دهد یا حذف می کند. در این وقت موتور پایگاه داده با ارسال پیغامی به ADO شما،این مساله را با استفاده از فراخوانی یک رخداد (Event ) شی ADO به اطلاعاتی می رساند. علاوه بر این قابلیت جدید،فناوری جدید دیگری هم با استفاده از ADO.NET به نسخه جدید SQL.Server اضافه شده و آن امکان چند پرس و جوی همزمان توسط یک شی ADO است. در این شیوه اگر یک شی ADO با استفاده از دستور SELECT مشغول خواندن تعدادی از رکوردهای یک جدول بانک اطلاعاتی باشد،می تواند بدون این که منتظر به پایان رسیدن این عملیات شود،تعداد دیگری از رکوردهای یک جدول دیگر بانک اطلاعاتی را بخواند. این قابلیت جدید با نام (MARS ) Multiple Active Result Set که قبلا” در کرسرهای سمت سرور (Server side ) و آن هم نه با کارایی بالا وجود داشت اکنون در کرسرهای سمت راست کلاینت هم وجود دارد و تفاوت عمده آن با شکل قدیمی هم علاوه بر مورد مذکور امکان ایجاد چند کرسر در یک شی ADO به صورت همزمان است SQL.Server . نسخه ۲۰۰۵ به خوبی از تمام این ویژگی ها،پشتیبانی می کند.

● تکنولوژی XML

اکنون که XML به یک استاندارد ارتباطی بین سکوهای مختلف تبدیل شده است،نسخه جدید SQL Server هم از توجه کافی به آن و ایجاد یک انقلاب در ساده تر استفاده کردن از آن طفره نرفته است. در نسخه ۲۰۰۰ کاربران قادر بودند تا با استفاده از دستور FOR XML نتیجه یک پرس و جوی SELECT از یک بانک اطلاعاتی را به درون یک فایل XML را باز کرده و شروع به خواندن دستورات آن نمایند. از آن جا که در نسخه جدید SQL Server توجه خاصی بهاین استاندارد و زبان ارتباطی شده است.یک نوع داده جدید (Date type ) به انواع داده های قبلی و استاندارد SQL مثل Char,int و امثال آن اضافه شده است. این نوع داده جدید که XML نام دارد و دارای خصوصیات یک نوع داده موجود در یک محیط شی گرا است،دارای متدهای پیشرفته ای چون () guery ،() exist ،() value ،()nodes ،() modify بوده و قادر است انواع پردازش های قابل انجام بر روی اسناد XML را به راحتی انجام دهد. عملیات جستجو ،تغییر، حذف و درج مقادیر مورد نظر در داخل یک فایل XML را می توان با استفاده از متدهای مذکور و صرفا” با چند خط برنامه نویسی انجام داد. همچنین در این نسخه برخلاف نسخه ۲۰۰۰ ،با استفاده از دستور FOR XML می توان یک شی از جنس XML را بدون ارسال آن به کلاینت،بر روی سرور ساخته و از آن نگهداری کرد. با این کار می توان جداولی را که مرتبا” مورد رجوع کاربران قرار می گیرند هر از گاهی در قالب XML به داخل حافظه آورد و کاربران مذکور به جای رجوع به جداول اصلی در هارد دیسک،با استفاده از دستورات ویژه جستجو در XML ،متغیر مذکور را در حافظه سرور مورد جستجو قرار دهند و بدین وسیله یک نوع عمل Cache کردن را جهت افزایش سرعت دسترسی به اطلاعات تکراری شبیه سازی کنند. در این حالت،کاربران به جای استفاده از دستور SELECT استاندارد می توانند از OPEN XML که در نسخه ۲۰۰۵ قادر است متغیرهای جدید از نوع XML را بخواند استفاده کرده و به سرعت به اطلاعات مورد نیاز خود دسترسی پیدا کنند. این قابلیت جدید آن قدر در سریع تر کردن جستجو در برنامه های تحت وب مهم و موثر است که جای هیچ مشکلی را در استفاده از آن باقی نمی گذارد.

● سرویس اعلان (Notification )

همان طور که گفتیم سیستم اعلان در SQL Server قادر است پیغام هایی را طی زمان های مشخص به سمت کاربران بفرستد. مثلا” تصور کنید که تعدادی کاربر در حال اتصال به یک بانک حاوی اطلاعات مربوط به ارزش سهام در بورس هستند. از آن جایی که ممکن است قیمت سهام هر شرکت یا موسسه برای تعدادی از کاربران از اهمیت زیادی برخوردار باشد،می توان این سیستم را طوری تنظیم کرد تا هر گاه ارزش سهام خاصی ک مورد نظر هر کاربر است تغییر کرد،به صورت اتوماتیک به وی اعلام شود. کاربر هم می تواند این تغییرات را بر روی برنامه کاربردی خود،تلفن همراه(ئر قالب SMS )،Windows Messenger و یا ایمیل به صورت مرتب دریافت و مشاهده کند.

● سرویس گزارش گیری

سرویس جدید تولید گزارش های متنوع در نسخه ۲۰۰۵ به یکی از جالب ترین و پرکاربرد ترین قابلیت های این نسخه تبدیل شده است،وجود یک موتور گزارشگر قوی در سمت سرور و یک ابزار مناسب ساخت گزارش با واسط کاربر عالی،باعث شده تا برنامه نویسان بتوانند گزارش های مورد نظر خود را با کارایی و سرعت مناسب در سمت سرور بسازند به طوری که این گزارش های سمت سرور توسط هر برنامه کاربردی سمت کلانیت در هر پلتفرمی با همان امکانات اتصال به SQL Server قابل مشاهده است.

● بهبودهای ایجاد شده در زبان

در SQL Server ۲۰۰۵ تغییرات بسیار مثبتی در زبان SQL T ایجاد شده است. این تغییرات در زمینه های مختلف مثل مدیریت خطاها،جستجوهای بازگشتی (Recursive Query ) و حتی در بدنه موتور پایگاه داده ها انجام شده و کارایی کلی ذخیره و یا خواندن اطلاعات را به نحو مطلوبی افزایش داده است. به عنوان مثال در دستورات TSQL ،دو اپراتور جدید دیده می شود که PIVOT و UNPIVOT نام دارند. این دو اپراتور که در قسمت FROM یک پرس وجو مورد استفاده قرار می گیرند می توانند نتیجه یک جستجوی انجام شده توسط دستور SELECT را به جای برگرداندن در قالب ردیف ها یا رکوردهای پشت سر هم،به صورت ستون های مختلف یک یا چند رکورد برگردانند. در این روش یکی از ستون های فیلدهای یک جستجو به عنوان محور معرفی شده و بقیه ستون ها بر اساس آن به صورت افقی طبقه بندی می شوند. به یک مثال توجه کنید:

SELECT CUSTOMER ID, Order NO FROM Orders PIVOT Customer ID

Order NO Order NO Order NO Order NO Customer ID

۴۴۰۰ ۱۱۲۰ ۲۵ ۱

۳۵۰ ۲

۱۷۸۰ ۴۴۳ ۳

۸۹۸۹ ۲۲۲۲ ۱۹۸۰ ۵۵۵ ۴