عناوين



 اخبار


برگزیده


امنيت


مقاله


گزارش و گفتگو


ياداشت


اخبار شرکتها


همايشها



فراخوانها و آئين نامه ها


عکس و ویدئو

 
  خدمات



نسخه موبایل



خروجی پیامک



خروجی RSS



عضویت در خبرنامه ها

 

راهنما
تبليغات


 

سفارش آگهی
مقاله




لینک ثابت || اضافه شده توسط آرش کریم بیگی|| نسخه قابل چاپ || بازگشت به صفحه اصلی || آرش کریم بیگی

برای عضویت در خبرنامه پیامکی ایستنا اینجا را کلیک کنید. برای عضوریت در خبرنامه روزانه ایمیلی ایستنا؛ نشانی پست الکترونیکی خود را در فرم زیر وارد نمایید. پس از آن به صورت خودکار ایمیلی به نشانی شما ارسال میشود، برای تکمیل عضویت خود و تایید صحت نشانی پست الکترونیک وارد شده، می بایست بر روی لینکی که در این ایمیل برایتان ارسال شده کلیک نمایید. پس از آن پیامی مبنی بر تکمیل عضویت شما در خبرنامه روزانه  ایمیلی ایستنا نمایش داده میشود.

شنبه، 19 شهریورماه 1384

04:31 PM

September 10, 2005


نگاهی به امكانات نسخه جدید SQL Server 2005

  نوشته: مهیار داعی‌الحق
ناشر: ماهنامه شبکه - فروردین و اردیبهشت ۱۳۸۳ شماره 53
shabakeh-mag.com


اشاره :

عرضه شدن نسخه 2005 پایگاه داده‌ای مشهور مایكروسافت یعنی SQLServer، بازار نرم‌افزارهای بانك اطلاعاتی را به شدت تحت تأثیر خود قرار داد. امكانات گسترده‌ای كه در این نسخه جدید تعبیه شده، طراحی و پیاده‌سازی بانك‌های اطلاعاتی را سرعت بخشیده و تلفیق و انطباق آن با انواع فناوری‌های نو مانند XML وADO.NET، باعث افزایش قدرت و كارایی آن شده است. در این مقاله به برخی از ویژگی‌های جدید این برنامه نگاهی خواهیم داشت.





Snapshot Isolation Level
یكی از روش‌هایی كه به انواع متدهای قفل كردن ردیف‌های یك جدول بانك‌اطلاعاتی در نسخه جدید اضافه شده است، شیوه تصویربرداری از ركورد است. در روش‌های قبلی، اگر یك یا چند ركورد بانك اطلاعاتی توسط دستور BeginTrans كه شروع یك فرآیند را مشخص می‌كند در شرف تغییر یا حذف قرار می‌گرفتند، تا مادامی‌ كه فرآیند مذكور توسط دستور Commit Trans تأیید یا توسط RollBack منتفی نشود، از هیچ جا و برنامه‌ای نمی‌توان ركوردهای مذكور را حتی با دستور ساده SELECT خواند. اما در روش جدید قفل‌گذاری، در صورت بروز چنین رویدادی سایر كاربران می‌توانند همواره آخرین ارزش ركوردهای مذكور را با این فرض كه هنوز هیچ تغییری در آن‌ها ایجاد نشده است بخوانند و مورد استفاده قرار دهند.


باز هم دات‌نت
با نسخه جدید SQL Server، برنامه‌نویسان بانك‌های اطلاعاتی قادرند از امكانات و قابلیت‌های موجود در پلتفرم دات‌نت و كلیه توابع و كلاس‌های ساخته شده در آن بهره‌مند شوند. یكی از ابتدایی‌ترین و در عین حال اساسی‌ترین این قابلیت‌ها، امكان استفاده از دو زبان مهم و كاربرپسند دات‌نت یعنی ویژوال بیسیك و سی‌شارپ در پیاده‌سازی اجزای مختلف یك بانك‌اطلاعاتی است. این عامل نه‌تنها باعث می‌شود كه برنامه‌نویسان برای نوشتن ماژول‌هایی مثل تریگرها، روال‌ها (Stored Procedures) در توابع به جای استفاده از زبان استاندارد و در عین حال پیچیده T-SQL ، بتوانند از زبان‌های محیط دات‌نت با تمام ساختارها، دستورات، كلاس‌ها، آرایه‌ها، و خلاصه تمام ویژگی‌های یك زبان شی گرا استفاده كنند، بلكه این همكاری نزدیك بین موتور برنامه‌نویسی دات‌نت یعنی CLR (كه مسؤول تبدیل كدهای نوشته شده دات‌نت به زبان سیستم‌عامل است) و موتور بانك اطلاعاتی SQLServer باعث شده تا به غیر از تنوع زبان‌های برنامه‌نویسی قابل استفاده درSQLServer، تغییر قابل توجهی نیز در كارایی ماژول‌های مذكور پیش آید. در واقع موضوع از این قرار است كه اصولاً كدهای نوشته شده به زبان‌های دات‌نت، ابتدا توسط كامپایلر به زبان (IL) ترجمه می‌شوند. سپس CLR این كد میانی را به كد قابل فهم سیستم‌عامل تبدیل و آماده اجرا می‌نماید. این كار سبب می‌شود تا كدهای نهایی به دلیل این‌كه بسیار به سیستم‌عامل نزدیك می‌باشد سریع‌تر از كدهای TSQL (كه فقط توسط موتور بانك اطلاعاتی قابل اجرا هستند) اجرا شوند و در زمان اجرا از كارایی بیشتری برخوردار باشند. البته این مسأله بدین معنی نیست كه استفاده از زبان‌های دات‌نت همیشه بر زبان‌های SQL ارجحیت دارد، بلكه منظور آن است كه در برخی موارد ممكن است آن قدر منطق و الگوریتم یك ماژول پیچیده باشد كه برنامه‌نویس استفاده از زبان‌های دات‌نت را به دلیل آسان‌تر بودن ساختار و دستورات آن به زبان SQL ترجیح دهد. بنابراین زمانی كه بیشترعملیات یك ماژول مربوط به خواندن و نوشتن اطلاعات باشد بهتر است از همان دستورات استاندارد SQL  یعنی SELECT ،UPDATE ،DELETE وINSERT استفاده كرده و بی‌جهت منابع سیستم را صرف تعریف متغیرها و كلاس‌های دات‌نت ننماید. اما در ماژول‌هایی كه بیشتر عملیاتشان شامل پردازش اطلاعات مثل انجام عملیات‌های ریاضی یا مقایسه اطلاعات با یكدیگر است بهتر است تا هم از امكانات برنامه‌نویسی و هم از سرعت و كارایی بالای دات‌نت در این زمینه بهره برد و ماژول‌های مذكور را با زبان‌های دات‌نت پیاده‌سازی كرد.


 ADO .NET وارد می‌شود
طبق یك سنت نه‌چندان قدیمی برنامه‌نویسی در محیط ویندوز، برنامه‌نویسان SQLServer، بانك اطلاعاتی موردنظرشان را برروی سرور و برنامه كاربردی نوشته شده با زبانی مثل ویژوال بیسیك را بر روی كلاینت‌ها قرار می‌دهند. سپس از طریق این برنامه كاربردی و با استفاده از اشیایی از جنس ADO داده‌های موردنیاز خود را از سمت سرور دریافت كرده و یا به آن ارسال می‌كنند. اكنون این ارتباط به لطف نسخه جدید SQLServer و همچنین محیط دات‌نت، با امكانات جدیدADO.NET بسیار كامل‌تر از قبل شده است. این ارتباط جدید با استفاده از مكانیسمی به نام اعلان (Notification) به یك ارتباط دو‌طرفه فعال تبدیل شده به طوری كه ADO.NET قادر است پیغام‌هایی را از سمت پایگاه داده به سمت كلاینت ارسال كند. به عنوان مثال فرض كنید كه شما با استفاده ازADO تعدادی از ركوردهای یك جدول بانك اطلاعاتی را انتخاب كرده و مشغول كار برروی آن‌ها هستید. در همین هنگام كاربر دیگری از طریق كلاینت و ADO خود، ركوردی در محدوده ركوردهای مورد انتخاب شما را تغییر می‌دهد یا حذف می‌كند. در این وقت موتور پایگاه داده با ارسال پیغامی به ADO شما، این مسأله را با استفاده از فراخوانی یك رخداد (Event) شی ADO به اطلاعتان می‌رساند.
علاوه براین قابلیت جدید، فناوری جدید دیگری هم با استفاده ازADO.NET به نسخه جدید SQLServer اضافه شده و آن امكان چند پرس‌وجوی همزمان توسط یك شی ADO است. در این شیوه اگر یك شی ADO با استفاده از دستور SELECT مشغول خواندن تعدادی از ركوردهای یك جدول بانك اطلاعاتی باشد، می‌تواند بدون این‌كه منتظر به پایان رسیدن این عملیات شود، تعداد دیگری از ركوردهای یك جدول دیگر بانك اطلاعاتی را بخواند. این قابلیت جدید با نام (Multiple Active Result Set (MARS كه قبلاً فقط در كرسرهای سمت سرور (server side) و آن هم نه با كارایی بالا وجود داشت اكنون در كرسرهای سمت راست كلاینت هم وجود دارد و تفاوت عمده آن با شكل قدیمی هم علاوه بر مورد مذكور، امكان ایجاد چند كرسر در یك شی ADO به صورت همزمان است. SQLServer نسخه 2005 به خوبی از تمام این ویژگی‌ها، پشتیبانی می‌كند.


تكنولوژی XML  




اكنون كه XML به یك استاندارد ارتباطی بین سكوهای مختلف تبدیل شده است، نسخه جدید SQLServer هم از توجه كافی به آن و ایجاد یك انقلاب در ساده‌تر استفاده كردن از آن طفره نرفته است. در نسخه 2000 كاربران قادر بودند تا با استفاده از دستور FOR XML نتیجه یك پرس‌وجوی SELECT از یك بانك اطلاعاتی را به درون یك فایل XML بریزند یا مثلاً با دستور OPEN XML می‌توانستند یك فایل XML را باز كرده و شروع به خواندن دستورات درون آن نمایند.
از آن‌جا كه در نسخه جدید SQLServer توجه خاصی به این استاندارد و زبان ارتباطی شده است، یك نوع داده جدید (Data type) به انواع داده‌های قبلی و استاندارد SQL مثل int ، char و امثال آن اضافه شده است. این نوع داده جدید كه XML نام دارد و دارای خصوصیات یك نوع داده موجود در یك محیط شی‌گرا است، دارای متدهای پیشرفته‌ای چون ()nodes() ،Value() ،exist() ،query و ()modify بوده و قادر است انواع پردازش‌های قابل انجام برروی اسناد XML را به راحتی انجام دهد. عملیات جستجو، تغییر، حذف و درج مقادیر موردنظر در داخل یك فایل XML را می‌توان با استفاده از متدهای مذكور و صرفاً با چند خط برنامه‌نویسی انجام داد. همچنین در این نسخه برخلاف نسخه 2000، با استفاده از دستور FOR XML می‌توان یك شیء از جنس XML را بدون ارسال آن به كلاینت، برروی سرور ساخته و از آن نگهداری كرد. با این كار می‌توان جداولی را كه مرتباً مورد رجوع كاربران قرار می‌گیرند هراز گاهی در قالب XML به داخل حافظه آورد و كاربران مذكور به جای رجوع به جداول اصلی در هارددیسك، با استفاده از دستورات ویژه جستجو درXML ، متغیر مذكور را در حافظه سرور مورد جستجو قرار دهند و بدین‌وسیله یك نوع عمل Cache كردن را جهت افزایش سرعت دسترسی به اطلاعات تكراری شبیه‌سازی كنند. در این حالت، كاربران به جای استفاده از دستورSELECT استاندارد می‌توانند از OPEN XML كه در نسخه 2005 قادر است متغیرهای جدید از نوع XML را بخواند استفاده كرده و به سرعت به اطلاعات موردنیاز خود دسترسی پیدا كنند. این قابلیت جدید آن‌قدر در سریع‌تر كردن جستجو در برنامه‌های تحت وب مهم و مؤثر است كه جای هیچ مشكلی را در استفاده از آن باقی نمی‌گذارد.


سرویس اعلان (Notification)  
همان‌طور كه گفتیم سیستم اعلان درSQLServer قادر است پیغام‌هایی را طی زمان‌های مشخص به سمت كاربران بفرستد. مثلاً تصور كنید كه تعدادی كاربر در حال اتصال به یك بانك حاوی اطلاعات مربوط به ارزش سهام در بورس هستند. از آن‌جایی كه ممكن است قیمت سهام هر شركت یا مؤسسه برای تعدادی از كاربران از اهمیت زیادی برخوردار باشد، می‌توان این سیستم را طوری تنظیم كرد تا هرگاه ارزش سهام خاصی كه موردنظر هر كاربر است تغییر كرد، به صورت اتوماتیك به وی اعلام شود. كاربر هم می‌تواند این تغییرات را برروی برنامه كاربردی خود، تلفن همراه (در قالب Windows Messenger ،(SMS و یا ایمیل به‌صورت مرتب دریافت و مشاهده كند.


سرویس گزارش‌گیری
سرویس جدید تولید گزارش‌های متنوع در نسخه 2005 به یكی از جالب‌ترین و پركاربردترین قابلیت‌های این نسخه تبدیل شده است، وجود یك موتور گزارشگر قوی در سمت سرور و یك ابزار مناسب ساخت گزارش با واسط كاربر عالی، باعث شده تا برنامه‌نویسان بتوانند گزارش‌های موردنظر خود را با كارایی و سرعت مناسب در سمت سرور بسازند به طوری كه این گزارش‌های سمت سرور توسط هر برنامه كاربردی سمت كلاینت در هر پلتفرمی با همان امكانات اتصال به SQLServer قابل مشاهده  است.


بهبودهای ایجاد شده در زبان
در 2005 SQLServer تغییرات بسیار مثبتی در زبان SQL T  ایجاد شده است. این تغییرات در زمینه‌های مختلف مثل مدیریت خطاها، جستجوهای بازگشتی (Recursive Query) و حتی در بدنه موتور پایگاه داده‌ها انجام شده و كارایی كلی ذخیره و یا خواندن اطلاعات را به نحو مطلوبی افزایش داده است. به عنوان مثال دردستورات
TSQL، دو اپراتور جدید دیده می‌شود، كه PIVOT وUNPIVOT نام دارند. این دو اپراتور كه در قسمت FROM یك پرس‌وجو مورد استفاده قرار می‌گیرند می‌توانند نتیجه یك جستجوی انجام شده توسط دستور SELECT را به جای برگرداندن در قالب ردیف‌ها یا ركوردهای پشت‌سرهم، به صورت ستون‌های مختلف یك یا چند ركورد برگردانند. در این روش یكی از ستون‌های (فیلدهای) یك جستجو به عنوان محور معرفی شده و بقیه ستون‌ها براساس آن به صورت افقی طبقه‌بندی می‌شوند. به یك مثال توجه كنید:
SELECT CUSTOMER ID, order No
FROM orders PIVOT CustomerID



































Order No


Order No


Order No


Order No


Customer ID


 


4400


1120


25


1


 


 


 


350


2


 


 


1780


443


3


8989


2222


1980


555


4


                                              نتیجه جستجوی فوق چیزی شبیه جدول بالا‌ خواهد بود


همان‌طور كه مشاهده می‌كنید با استفاده از اپراتور مذكور، نتیجه پرس‌وجوی انجام شده به این صورت كه هر ردیف به یك شماره مشتری و چندین شماره سفارش مربوطه به آن مشتری در قالب ستون‌های مختلف است، در می‌آید. این همان چیزی است كه سال‌ها درSQLServer وجود نداشت و ابزارهای مختلف گزارش‌سازی مثل CrystalReport آن را با نام Cross Tab به كاربران خود ارایه می‌دادند. در همین رابطه اپراتورUNPIVOT هم عمل عكس اپراتور مذكور را انجام می‌دهد.
اپراتور دیگری كه می‌تواند نقش مهمی را در دستورات SQL بازی كند APPLY نام دارد كه در قسمت FROM یك دستور SQL به كار می‌رود. با استفاده از این دستور می‌توان خروجی یك تابع (Function) را با یك یا چند جدول دیگر تركیب (Join) كرد همان‌طور كه می‌دانید در 2005  SQLServer توابع می‌توانند یك یا چند ردیف یك جدول اطلاعاتی را برگردانند كه این خروجی می‌تواند با یك جدول دیگر با استفاده از اپراتور مذكور تركیب شود.

مدیریت خطا
در نسخه‌های قدیمی SQLServer برای كشف و مدیریت خطا از سیستم Error Handling استفاده می‌شد. این شیوه كشف خطا كه در زبانی مثل ویژوال بیسیك 6 هم مورد استفاده قرار می‌گرفت با استفاده از دستور GOTO  می‌توانست كنترل و خط اجرای روال را از یك محل به محل دیگر و در واقع از محل بروز خطا به محل مدیریت و آشكار كردن (Raise) آن ببرد و بدین‌وسیله پیغام خطایی را به كار نشان دهد. نسخه جدید SQLServer با تأثیر از پلتفرم دات‌نت، از دستورات ویژه كشف و مدیریت خطا با عنوان Exception Handling استفاده می‌كند. این روش با استفاده از دستورات جدید TRY/CATCH شیوه بهتری از مدیریت خطا را به اجرا می‌گذارد. در این روش برخلاف روش قبل، تمام خطاهای اتفاق‌افتادنی مثل خطاهای مربوط به تبدیل داده‌ها به یكدیگر (DataConversion) به خوبی مدیریت شده و از بروز خطاهایی كه منجر به اتمام ناقص عملیات یك روال یا تریگر می‌شود جلوگیری به عمل می‌آید.

پی‌نوشت:
اطلاعات بیشتر درباره این نرم‌افزار (از جمله چند دموی Flash) را می‌توانید از این نشانی بدست آورید.


فهرست آخرین عناوین

 
    تبليغات  
 







 
  سفارش آگهی