تبليغاتX
پروژه های ASP.NET(بر پایه سی شارپ)
ارسال ایمیل در Asp.NET 1 و Asp.NET 2 پنجشنبه بیست و سوم آبان 1387 10:48

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

بنابراین بنده نحوه ارسال ایمیل در Asp.NET 1 و Asp.NET 2 را جداگانه توضیح خواهم داد:

برای ارسال ایمیل در دات نت 1  ابتدا فضا نام System.Web.Mail را وارد صفحه کرده » imports system.Web.mail

و سپس از کد زیر استفاده کنید :

        Dim objmail As New MailMessage

        objmail.From = mfrom

        objmail.To = mto

        objmail.Subject = subject

        objmail.BodyEncoding = System.Text.Encoding.UTF8

        objmail.Body = htmltext

        objmail.BodyFormat = MailFormat.Text

        SmtpMail.SmtpServer = mailserver

 

        objmail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", mailserver)

        objmail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", 25)       

        objmail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 1)

        objmail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", mfrom)

        objmail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", pass)

 

        Try

            SmtpMail.Send(objmail)

        Catch ex As Exception

 

        End Try

حال کافیست به جای مقادیر mfrom آدرس ایمیل ارسال کننده ، به جای mto آدرس ایمیل گیرنده ، به جای subject موضوع ایمیل، به جای Htmltext متن نامه ، به جای mailserver آدرس smtp server که معمولا mail.yoursite.com هست (در صورتی که از میل سرور اطلاعی ندارید از مدیر هاست سوال کنید) و به جای pass پسوورد ایمیل خود را وارد کنید .
 
ارسال ایمیل در دات نت 2 کمی تفاوت کرده است  :
برای اینکار ابتدا فضا نام System.Net.Mail را وارد صفحه کرده » imports system.net.mail

سپس از کد های زیر استفاده کنید :
 

        Dim obj As New SmtpClient

        Dim Mailmsg As New MailMessage

        Mailmsg.To.Clear()

 

        Mailmsg.To.Add(New MailAddress(mto))

        Mailmsg.From = New MailAddress(mfrom)

        Mailmsg.Subject = subject

        Mailmsg.BodyEncoding = System.Text.Encoding.UTF8

        Mailmsg.IsBodyHtml = True

        obj.Host = mailserver

        Dim basicAuthenticationInfo As New System.Net.NetworkCredential(mfrom, pass)

 

        obj.UseDefaultCredentials = False

 

        obj.Credentials = basicAuthenticationInfo

 

        Mailmsg.Body = htmltext

        Mailmsg.IsBodyHtml = True

        Try

            obj.Send(Mailmsg)

        Catch ex As Exception

 

        End Try

 
حالا کافیست به جای مقادیر mfrom آدرس ایمیل  ارسال کننده ، به جای mto آدرس ایمیل گیرنده ، به جای subject موضوع ایمیل، به جای Htmltext متن نامه، به جای mailserver آدرس smtp server که معمولا mail.yoursite.com هست و به جای pass پسوورد ایمیل ارسال کننده را وارد کنید .
نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

کتاب کامل و جامع آموزشی asp.net یکشنبه نوزدهم آبان 1387 12:45
دانلود یک کتاب آموزشی asp.net برای شما

این کتاب رو تو دو بخش گذاشتم که راحت بتونین داونلودش کنین. به صورت فایل اجرایی هم زیپش کردم که نیاز به برنامه خاصی برای آنزیپش نداشته باشین.

انجام پروژه های ASP.NET در تمامی سطوح, 09131253620

لینک های دانلود:

-  
[   ] Apress......Professional.Oct.2005.part1.exe 7.1M  
[   ] Apress....to.Professional.Oct.2005.part2.rar 5.7M  

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

معرفی بانک های اطلاعاتی رایگان و اوپن سورس

5 01 2008

امروزه در عصر فناوری اطلاعات جنبش های فراوانی برای حذف “کاغذ” از جریان زندگی و کار انسان ها شکل گرفته و همچنان به صورت کاملاً جدی و سریع در کشورهای پیشرفته و کمی کندتر در کشورهای در حال توسعه ادامه دارد. در عصر امروز، فقط نگهداری اطلاعات مهم نیست بلکه بازیابی، ایمن سازی، جستجو، پشتیبان گیری، انتقال، انجام محساسبات، ایجاد گزارش های دلخواه و … معنی جدیدی پیدا کرده اند. از آنجا که امروزه اطلاعات با استفاده از کامپیوتر مورد پردازش قرار می گیرد، نرم افزارهای بانک اطلاعاتی یا Databaseها از اهمیت بسیار زیادی برخوردارند. رد پای بانک های اطلاعاتی را می توانید در نرم افزارهای مختلف و حتی وب سایت های معمولی و ساده نیز مشاهده کنید. استفاده از این نرم افزارها بسیار گشترش یافته و به همین میزان امکانات و ابزارهای ایجاد بانک های اطلاعاتی افزایش و پیشرفت چشمگیری داشته اند.

تعدد نرم افزارهای مدیریت بانک های اطلاعاتی از یکسو باعث پیشرفت این رشته شده است و از طرفی موجبات سردرگمی مشتریان و کاربران بانک های اطلاعاتی را فراهم نموده. شرکت های نرم افزاری بزرگی همچون Microsoft و Oracle سیستم های مدیریت بانک اطلاعاتی قدرتمند و بسیار گرانی عرضه کرده اند که هر کدام ویژگی ها و خصوصیات منحصر به فردی دارند.

همان طور که می دانید در ایران به علت فقدان قانون کپی رایت و امکان خرید قانونی نرم افزارهای بین المللی، استفاده از نرم افزارهای غیرقانونی رواج زیادی یافته است. در این مقاله قصد دارم نرم افزارهای رایگان و اوپن سورس برای ایجاد و مدیریت بانک های اطلاعاتی را معرفی کنم. توجه داشته باشید که در اینجا تعدادی از این نرم افزارها به نسبت معروفیت و کاربرد معرفی شده اند.

بانک های اطلاعاتی اوپن سورس

FlashFiler : موتور بانک اطلاعاتی Client/Server که با استفاده از دلفی توسعه یافته است.

H2 Database Engine : یک موتور بانک اطلاعاتی جاوا که SQL استاندارد و JDBC API را پشتیبانی می کند.

MySQL : سرویس دهنده بانک اطلاعاتی معروف و شناختhttp://www.ukoln.ac.uk/web-focus/events/workshops/webmaster-2004/talks/rahtz/html/mysql.pngه شده، چند کاربره، انعطاف پذیر و قدرتمند که نسخه های مختلفی تحت سیستم عامل های ویندوز، سولاریس، لینوکس، FreeBSD، AIX، SunOS و … عرضه کرده است. بسیاری از سروس دهنده های وب هاستینگ این سیستم بانک اطلاعاتی را به شما پیشنهاد خواهند کرد. همچنین MySQL در ایران طرفداران و کاربران زیادی دارد.

HSQLDB : سیستم بانک اطلاعاتی رابطه ای بسیار سریع و کوچک که کاملاً با جاوا پیاده سازی شده است.

Perst : بانک اطلاعاتی شیء گرا برای استفاده در جاوا و دات نت.

DataReel : یک سیستم cross-platform برای ایجاد بانک های اطلاعاتی چند خطی و نرم افزارهای ارتباطی که برنامه های تحت این سیستم به راحتی در تمامی سیستم عامل های موجو قابل اجرا و پیاده سازی می باشند.

Apache Derby : یک سیستم بانک اطلاعاتی رابطه ای که کاملاً با جاوا ایجاد شده است.

PostgreSQL : یک سیستم مدیریت بانک اطلاعاتی رابطه ای کاملاً حرفه ای با پشتیبانی از تمامی قابلیت های زبان SQL، تراکنش ها، توابع تعریف شده توسط کاربر. قابلیت اجرا در سیستم عامل های بر مبنای یونیکس مثل انواع توزیع های لینوکس و FreeBSD.http://www.vitavoom.com/images/PostgreSQL_logo.png

IBM’s Cloudscape : سیستم بانک اطلاعاتی رایگان، اوپن سورس و بسیار کوچک IBM که کاملاً با استفاده از جاوا طراحی و پیاده سازی شده است. این یانک اطلاعاتی روی تمامی سیستم عامل هایی که Java Virtual Machine روی آن ها نصب می باشد، اجرا خواهد شد.

Firebrid : یک سیستم بانک اطلاعاتی رابطه ای برای لینوکس، ویندوز و توزیع های مختلف تحت یونیکس که بر مبنای Interbase طراحی و توسعه یافته است.

B-Tree Filer : یک سیستم بانک اطلاعاتی بر مبنای فایل (File-based) که با استفاده از محیط Borland Delphi طراحی و پیاده سازی شده است و قادر به ایجاد دیتابیس های نسبتاً سریع می باشد. دیتابیس هایی که با این نرم افزار ساخته می شوند به هیچ ابزار جانبی از قبیل BDE و یا DLLهای third-party وابسته نیستند و توزیع آن ها روی سیستم های کاربران به راحتی کپی کردن فایل های معمولی امکان پذیر خواهد بود.

Berkeley DB : این سیستم بانک اطلاعاتی شامل ابزارهای جهت ایجاد دیتابیس هایی توکار در نرم افزارهای دسکتاپ و سرور با کارائی بسیار بالاست. دارا بودن استانداردهای یک سیستم بانک اطلاعاتی رابطه ای، قابلیت Hashing رکوردها، رکوردhttp://www.oracle.com/technology/products/berkeley-db/images/berkeley-db-logo.gifهای ثابت و با طول متغیر، صف بندی ، مدیریت تراکنش ها و پشتیبان گیری از دیتابیس ها به صورت آنلاین از قابلیت های این سیستم به شمار می روند. پشتیبانی از API های زبان های برنامه نوبسی C, C++, JAVA, Tcl, Perl و Python و قابلیت اجرا روی ویندوزهای 95/98/NT/2000 ، لینوکس و بسیاری از توزیع های بر مبنای Unix. کاملاً رایگان برای استفاده های غیرتجاری یا استفاده در نرم افزارهای اوپن سورس.

SQLLite* : یک Library کوچک، کم حجم و پرقدرت به زبان C که قادر به ایجاد بانک های اطلاعاتی توکار در نرم افزارهاست. بر خلاف سیستم های مدیریت بانک های اطلاعاتی Client\Server، موتور بانک اطلاعاتی SQLLite تنها یک کتابخانه است که با اتصال به برنامه های مختلف، جزئی  از آن برنامه ها می شود. نرم افزارهای معروفی همچون Firefox, Google Gears, Ruby on Rails از SQLLite به صورت توکار استفاده می کنند.

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

اطلاعات خود را در مورد بانكهاي اطلاعاتي بهينه كنيد
پنج شنبه,24 آذر 1383 (تعداد دفعات خوانده شده:3571)

منبع:از مجله علم الكترونيك وكامپيوتر شماره 322

بعضي از متخصصان و فروشندگان تكنولوژي ادعا مي كنند كه سيستم هاي مديريت بانكهاي اطلاعاتي (DBMS) به يك سري كالا تبديل شده اند كه هيچ نوآوري در آنها صورت نمي گيرد و يا اگر هم نوآوري صورت گيرد، كاملا بي ربط است .
اين افراد در اشتباه به سر مي برند . چون نه تكامل در DBMS متوقف شده و نه همه DBMS ها شبيه هم شده اند . به ويژه ، فروشندگان اصلي DBMSهاي رابطه اي به دنبال تمايزات تكنيكي در سه حيطه مهم هستند.
1- پردازش تحليلي كم هزينه : فروشندگان DBMS بهينه سازي هاي جستجوي (query) خود را اغزايش مي دهند تا بخش اعظمي از بار موجود بر دوش مديران بانكهاي اطلاعاتي را كم كرده و همچنين عملكرد جستجوي خود را مستقيما بالا برند . آنها سعي دارند تا سرعت پردازش را نيز بالا برند.
2-پردازش تحليلي Real Time(بلادرنگ): در بعضي موارد،چنين پيشرفت هايي كپي كردن تحليل ها را مستقيما از يك بانك اطلاعاتي توليد عملي مي سازد و به ميزان قابل توجهي تحليل بلادرنگ را آسان مي سازد. اين امر،مخصوصا در CRMكه قيمت گذاري مخصوص مشتريان و در دسترس قراردادن محصول تاييد شده را ممكن سازد ، اهميت دارد. همچنين تحليل هاي بلادرنگ در بعضي از برنامه هاي اجرايي اززنجيره هاي توليد، لجستيك و تحليل ريسك سهام مقرون به صرفه است .
3- انواع داده هاي غير رابطه اي : انواع داده هاي تخصصي در بسياري از برنامه هاي اجرايي مهم تلقي مي شود . مثلا دادهاي جغرافيايي در بازار يابي ، اكتشاف معدن و امنيت داخلي كشور يا داده هاي ژنوميك در پروژهشات دارويي . داده هاي موضوعي در بخش اعظمي از برنامه هاي اجرايي اسنادي و پژوهشي كاربرد دارد و در ميان گروهي از برنامه هاي اجرايي جديد بر مبناي XML، بخش كوچك اما مهمي از آن، ذخيره واقعي داده هاي XML بستگي دارد .
اكثر اين تمايزات ارتباط تنگاتنگي با بهينه سازي جستجويي يعني مغز DBMS رابطه اي ، دارد. هرنوع پيشرفت در نحوه پردازش جستجو در DBML- مثلا تقارن بيشتر كهيك نوع شاخص جديد يا يك نوع داده جديد است – بايد به وسيله بهينه ساز درك شود، يا در غير اينصورت DBML نمي تواند از آن استفاده كند.
تمام بهينه سازها به طور يكسان ايجاد نمي شوند ، و درك اين مسئله كه يك بهينه سازبه خصوص چه كاري مي كند و چه كاري نمي كند ، ديد زيادي درمورد قابليت هاي كاي DBML ها فراهم مي كند . بنابراين براي درك تفاوت هاي بين انواع مختلف DBML اندكي اطلاعات در مورد نحوه عملكرد بهينه سازها مفيد خواهد بود .
بهينه ساز در هر جستجو ، تعيين مي كند كه كدام شاخص و ستون جدول بايد خوانده و مرتبط شود ، چه نوع ارتباطي بايد به كار رود و اينكه اين ارتباطات بايد به چه ترتيبي انجام شوند . بهينه سازهاي جستجوي مدرن همه بر مبناي هزينه هر عمليات را در مسير منطقي هر جستجو تخمين زده و در مجموع آنها را با هم جمع كرده و در آخر كم هزينه ترين مسير را انتخاب مي كند.
متاسفانه چنين برآوردهايي كامل نبوده و بنابراين معمولا بهينه سازها در پيدا كردن بهترين طرح جستجو ناموفق هستند . به همين علت مديران بانكهاي اطلاعاتي بايد كد SQL يا پارامترهاي بهينه سازرابه صورت دستي بهينه نمايند كه اين كار بسيار دشوار است . در پاسخ به چنين مشكلي فروشندگان LBMS سعي مي كنند كه به پيشرفت هايي در زمينه يافتن و اصلاح كردن جستجو هاي نيمه بهينه شده ، برسند . در شيوه مهم ديگر كمك به مديران بانكهاي اطلاعاتي ، بهينه سازها براي معرفي شاخص هاي جديد و روش هاي تطبيق داده ، به كار گرفته مي شوند.

صريح ترين مزيت بهينه سازهاي پيشرفته ، جستجوهاي سريع ترو هزينه هاي كمتر مديران DBML است . اما اهميت شيوه هاي دسترسي پيشرفته كه به وسيله بهينه سازها فراهم مي شود نيز كمتر از اهميت مزيت مذكور نيست . در ابتدا هر پيشرفت كه هزينه پردازش تحليلي را كم مي كند، به هوش اضافه شده به بهينه ساز بستگي دارد كه موارد زيادي ازقبيل وجو دارد ، مثلا DBML هاي بالا به پايين ( top-end) پرشده اند از Bitmapها ، شاخص هاي star-schema و پشتيباني بيشتر جستجو هاي پيچيده data-warehouse style .
مهمترين مسئله در طي زمان materialized view است كه شركت هاي بي ام ، اوراكل و مايكروسافت پشتيبان آنها هستند . materialized view همان نتايج از پيش محاسبه شده جستجو هستند كه در جداول واقعي ذخيره شده و معمولا بر اساس يك برنامه بلادرنگ به روز مي شوند. در اصل materialized view مي تواند از جستجوي تحليلي كار آمد در بانكهاي اطلاعاتي پردازشي معاملات به صورت آن لاين در مدت زمان تقريبا كوتاه پشتيباني كند كه البته اين كار بدون برجاي گذاشتن اثرات منفي بربرنامه كاربردي OLTP يا كپي مجدد يا مخفي شدن داده هاي معاملاتي زيرين انجام مي شود. هر چند كاربردشايع آنها به بهينه سازي بستگي دارد كه حداقل مي تواندviewهايي را كه ايجاد شده اند تشخيص داده و يا در صورت بهتر viewهاي جديد رادر زمان مناسب ايجاد نمايند .
حمايت از داده هاي نوع غير رابطه اي به ميزان زيادي به بهينه سازها بستگي دارد . هر روش جديد دسترسي ، به تكنيك هاي شاخص گذاري خودش متكي است كه معمولا با تكنيك هايي كه داده هاي رابطه قراردادي استفاده مي شود، بسيار متفاوت است . درست انتخاب و مرتبط كردن ايننوع داده ها مستلزم اين است كه بهينه ساز يك مدل مناسب هزينه براي شاخصي كه قبلا نا آشنا بوده داشته باشد . شركت هاي آي بي ام و اوراكل قابليت هايي را فراهم مي كنند كه چنين مدل هايي هزينه را تعريف مي كند و در اين بين مدل هاي شركت اوراكل انعطاف پذير و جامع تر است .
احتمالاتمامي شركت هاي بزرگ از بعضي از قابليت هاي DBMS پيشرفته بهره مند هستند .
تطبيق آسان تر، پردازش تحليلي سريعتر و يا پشتيباني از داده هاي نوع غير رابطه اي جزو مزاياي احتمالي چنين DBMSهايي هستند. خوشبختانه مشخصه هاي ويژه اي كه شما مي توانيد به بهترين نحو از آن استفاده كنيد ، در اين نوع DBMS كه سازمان شما ترجيح داده است اجرا مي شود و اگر هم نشد ، ممكن است تمايل به داشته باشيد كه به صورت انتخابي چنين مشخصاتي رادر رساننده هاي DBMS جستجو كنيد . درهردومورد فوق بهتر است كه اندكي وقت صرف جستجو در پيشرفت هاي تكنولوژي بانكهاي اطلاعاتي نماييد و براي اين كار مي توانيد كار خود رابا جستجو در زمينه بهينه سازها شروع كنيد.

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

تحلیل و طراحی پایگاه داده ها (بانک های اطلاعات)

 بانکهای اطلاعاتی جدا از اینکه یر روی سایتهای اینترنتی باشند یا قسمتی از یک نرم افزار تک کاربره یا بخشی از یک سیستم نرم افزاری روی شبکه محلی، نیازمند تحلیل و طراحی دقیق هستند. بانکهای اطلاعاتی بر خلاف آنچه در چند سال اخیر در برخی اذهان رواج یافته، نه تنها یک بحث پیش پا افتاده و ساده نیست، که بحثی بسیار فنی و دارای نکات و جزئیات بسیار زیاد است. طراحی یک پایگاه داده برای نگهداری مثلاً 1000 رکورد، شاید اینگونه باشد. 1000 رکورد اطلاعاتی اصلاً نیازی به بانک اطلاعاتی یا پایگاه داده ندارد. آنچه مهم است، هنگامی است که داده های پویا و بسیار زیاد شما نیاز به ذخیره سازی، نمایش، گزارشگیری و تحلیل دارند.

در چنین وضعیتی، سپردن طراحی پایگاه داده ها یا بانک اطلاعات (چه برای سایت اینترنتی و چه برای نرم افزارهای شما) به دست کسانی که علم و تجربه کافی در این زمینه ندارند مطمئناً بزرگترین اشنباه شماست. اشتباهی که تصحیح آن در طول زمان، مستلزم صرف هزینه های مالی و زمانی بسیار زیادی خواهد شد و چه بسا کل پروژه را دچار مشکل سازد و نیاز به از نو نویسی سیستم را بعنوان تنها راه ممکن پیش روی شما قرار دهد.

یکی از اصلی ترین فعالیتهای من از سال 1378 تحلیل و طراحی بیش از 40 پایگاه داده برای نرم افزارهای بزرگ و سایتهای معتبر مختلف بوده است. نمونه های مختلفی از طراحی و تحلیلها را می توانید در چند مورد از بعنوان نمونه مشاهده نمایید :

طراحی پایگاه داده های نرم افزارهایی مانند سیستم سنجش و ارزشیابی آموزشی مجتمع فرهنگی آموزشی علامه طباطبایی و مرکز سنجش علمی آزمون هم راه با بیش از 400.000.000 رکورد اطلاعات، سیستم فروش و حسابداری صنایع غذایی نیلو (با بیش از 40.000.000 رکورد اطلاعات مالی و انبارداری و حسابداری)، پایگاه داده های نرم افزار حسابداری یکپارچه (با بیش از 300.000.000 رکورد اطلاعاتی نزد مشتریان مختلف این نرم افزار)، پایگاه داده های نرم افزار حسابداری سه سطحی با بیش از 130.000.000 رکورد، بخش VB و ASP همین سایت و .... نیز نمونه هایی از طراحی و آنالیز پایگاه داده ها است که توسط اینجانب به تنهایی یا در برخی موارد بعنوان عضوی از تیم طراحی و پیاده سازی شرکت منظومه انجام داده ام نمونه ای از فعالیتهای اینجانب در زمینه آنالیز، طراحی و پیاده سازی پایگاه داده ها (بانک های اطلاعات) است.

 

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

MySQL 5.0، بزرگترين رويداد دنياي Open Source دوشنبه سیزدهم آبان 1387 19:22
MySQL 5.0، بزرگترين رويداد دنياي Open Source

سرويس خبر ماهنامه شبکه
چهارشنبه 16 دي 1383


ديتابيس‌هاي Open Source همچون MySQL، Ingres و PostgreSQL به سرعت در حال پيشرفت هستند و با توجه به صرفه‌ي اقتصادي آنها، به نظر مي‌رسد در آينده‌اي نزديك، سهم بيشتري از بازار را در اختيار بگيرند.


قرار است شركت  MySQL در اواخر ژانويه، نسخه‌ي بتاي MySQL 5.0 را منتشر كند. به گفته‌ي كارشناسان شركت مذكور، اين ديتابيس در سطح Enterprise تهيه شده و امكاناتي نظير Store Procedures و triggers را دارا مي‌باشد.
چندي پيش نسخه‌ي آلفاي اين محصول در اختيار كاربران قرار گرفت و انتظار مي‌رود به فاصله‌ي چند ماه بعد از انتشار نسخه‌ي بتا، نسخه‌ي نهايي آن نيز در اختيار علاقمندان قرار گيرد.
قرار بود نسخه‌ي نهايي برنامه‌ي MySQL 5.0 در اواخر سال گذشته، منتشر شود كه به دلايل مختلفي اين زمان به تعويق افتاد. سخنگوي اين شركت، ضمن خودداري از بيان دلايل اين تاخير، تاريخ دقيقي را نيز براي انتشار آن؛ ذكر نكرد. او در ادامه افزود : كيفيت اين برنامه به قدري بالا است كه مطمئنا بعد از انتشار، همه را شگفت‌زده خواهد كرد.
نويل ياهانا، يكي از كارشناسان سرشناس در امور ديتا بيس، در اين باره مي‌گويد : انتشار MySQL 5.0، بدون شك يكي از مهمترين رويداد‌هاي دنياي Open Source محسوب مي‌شود. او در ادامه مي‌گويد : MySQL 5.0 امكاناتي نظير triggers، Procedures، views و ... دارد كه آن‌را از ساير ديتا‌بيس‌هاي مشابه، متمايز مي‌كند.
نويل يوهانا معتقد است : ديتابيس‌هاي Open Source همچون MySQL، Ingres و PostgreSQL به سرعت در حال پيشرفت هستند و با توجه به صرفه‌ي اقتصادي آنها، به نظر مي‌رسد در آينده‌اي نزديك، سهم بيشتري از بازار را در اختيار بگيرند. در حال حاضر ديتابيس‌هاي Open Source در دو سطح Easy  و Enterprise منتشر مي‌شوند.
نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

مديريت پايگاه داده ها در SQL server - قسمت دوم : نظارت بر عملكرد سيستم

مهيار داعي‌الحق
ماهنامه شبکه - مهر ۱۳۸۳ شماره 47

اشاره :

قسمت اول اين مقاله به بحث پيرامون ايجاد نسخه‌هاي پشتيبان (Back up) از يك بانك اطلاعاتي مي‌پرداخت. در اين قسمت قصد داريم موضوع مهم نظارت يا مانيتورينگ عملكرد سيستم و كاربران در SQL Server كه يكي از وظايف مديريت سيستم در جهت كشف ايرادات آن است را بررسي كنيم.


يكي از اساسي‌ترين كارهايي كه بعد از پياده‌سازي يك بانك اطلاعاتي و در حين استفاده كاربران از آن بايد صورت گيرد، نظارت دقيق بر رفتار سيستم و بررسي واكنش‌هايي است كه آن بانك اطلاعاتي در شرايط خاص و ضمن استفاده‌هاي متنوع كاربران مختلف از خود نشان مي‌دهد. بنابراين اين نظارت دايمي بايد طبق اصول خاص و يك برنامه منظم و با استفاده از امكاناتي كه بانك اطلاعاتي در اختيار مديريت سيستم قرار مي‌دهد انجام گيرد تا از بروز مشكلات احتمالي جلوگيري به عمل آيد. اين مشكلات به طور كلي به سه دسته عمده  كُند شدن سرعت جستجو در سيستم (Query performance problem) ،كم شدن تعداد فرايندهاي قابل اجرا در  واحد زمان (Transactions  Throughput problem) ،كاهش كارايي سيستم در اثر افزايش كاربران و تداخل كارهاي آن‌ها در يكديگر ( Concurrent users problem) تقسيم مي‌شود. براي اين منظور در SQLerver ابزارهاي خاصي براي مانيتورينگ سيستم درنظر گرفته شده تا مدير سيستم بتواند به موقع نقاط ضعف سيستم (از لحاظ نرم‌افزاري يا سخت‌افزاري) را شناسايي كرده و قبل از اين‌كه سيستم را دچار بحران نمايد يا اين‌‌كه كار به گله‌مند شدن كاربران بيانجامد با مشورت طراحان، برنامه‌نويسان و مسؤولين شبكه راه‌حل مناسبي براي آن مشكل پيدا كند. در صورت كشف مشكل مذكور، ايجاد تغييراتي در روابط منطقي يا فيزيكي جداول بانك اطلاعاتي توسط طراحان بانك، بهينه‌سازي كدهاي برنامه‌نويسي شده و رفع نقاط ضعف آن توسط برنامه‌نويسان و ارتقاي سخت‌افزار شبكه و سرور بانك اطلاعاتي توسط مسؤولين شبكه مي‌تواند راهگشاي بسياري از اين نوع معضلات به حساب آيد. در SQL Server يك ابزار مناسب براي مانيتورينگ يك بانك اطلاعاتي وجود دارد كه در اين‌جا به معرفي آن مي‌پردازيم.

SQL Server Profiler
اين ابزار در واقع برنامه‌اي است كه قادر به اشكال‌زدايي دستورات SQL مي‌باشد. هر نوع دستور SQL كه به تنهايي يا از داخل يك برنامه يا از طرف يك روال ذخيره شده (Stroed Procedvre) و يا هر جاي ديگر اجرا شود توسط اين برنامه شناسايي و ثبت مي‌شود. سپس برنامه مذكور عمل تجزيه وتحليل خود را بر روي اين دستور SQL انجام داده و نتايج آن را به مدير سيستم نمايش مي‌دهد.

نحوه كار برنامه
برنامه پروفايلر ليستي از رخدادهايي را كه قادر به تعقيب آن‌ها است در اختيار كاربر قرار مي‌دهد. اين رخدادها پس از انتخاب كاربر در درون يك صف (Queue) قرار گرفته و هرگاه يكي از رخدادها به وقوع بپيوندد، پروفايلر شرح كاملي از جزييات آن را در يك فايل جهت گزارشي به مدير سيستم، ثبت مي‌كند. اين عمليات تعقيب كه در پروفايلر به آنTrace گفته مي‌شود كاملاً توسط كاربر قابل تنظيم است.
رخدادهاي قابل تعقيب توسط پروفايلر به انواع مختلفي تقسيم‌بندي مي‌شوند كه در قسمت Events از منويWewTrace يعني زماني‌كه كاربر قصد تعريف يك تعقيب جديد را دارد، مشاهده مي‌شوند.

1- Cursors 
اين مجموعه رخدادهاي مربوط به اتفاقاتي است كه باعث ايجاد شدن، مورد استفاده قرار گرفتن و حذف شدن يك دسته ركوردهاي اطلاعاتي از يك يا چند جدول مي‌شود. همان‌طور كه مي‌دانيد در SQL Server مي‌توان با استفاده از دستور SELECT تعدادي از جداول بانك اطلاعاتي را با هم لينك كرده و مجموعه ركوردهاي اطلاعاتي مربوطه را در يك گروه به نام كرسر قرار داد (همان چيزي كه در زبان‌هاي برنامه‌نويسي مثل ويژوال بيسيك به آن Recordset گفته مي‌شود) هر عملي كه باعث ايجاد شدن يا هر نوع عمليات ديگر بر روي يك كرسر شود مي‌تواند مورد تعقيب پروفايلر قرار گرفته و ثبت شود.

2- Data Base 
اين مجموعه از رخدادها مربوط به فايل‌هاي داده‌اي يك بانك اطلاعاتي است. هر تغييري كه در ساير فايل‌هاي داده‌اي و فايل‌هاي لاگ يك بانك ايجاد شود در اين مجموعه قرار مي‌گيرد.

3- Errors and Warning 
مقام پيام‌هاي خطا و هشدار كه در زمان اجراي دستورات SQL  يا در زمان كامپايل و اجراي SPها و يا Triggerها به كاربر داده مي‌شود و همچنين خطاهاي مربوط به OLE DB در اين گروه قرار مي‌گيرد.

4- Locks  
اين گروه از رخدادها، بيشتر زماني مورد استفاده قرار مي‌گيرد كه يك برنامه كاربردي در قفل كردن و آزاد كردن ركوردهاي جداول بانك اطلاعاتي دچار ضعف و اشتباه مي‌شود.
همان‌طور كه مي‌دانيد بسياري از برنامه‌هاي كاربردي در مقاطع زماني خاص اقدام به قفل كردن يك يا چند جدول اطلاعاتي مي‌كنند كه اين كار و همچنين آزاد كردن آن جداول بايد با حساسيت و دقت خاصي انجام شود تا در كار بقيه كاربران اخلال ايجاد نكند اما متأسفانه بسياري از اين نوع برنامه‌ها خصوصاً برنامه‌هايي كه قدمت چنداني ندارند اغلب از اين لحاظ دچار بي‌دقتي و ضعف زيادي هستند.

5- Scans  
هر عملي كه در حافظه اصلي تخصيص داده شده به SQL server  قابل دستيابي باشد در اين دسته قرار مي‌گيرد. به‌خصوص عمليات مربوط به Cache كه در داخل موتور بانك اطلاعاتي انجام مي‌شود جزو اين دسته محسوب مي‌شوند.

6- Stored procedveres 
شامل كليه وقايعي كه ممكن است براي يك روال رخ دهد مي‌باشد. كامپايل، فراخواني، شروع اجرا، وضعيت در حال اجرا، پايان اجرا، همگي از جمله رخدادهاي قابل وقوع در اين دسته مي‌باشند.

7- TSQL 
اين نوع رخدادها شامل كليه وقايعي است كه باعث اجراي هر يك از دستورات زبان TSQL  به صورت تكي يا دسته‌اي (Batch) مي‌شود. دستورات SELECT ،Insert ،UpdATE ، DELETE و ... هر كدام آغاز و پاياني مشخص با نتايج معين در يك بانك اطلاعاتي دارند كه مي‌توانند به وسيله اين نوع رخداد مورد بررسي قرار گيرند.

8- Transaction   

شكل 1

در اين دسته، كليه وقايع مربوط به فرآيند از جمله شروع (BEGIN) تأييد
 (Commit) و بازگشت (Roll Back) قرار مي‌گيرند. هر فرآيند شامل چند دستور SQL  مي‌باشد كه يا بايد همگي بدون اشكال اجرا شوند و يا اين‌كه هيچكدام اجرا نگردند.
اهميت فرآيند و استفاده مناسب از آن‌ها در يك بانك اطلاعاتي و برنامه كاربردي مربوط به آن جاي هيچ‌گونه ترديدي را براي وجود ابزاري جهت ثبت و مانيتورينگ وقايع  باقي نمي‌گذارد. لذا اين دسته از رخدادها همانند رخدادهاي SQL يكي از پركاربردترين رخدادها قلمداد مي‌شوند.

9- Session 
اين دسته از وقايع شامل كليه رخدادهاي مربوط به اتصال كاربران به بانك اطلاعاتي (login) و خروج از آن (logout) يا قطع اتصال در اثر بروز هر عاملي (Disconnect) مي‌باشد و براي كنترل و رفع ايراد ورود و خروج كاربران به سيستم مورد استفاده قرار مي‌گيرد.

اجراي آزمايشي يك Trace 

شكل 2

براي شروع، مي‌خواهيم يك تعقيب آزمايشي براي ثبت برخي رخدادهاي قابل وقوع در سيستم با استفاده از پروفايلر بسازيم. براي اين‌كار برنامه Profiler را اجرا كرده و منوي New Trace را كليك مي‌كنيم تا ليستي از وقايع قابل ثبت كه آن‌ها را در قسمت قبل شرح داديم ظاهر شود. در قسمت General كافي است يك نام براي Trace  موردنظر انتخاب كرده و سپس يك مسير براي درج فايل حاوي لاگ رخدادهاي مذكور، به پروفايلر معرفي كنيم. لازم به ذكر است كه پروفايلر قادر است به جاي يك فايل، لاگ‌هاي توليد شده را در يكي از جداول همان بانك اطلاعاتي ذخيره كند. همچنين اگر مايل باشيد كه هيچ لاگي براي شما ثبت نشود، پروفايلر مي‌تواند صرفاً لاگ‌ها را در قالب يك پنجره در داخل خود برنامه به صورت يك ليست به شما نشان دهد (شكل 1).

در ضمن در داخل همين پنجره مي‌توانيد يك الگوي پيش‌ساخته را كه قبلاً توسط خودتان يا ديگران تنظيم شده مورد استفاده قرار دهيد تا در قسمت بعد كه مي‌خواهيد رخدادها را از داخل ليست انتخاب نماييد دچار مشكل نشويد. البته برنامه پروفايلر به صورت پيش‌فرض الگوي استاندارد خودش براي نظارت بر عملكرد كاربران و موتور پايگاه داده را به نام SQL Profilerstandard به شما پيشنهاد مي‌كند كه كافي است با قبول كردن آن به زبانه Events برويد. در آن‌جا طبق الگوي مذكور، يك سري از رخدادها از داخل ليست سمت چپ به صورت اتوماتيك انتخاب شده و جهت لاگ شدن در ليست سمت راست قرار مي‌گيرد، علاوه براي اين‌كه شما هم مي‌توانيد با استفاده از دو كليدAdd  و Remove رخدادهاي موردنظر خودتان را جهت لاگ شدن به ليست سمت راست، اضافه يا كم كنيد (شكل 2).

شكل 3

در اين‌جا فرض بر اين است كه قصد ما ساختن يك  Trace براي كنترل و نظارت بر دستورات SQL در حال اجرا توسط كاربر مدير سيستم يعني sa مي‌باشد بنابراين كافيست صرفاً مجموعه زير گروه TSQL را در ليست سمت راست نگه داريم و بقيه را با كليد Remove به سر جاي خود يعني ليست سمت چپ برگردانم.

در قسمت بعد بايد ستون‌هاي مورد استفاده لاگ را مشخص كنيم. با اين كار پروفايلر اطلاعات مربوط به لاگ‌هاي توليد شده را به شكل مناسبي كه ما مي‌خواهيم توليد مي‌كند اين انتخاب در زبانه Data Coloumns  قابل تنظيم است. به عنوان مثال ستون TextData متن عبارت SQL در حال اجرا را نشان مي‌دهد يا اين‌كه ستون Application  نام برنامه كاربردي كه اين دستور SQL  از طرف آن برنامه، اجرا شده را مشخص مي‌نمايد. بهتر است در اين مرحله كليه ستون‌هاي پيش‌فرض انتخاب شده توسط پروفايلر را قبول كرده و به مرحله آخر يعني فيلتر كردن اطلاعات برسيم (شكل 3).


شكل 4

در زبانه فيلتر (Filter) امكان محدود كردن نمايش اطلاعات لاگ شده (منظور رديف‌هاي آن اطلاعات است) به كاربر داده مي‌شود. به عنوان مثال چون هدف ما صرفاً نمايش دستورات SQL اجرا شده توسط كاربر sa است، به همين دليل يك فيلتر بر روي ستون User DataBase تعريف كرده و قسمت like آن را به كلمه sa انتساب مي‌دهيم. حتي اگر باز هم قصد محدودتر كردن گزارش را داشته باشيد مي‌توانيد روي ستون‌هاي ديگر هم فيلتر بگذاريد. مثلاً براي اين‌كه صرفاً دستورات DELETE كاربر مذكور به شما نشان داده شود مي‌توانيد در همين جا علاوه بر فيلتر قبل، يك فيلتر جديد بر روي ستون Text Data تعريف كرده و عبارت LIKE  آن را به كلمه DELETE منتسب كنيد (شكل 4).

پس از طي مراحل فوق، اكنون نوبت به اجراي Trace مذكور مي‌رسد اين‌كار از طريق كليك بر روي دكمه Run انجام مي‌گيرد. بلافاصله يك پنجره جديد حاوي ستون‌هايي كه ما در قسمت Coloumns انتخاب كرده بوديم نمايش داده مي‌شود. اين ليست بعد از انجام هر دستور SQL كه شرايط موردنظر ما در قسمت Filter برآورده كند به روز
(Refresh)  مي‌شود و كليه دستورات مذكور را به ترتيب زمان انجام، در درون ليست قرار مي‌دهد (شكل 5).
 

شكل 5

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

نگاهي به امكانات نسخه جديد SQL Server 2005 دوشنبه سیزدهم آبان 1387 19:19
نگاهي به امكانات نسخه جديد SQL Server 2005

مهيار داعي‌الحق
ماهنامه شبکه - فروردين و ارديبهشت ۱۳۸۳ شماره 53

اشاره :

عرضه شدن نسخه 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) را مي‌توانيد از اين نشاني بدست آوريد.

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

مديريت پايگاه داده ها در SQL Server - قسمت سوم: انتقال اطلاعات با Replication

مهيار داعي‌الحق
ماهنامه شبکه - آبان 1383 شماره 48

اشاره :

در دو شماره گذشته ماهنامه شبكه، بحث مديريت بانك‌هاي اطلاعاتي تحت SQL Server را با دو موضوع ايجاد نسخه‌هاي پشتيبان و نظارت بر سيستم يا مانيتورينگ بررسي كرديم. در اين شماره قصد داريم يكي از روش‌هاي مشهور تبادل اطلاعات بين چند موتور پايگاه داده‌اي مستقر در مكان‌هاي مختلف را بررسي كنيم. شايان ذكر است كه برخي از مديران سيستم از اين روش به عنوان نوعي ايجاد نسخه پشتيبان وبرخي ديگر به عنوان عاملي براي افزايش سرعت و يا كاهش حجم يك بانك اطلاعاتي با استفاده از مكانيسم توزيع (Distribution) استفاده مي‌كنند. اما نكته مهم اين‌جاست كه هيچ‌كدام از دو مورد مذكور، هدف اصلي عمليات Replication نيست، بلكه منظور از آن، ارايه راه‌حلي براي دسترسي سرورهاي مختلف (با كاربردهاي متعدد) در سطح شبكه به يكديگر و به‌روزشدن اطلاعات جهت دسترسي افراد مختلف در آن شبكه است.


معرفي
Replication راه‌حلي براي انتقال اطلاعات از يك بانك اطلاعاتي SQL server به يك بانك اطلاعاتي ديگر از همان نوع و البته مستقر در يك محل و كامپيوتر ديگر است. اين فرآيند توسط ايجاد يك كپي از اطلاعات موجود در مبدا و انتقال آن به مقصد صورت مي‌گيرد. در اين ارتباط اطلاعاتي، اصطلاحاً به كامپيوتر و بانك‌ اطلاعاتي مبدا، ناشر(publisher) و به كامپيوتر و بانك اطلاعاتي مقصد، مشترك يا متعهد (subscriber) مي‌گويند. البته اين نوع رابطه، با وجود تنها يك ناشر اما يك يا چند مشترك امكان‌پذير است. بدين‌معني كه اطلاعات يك بانك اطلاعاتي در مبدا قابل انتقال به چند مقصد مختلف است. از نسخه 7 به بعدSQL Server امكان تغيير اطلاعات در مقصد و انتقال آن به مبدا نيز وجود دارد. با اين وصف، اين رابطه داده‌اي بين ناشر و مشترك ممكن است گاهي اوقات برعكس شود و جاي مبدا و مقصد در يك مقطع زماني عوض شود. اين قابليت يكي از ويژگي‌هاي مهم SQL Server است كه در نسخه‌هاي قديمي آن وجود نداشت. بدين‌ترتيب يك كامپيوتر مشترك يا مقصد مي‌تواند گاهي اوقات نقش ناشر يا مبدا را در همان رابطه بازي كند. به اين قابليت جديد Multi site update مي‌گويند.
درSQL Server، سه نوع انتقال اطلاعات از طريق Replication وجود دارد. هر كدام از اين سه راه، سناريوي خاصي براي انتقال اطلاعات از مبدا به مقصد و يا برعكس را مديريت مي‌كنند كه در ادامه به بررسي آن‌ها مي‌پردازيم.

1- انتقال اطلاعات به روش ادغام (Merge
اين نوع انتقال اطلاعات كه از قابليت Multi site هم پشتيباني مي‌كند، زماني مورد استفاده قرار مي‌گيرد كه استقلال داخلي هر بانك اطلاعاتي طرف يك رابطه، به رسميت شناخته مي‌شود. بدين‌معني كه در يك رابطه انتقال اطلاعات، هر كامپيوتر ضمن حفظ ساختار بانك اطلاعاتي خود، هم مي‌تواند نقش ناشر را داشته باشد و هم نقش مشترك را ايفا نمايد. در اين حالت هر تغييري در جداول مشترك هر طرف، بلافاصله در طرف ديگر هم اِعمال مي‌شود. نكته مهمي كه در اين‌جا مطرح است اين است كه چطور طرفين اين ارتباط متقابل بايد با هم هماهنگ باشند و اولويت يكديگر را به رسميت بشناسند. به عنوان مثال فرض كنيد در يك زمان واحد، هر دو طرف بخواهند اطلاعاتي را در مورد يك جدول بانك اطلاعاتي به يكديگر ارسال كنند. (يعني بروز حالت تداخل) اين مشكل با استفاده از روش خاصي كه هر نوع Replication مخصوص خودش دارد، قابل حل است. به‌طور كلي در حالت ادغام، يك پايگاه داده حايل ميان ناشر و مشترك به عنوان توزيع‌گر (Distributor) ساخته مي‌شود. اين پايگاه داده به نامDistribution در ليست پايگاه‌هاي داده‌اي ناشر قرار‌مي‌گيرد و وظيفه ايجاد همزماني (synchronization) بين ناشر و مشتركين را ايفا مي‌كند.
پايگاه داده توزيع‌گر هم مي‌تواند در سمت ناشر و هم در يك كامپيوتر مياني ديگر (غير از كامپيوترهاي سمت مشترك) قرار داشته باشد. اين پايگاه داده ضمن ايجاد همزماني در ردوبدل اطلاعات بين ناشر و مشترك، اين امكان را نيز فراهم مي‌سازد تا مدير سيستم بتواند اولويت و در واقع ارجحيت جهت انتقال اطلاعات در زمان بروز تداخل را مشخص كند. اين اولويت (priority) در زمان تعريف طرف‌هاي ناشر و مشترك يك Replication از نوع ادغام توسط مدير سيستم تنظيم مي‌شود.

2- تصويربرداري از اطلاعات (snapshot)
در اين روش ابتدا يك تصوير كامل از آنچه كه بايد از سمت ناشر به سمت مشترك برود تهيه مي‌شود. اين تصوير هم شامل خود ساختار آنچه كه منتقل مي‌شود (مثلاً ساختار يك جدول) و هم شامل اطلاعات داخل آن است. در ابتداي كار، تصوير مذكور عيناً به مشترك فرستاده مي‌شود و سپس از اين به بعد هر تغييري كه در سمت ناشر انجام شود بلافاصله به طرف مشترك هم فرستاده مي‌شود. روند و توالي ارسال اين تغييرات هم همانند حالت قبل (ادغام) طي يك فاصله زماني مشخص مثلاً ساعتي يك‌بار كه توسط مدير سيستم‌ قابل تنظيم است، انجام مي‌گيرد.
يكي از مزاياي اين روش نسبت به حالت ادغام، اين است كه زمان كمتري از وقت مدير سيستم را جهت پيكربندي و تنظيم عمل انتشار صرف مي‌كند و به دليل اين‌كه در ابتداي عمل انتشار، خود ساختار نيز عيناً به مشترك منتقل مي‌شود، از قابليت اطمينان بيشتري برخوردار است. به طور كلي كاربرد اين نوع انتقال اطلاعات، زماني است كه مدير سيستم قصد ايجاد يك ارتباط ساده يك طرفه ولي مطمئن را دارد.

3- انتقال براساس فرآيند (Transactional) 
اين روش يكي از بهترين و قابل كنترل‌ترين روش‌هاي انتقال اطلاعات است. در اين روش هر تغييري كه در جداول ناشر صورت گيرد، به‌صورت يك دستور SQL درآمده و تحت يك فرآيند واحد هم در سمت ناشر و هم در سمت كليه مشتركين اجرا مي‌شود. در اين صورت اگر به‌طور مثال يكي از مشتركين به دليلي با اشكال مواجه شده و تغيير موردنظر در آن انجام نشود، اين تغيير نه در خود ناشر و نه در هيچ‌كدام از مشتركين ديگر نيز انجام نخواهد شد. بدين‌معني كه يا يك تغيير در اطلاعات، براي تمام كامپيوترها اعم از ناشر و كليه مشتركين انجام مي‌شود و يا اين‌كه براي هيچ‌كدام انجام نخواهد شد در اين حالت هم يك پايگاه داده واسطه به نام Distribution نقش دريافت و ارسال فرآيند را به طرف مشترك ايفا مي‌كند. در واقع روش فرآيند، در مقايسه با دو روش قبل از حالت به هنگام (online)  بودن بيشتري برخوردار است. يعني اين‌كه هر فرآيند و هر دستور در همان لحظه كه مي‌خواهد در ناشر اجرا شود، به واسط فرستاده شده و سپس در يك زمان واحد در كليه مشتركين نيز انجام مي‌شود و در واقع زمان تغيير اطلاعات در ناشر و در مشتركين تقريباً يكسان است. همچنين در اين روش تداخلي هم پيش نمي‌آيد. چون هر تغييري ابتدا بايد به واسط فرستاده شود و از آن‌جا به جاهاي ديگر ارسال شود و واسط هم آن‌ها را در يك صف اولويت (priority queue) قرار داده و به ترتيب انجام مي‌دهد. نتيجه اين نوع انتقال اطلاعات، داشتن چند پايگاه داده كاملاً يكسان و به‌هنگام در مكان‌هاي مختلف است كه همگي از يك ناشر، اطلاعات موردنظر را دريافت مي‌كنند.

تعريف ناشر و مشتركين
براي تعيين يك SQL Server به عنوان ناشر، كافي  است يك رابطه Replication براي آن تعريف كرده و پس از انجام تنظيمات مربوطه و طي مراحل خاص هر يك از سه نوع انتقال اطلاعات، آن كامپيوتر را به عنوان مبدا يا ناشر يك فرآيند انتقال معرفي كنيم. در همين حين و براي ايجاد پايگاه داده واسط يا همان توزيع‌گر (Distributor) هم مي‌توان وارد عمل شده و خود ناشر را به عنوان توزيع‌گرِ آن فرآيندِ انتقال معرفي كنيم. پس از اين‌كار نوبت به تعريف مشتركين مي‌رسد. براي تعريف يك مشترك از دو راه مي‌توان اقدام كرد، كه هر يك كاربرد مخصوص به خود را دارند. در روش اول كه فرستادن اطلاعات به طرف يك مشترك است و در اصطلاح push ناميده مي‌شود، معرفي مشترك از سمت ناشر انجام مي‌شود. بدين‌معني كه مدير سيستم مي‌تواند بلافاصله پس از تعريف يك ارتباط و ناشر آن از همان لحظه و در همان محل استقرار ناشر، مشتركين را يك به يك به اين نوع ارتباط دعوت و اضافه كند و اطلاعات را به سمت آن‌ها بفرستد. اين ارتباط به دليل اين‌كه كاملاً از طرف ناشر، كنترل مي‌شود، از حالت به‌هنگام بيشتري
(online) برخوردار است و اطلاعات بلافاصله به سمت مشترك فرستاده مي‌شود. در روش دوم كه Pull نام دارد، تعريف مشترك از سمت خودش انجام مي‌شود و در واقع اين مشترك است كه اطلاعات را از ناشر طلب مي‌كند. اين حالت بيشتر در مواقعي كاربرد دارد كه اولاً تعداد مشتركين از قبل براي ناشر مشخص نيست و ثانياً بروز بودن اطلاعات در آن واحد از اهميت حياتي براي سيستم برخوردار نيست و انتقال اطلاعات مي‌تواند با تأخير و با درنگ زماني و در زمان دلخواه مشترك ‌نجام شود.

طرح يك مسأله‌
فرض كنيد مي‌خواهيم با استفاده از مكانيسم Replication، اطلاعات موجود در بانك اطلاعاتي Northwind را از يك پايگاه داده SQL Server به نام server به يك بانك اطلاعاتي به همان نام و بر روي يك پايگاه داده ديگر مستقر در يك سرور راه دور به نام Home server منتقل كنيم. براي اين‌كار مي‌توانيم از هر كدام از سه روش انتقال اطلاعات، استفاده نماييم.


مراحل ايجاد ناشر

براي اين كار، در پنجره Enterprise Manager، بر روي گزينه Publication از آيتم Replication كليك سمت راست نموده و فرمان New را انتخاب مي‌نماييم. با آغاز ويزارد مخصوص، كليد Next را كليك كرده و در صفحه بعد در پاسخ به اين سؤال كه آيا مي‌خواهيد پايگاه داده توزيع‌گر (Distributor) در همين كامپيوتر ساخته شود يا خير، گزينه اول يعني خود كامپيوتر server را انتخاب مي‌كنيم و به مرحله بعد مي‌رويم (شكل 1). 




در پنجره بعدي از كاربر خواسته مي‌شود تا فولدري را جهت قرار دادن فايل‌هاي مربوط به عمليات انتقال مشخص كند. وجود اين فولدر براي انجام عمل Distribution ضروري است و بايد طوري انتخاب شود كه در شبكه‌اي كه قرار است مشتركين به آن بپيوندند قابل دسترسي باشد. پس از انتخاب اين فولدر و كليك بر روي كليد Next، در مرحله بعد نام بانك اطلاعاتي موردنظر يعني Northwind را از داخل ليست انتخاب كرده و به مرحله اصلي يعني انتخاب نوع Replication مي‌رسيم كه در اين‌جا همان گزينه اول يعني snapshot را انتخاب مي‌كنيم (شكل 2).



سپس در مرحله بعد بايد هر موجوديتي اعم از جداول و روال‌هايي، را كه مي‌خواهيم در اين عمليات انتقال وجود داشته باشند، معرفي كنيم براي مثال جدول مشتريان (customers) را از داخل ليست جداول علامت زده و به مرحله بعد مي‌رويم. (شكل 3) در مرحله بعد يك نام براي عمليات انتقال انتخاب كرده و كليد Next را مي‌زنيم و در نهايت با كليك بر روي عبارت Finish عمليات را پايان مي‌دهيم.




مراحل ايجاد مشتركين‌

1- روش Pull (از طريق مشترك)
براي ايجاد يك مشترك با روش pull، به كامپيوتر مشترك مراجعه كرده و بر روي گزينه subscription كليك سمت راست كرده و فرمان New pull را انتخاب مي‌كنيم. سپس از داخل پنجره بعدي گزينه دوم يعني Look in the Active Directory را انتخاب مي‌نماييم (شكل 4).




در مرحله بعد نام ناشر و سپس نام بانك‌اطلاعاتي موردنظر، نام عمل نشر كه در ناشر تعريف كرديم و سپس رمز عبور مربوط به يك كاربر معتبر در ناشر مثلاً كاربر sa را وارد مي‌نماييم. (شكل 5)




در قسمت بعد هم نام بانك اطلاعاتي مقصد را كه همان Northwind است انتخاب مي‌ناميم. پس از طي چند مرحله ديگر كه نياز به تغييري در آن‌ها نيست و صرفاً با كليك بر روي كليد Next،مقادير پيش‌فرض‌را تأييد مي‌كنيم به مرحله انتخاب توالي زماني به‌روز شدن مشترك مي‌رسيم. در اين‌جا هم بايد بين سه روش مختلف يعني حالت‌هاي بلادرنگ، زمان‌دار، براساس درخواست، يكي را انتخاب كنيم كه در اين‌جا همان نوع اول يعني بلادرنگ را انتخاب مي‌نماييم (شكل 6).



با اين كار مراحل تعريف يك مشترك از طريق pull پايان مي‌پذيرد. اما نكته مهمي كه در اين‌جا بايد به آن اشاره كنيم اين است كه براي فراهم ساختن امكان تعريف مشتركين از طريق pull حتماً بايد اين اجازه را قبلاً و از طريق ناشر به كاربران مشترك داده باشيم.  
براي اين‌كار، قبل از تعريف مشترك، بايد در كامپيوتر ناشر، بر روي نام عمليات انتقال ايجاد شده كليك سمت راست كرده و گزينه خصوصيات (properties) را انتخاب نماييم. سپس زبانه subscription option را باز كرده و مطمئن شويم كه گزينه‌هاي Allow anonymous و همچنين Allow Pull در حالت تأييد شده باشند (شكل 7).



2 - روش push  (از طريق ناشر)
براي تعريف يك مشترك با استفاده از روش push، به كامپيوتر ناشر مراجعه كرده و بر روي نام عمليات نشر كه قبلاً ايجاد كرده‌ايم كليك سمت راست مي‌كنيم. سپس روي گزينه push new كليك مي‌كنيم. با شروع مراحل ويزارد، نام كامپيوتر مشترك را از ليست انتخاب مي‌كنيم (شكل 8).



در مراحل بعدي با معرفي بانك اطلاعاتي Northwind به عنوان مقصد به پنجره ويژه تعريف زمان به‌روز شدن مشترك مي‌رسيم كه از بين دو نوع بلادرنگ و زماندار قابل انتخاب است. كه باز هم نوع اول را انتخاب مي‌كنيم. در مرحله بعد هم مطمئن مي‌شويم كه گزينه start snapshot agent در حالت تأييد قرار دارد و سپس با چند كليك بر روي كليدNext عمليات را پايان مي‌دهيم. نكته بسيار مهمي كه براي تعريف مشترك از طريق روش push بايد در نظر داشته باشيم اين است كه براي ظاهر شدن نام هر مشترك در ليست انتخاب كه در شكل 8 ملاحظه كرديد، بايد قبلاً اين مشترك با استفاده از عمليات Registration در كامپيوتر ناشر تعريف شده باشد. در غير اين‌صورت نام آن در داخل ليست مشتركين ظاهر نمي‌شود. عمل مذكور هم در يك محيط شبكه‌اي بسيار آسان است. كافي است بر روي SQL Server Group در كامپيوتر ناشر كليك راست كرده و با انتخاب New Registration و وارد كردن نام مشترك اين كار را انجام دهيم.

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

پسورد بانک اطلاعاتي اوراکل قابل هک شدن است

سرويس خبر شبکه آنلاين
يکشنبه 8 آبان 1384


بررسي‌هاي دو پژوهشگر نشان مي‌دهد که پسورد بانک اطلاعاتي اوراکل به دليل ضعف الگوريتم ذخيره‌سازي آن قابل هک شدن است.


دو محقق کامپيوتر اخيرا با انتشار مقاله‌اي مدعي شدند که پسوردها در نرم‌افزار بانک اطلاعاتي اوراکل قابل هک شدن هستند. جوشا رايت از موسسه SANS و کارلوس سيد از دانشگاه لندن در مقاله خود مدعي شدند که به دليل ضعف الگوريتم ذخيره‌سازي پسورد در نرم‌افزار بانک اطلاعاتي اوراکل، مي‌توان آن را هک کرد.

اين دو محقق در توضيح ادعاي خود، عدم تمايز قائل شدن بين حروف بزرگ و کوچک در اين سيستم را به عنوان يک نمونه ساده از اين ضعف برشمردند.

در قسمتي از اين مقاله آمده است: يک مهاجم با در دست داشتن منابع محدود براي نفوذ، مي‌تواند حمله‌اي را سازمان دهد که به واسطه آن پسوردهاي اصلي را از پسوردهاي Hash‌ شده براي يک username مشخص استخراج کند. به گفته اين پژوهشگران، مهاجم با داشتن يکي دو جفت Username و پسورد Hash شده در يک بانک اطلاعاتي- که البته کار غير ممکني نيست حتي اگر مهاجم ابزار ديگري غير از تکنيک brute force نداشته باشد – قادر به نفوذ خواهد بود.

اين دو محقق براي آزمودن فرضيه خود از يک دستگاه پنتيوم 4 با سرعت 2.8 گيگاهرتز استفاده کردند و متوجه شدند که از طريق آزمون و خطا ظرف مدت حداکثر 40 روز پسورد را مي‌تواند هک کرد. در شرايط عادي معمولا نيمي از اين زمان، يعني حدود 20 روز براي اين منظور کافي است.

رايت و سيد در مقاله خود ضمن برشمردن راه‌هاي مختلف جلوگيري از سوء استفاده از اين ضعف به کاربران سيستم اوراکل توصيه مي‌کنند که پسوردهايي انتخاب کنند که طول آنها کمتر از 12 کاراکتر نباشد و حتما پسورد خود را هرازگاهي تغيير دهند.

به دنبال اين تحقيق، مدير تحقيقات مرکز Internet Storm Center در موسسه SANS‌ موضوع را به شرکت اوراکل اطلاع داده است. هنوز تا لحظه انتشار اين خبر، شرکت اوراکل به آن واکنش نشان نداده است.

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

Replication در پايگاه‌ داده MySQL دوشنبه سیزدهم آبان 1387 19:16
Replication در پايگاه‌ داده MySQL

ترجمه: امين كلا‌نتري‌
ماهنامه شبکه - آبان ۱۳۸۵ شماره 70

اشاره :

در كپي‌برداري يا Replication، داده‌ها و جداول يك پايگاه‌داده روي چندين سرور قرار مي‌گيرد و از طريق فرايندهايي، داده‌هاي مربوط به پايگاه‌هاي داده فرعي با داده‌هاي پايگاه داده اصلي هماهنگ مي‌شود. به اين ترتيب سيستم نرم‌افزاري استفاده كننده از اين پايگاه داده، براي دسترسي به داده مورد نظر خود به جاي سرور اصلي، به نزديك‌ترين سرور محليِ معرفي شده به آن مراجعه مي‌كند. در نتيجه از ترافيك شبكه كاسته مي‌شود و سرعت تهيه اطلاعات نيز افزايش مي‌يابد. كپي‌برداري به روش پايه / پيرو (Master/Slave) در پايگاه‌داده MySQL براي اولين بار در سال 2000 و در نسخه بتاي اين پايگاه‌داده عرضه شد. بعد از آن كپي‌برداري به يكي از امكانات ضروري اكثر كاربران حرفه‌اي پايگاه‌داده MySQL تبديل شده است. برعكس بسياري از فرضيات قبلي و در مقايسه با ساير پايگاه‌هاي داده تجاري، كپي‌برداري در محيط MySQL بسيار آسان و كاربردي است. در اين مقاله امكانات مرتبط با كپي‌برداري در پايگاه‌داده MySQL و روش‌هاي استفاده از آن را بررسي مي‌كنيم.


منبع: مجله لينوكس‌

اصول اوليه‌
سيستم كپي‌برداري در MySQL به چندين سرور پيرو اجازه مي‌دهد خود را با تغييرات ايجاد شده در يك سرور پايه همزمان كنند. كپي‌برداري از پايگاه داده مزيت‌هاي زيادي دارد. براي مثال، با تهيه نسخه پشتيبان، بازيابي داده‌ها آسان‌تر مي‌شود و به جاي خاموش كردن سرور اصلي به منظور تهيه نسخه پشتيبان از داده‌ها، كافي است نسخه پشتيبان را از اطلاعات يكي از سرورهاي پيرو تهيه كنيد. به علاوه، با استفاده از كپي‌برداري، ايجاد برنامه‌هايي در مقياس بزرگ مقدور مي‌شود. با فرستادن تمام پرس‌وجوهاي نوع درج (INSERT)، حذف (DELETE) و بروزرساني (UPDATE)، به سرور پايه و استفاده از سرور پيرو براي اكثر پرس‌و‌جوهاي بازيابي اطلاعات (SELECT) مي‌توانيد براي برنامه‌هايي كه دسترسي به اطلاعات براي آن‌ها يك فرايند حساس به حساب مي‌آيد، دسترسي به پايگاه داده به صورت بي‌درنگ را فراهم كنيد.

براي پياده‌سازي محيط كپي‌برداري روي يك سرور داراي پايگاه‌ داده رابطه‌اي مي‌توانيد از دو روش استفاده كنيد: كپي كردن پرس‌وجوهاي ثبت شده (Logها) يا كپي كردن داده‌ها (Data). در روش كپي كردن Logها، كليه پرس‌وجوهاي انجام شده از سرور پايه، در اين سرور ثبت مي‌گردد و به سرورهاي پيرو فرستاده مي‌شود. با اجراي مجدد اين پرس‌وجوها در سرورهاي پيرو، اين سرورها نيز بروزرساني مي‌شوند.

در روش كپي داده‌ها، كليه بلاك‌هاي داده‌ايِ تغيير يافته، از سرور پايه به سرورهاي پيرو فرستاده مي‌شود. MySQL براي كپي‌برداري از روش ثبت Logها يا همان روش ذخيره پرس‌وجوهاي انجام شده از سرور پايه و انتقال آن‌ها به سرورهاي پيرو استفاده مي‌كند. هر دو روش را مي‌توان به صورت همزمان يا ناهمزمان انجام داد. در روش همزمان، زماني يك پرس‌وجو خاتمه يافته به حساب مي‌آيد كه روي سرور اصلي و همه سرورهاي پيرو اجرا شده باشد.
مزيت اين روش اين است كه در هر لحظه يك كپي يكتا از هر داده روي همه سرورها ذخيره شده است. البته اين روش عيب بزرگي هم دارد. به اين ترتيب كه اگر بخواهيد اين روش كپي‌برداري را براي  مسافت‌هاي طولاني يا در شبكه‌اي با سرعت پايين اجرا كنيد، در آن صورت به علت حجم بالاي پرس‌وجوهايي كه بايد به صورت بي‌درنگ و روي همه سرورها منتقل و اجرا شوند، با مشكل كاهش كارايي مواجه خواهيد شد. به همين سبب در MySQL از كپي‌برداري مبتني بر Logها و به روش غيرهمزمان استفاده مي‌شود.

فرايندهاي سمت سرور پايه
براي كپي‌برداري، همه پرس‌وجوهايي كه داده‌هاي سرور پايه را تغيير مي‌دهد، در محل ثبت خاصي به نام binary log ذخيره مي‌شود. binary log يك فايل غيراَسكي است تا كليه پرس‌وجوهاي انجام شده به همراه همه جزئيات مربوط به آن‌ها، نظير پايگاه‌داده مورد استفاده، كد بازگشتي و ... در آن ثبت شود.

در MySQL براي فعال كردن ثبت اطلاعات در binary log، تنها كافي است تا دو خط كد زير را به قسمت [mysqld] از فايل my.cnf بيفزاييد:

log-bin
server-id=1


و سپس mysqld را راه‌اندازي مجدد كنيد. (اما فعلاً اين كار را انجام ندهيد.)
خط log-bin مشخص مي‌كند كه MySQL بايد براي ثبت اطلاعات از فايل دودويي يا همان binary log استفاده كند. خط server-id شماره شناسايي عددي براي شناسايي سرور را مشخص مي‌كند. اين خط اجباري نيست و اگر مقداري براي آن مشخص نشود، از مقدار عدديِ يك به صورت پيش‌فرض استفاده مي‌شود. البته اعلان صريح شماره شناسايي سرور در سرور پايه و سرورهاي پيرو كار خوبي است. براي ايجاد يك محيط كپي‌برداري اوليه كليه كارهايي كه بايد انجام دهيد، به همين تغيير كوچك خلاصه مي‌شود.

فر‌ايندهاي سمت سرورهاي پيرو
وظيفه سرور پايه آسان است. اين سرور از كليه پرس‌وجوهايي كه از آن درخواست ‌شده و منجر به اصلاح داده‌ها شود،  يك رونوشت ذخيره مي‌كند. سرورهاي پيرو موظفند به سرور پايه متصل شوند و يك كپي از كليه رخدادهاي ذخيره شده در سرور مرجع را دريافت و آن‌ها را اجرا كنند.

براي كپي‌برداري در MySQL بايد در هر سرور پيرو دو فرايند به صورت دو رشته (Thread) جداگانه اجرا شود: در رشته اول با نام I/O (كه رشته رله يا Relay نيز ناميده مي‌شود)، اطلاعات ثبت شده مربوط به تمام رخدادها از سمت سرور پايه به سرورهاي پيرو كپي مي‌شود. به اين ترتيب: ارتباطي با سرور پايه ايجاد مي‌شود، رخدادها از فايلbinary log در سرور پايه خوانده مي‌شوند و در سرور پيرو روي ديسك محلي و در فايلي به نام relay log ذخيره مي‌شوند. از آنجا كه اين فرايند بسيار ساده است، مي‌توانيد در صورت داشتن يك شبكه سريع و سالم آن را به صورت مؤثري اجرا كنيد و در نتيجه سرورهاي پيرو هميشه به صورت مجازي با سرور پيرو همزمانند. در عمل كليه مدخل‌هاي ثبت شده در فايل binary log در سرور پايه تنها چند ميلي‌ثانيه بعد از نوشته شدن توسط سرورهاي پيرو خوانده مي‌شوند.

با اتمام رشته SQL، رشته I/O آغاز مي‌شود. اين رشته فايل relay log را مي‌خواند و يك به يك، پرس‌وجوهاي ذخيره شده در آن را اجرا مي‌كند.

اين طراحي دو رشته‌اي تضمين مي‌كند كه آخرين نسخه از داده‌ها هميشه در سرور پيرو ذخيره مي‌شود؛ حتي اگر نيازي به پردازش اين داده‌ها نباشد. البته در نسخه 23/3 فرايند كپي‌برداري در سمت پيرو به صورت يك رشته‌اي طراحي شده بود كه رخدادها را از سمت سرور پايه دريافت مي‌نمود و آن‌ها را به صورت محلي اجرا مي‌كرد. در آن زمان از فايل relay log استفاده نمي‌شد. در اين روش ابتدايي وقتي به مشكل برمي‌خورديم كه يك پرس‌وجو كند با خاموش شدن ناگهاني سرور پايه همراه مي‌شد. در اين صورت سرور پيرو حاوي اطلاعات ناكارآمد بود و تا زماني كه سرور پايه فعال نمي‌شد، اميدي به راه‌اندازي مجدد سرور پيرو نبود.

در نتيجه اين كل فرايندي است كه رخ مي‌دهد: سرور پايه پرس‌وجوها را در فايل binary log خود ذخيره مي‌كند، رشته I/O از سرور پيرو مدخل‌ها را از فايل binary log  در سرور پايه مي‌خواند و آن‌ها را در فايل relay log ذخيره مي‌كند و در نهايت رشته SQL از سرور پيرو، پرس‌وجوهاي ذخيره شده در relay log را اجرا مي‌نمايد.

تنظيمات سرور پيرو
تنظيم يك سرور پيرو كمي از تنظيم كردن يك سرور پايه سخت‌تر است. در اينجا دو روش مورد بررسي قرار مي‌گيرد، اما قبل از هر چيز گزينه‌هاي پايه مربوط به هر يك از اين تنظيمات را بررسي مي‌كنيم.
در قسمت تنظيم فايل‌ [mysqld] گزينه‌هاي مختلفي بايد بررسي شود. مورد زير مثالي از نحوه تنظيم اين گزينه‌ها است.

server-id = 2
master-host = db-master.example.com
master-user = repl
master-password =co pyING
master-connect-retry = 15

نام‌هاي به كار برده شده در اين تنظيمات، به خوبي بيانگر كاربرد آن‌ها است. به سرور پيرو بايد يك server_id يكتا نسبت دهيد، نام يا آدرس IP سرور پايه را به آن اعلان كنيد و سپس اطلاعات مورد نياز براي معرفي و متصل كردن سرور پيرو به سرور پايه را در قسمت تنظيمات ذخيره نماييد.

براي آن‌كه اين تنظيمات در سمت سرور پايه شناسايي شود، بايد كاربري را در سمت سرور پايه با مجوزهاي مورد نياز ايجاد كنيد. اين مجوزها عبارتند از: REPLICATION SLAVE،FILE فرمان SQL زيرمجوزهاي مورد نياز را ايجاد مي‌كند.

mysq> GRANT FILE, REPLICATION SLAVE
"%"@ ON *.* TO repl <- 
;'IDENTIFIED BY 'c0pyING <-

 البته به منظور ايجاد امنيت بيشتر، بهتر است حرف % را با نام ميزبان يا آدرس IP سرور پيرو جايگزين كنيد.
آخرين گزينه، يعني master-connect-retry براي سرور پيرو مشخص مي‌كند كه در صورت قطع ارتباط، در چه فواصل زماني بر حسب ثانيه با سرور پايه ارتباط مجدد برقرار كند.

شروع كار با يك پايگاه‌داده جديد
راحت‌ترين روش براي ايجاد محيط كپي‌برداري، ايجاد آن روي پايگاه ‌داده MySQL است كه به تازگي روي سرورهاي پايه و پيرو نصب شده وهيچ داده‌اي در آن ذخيره نشده باشد. قبل از ذخيره هر گونه داده روي سرورها مراحل زير را انجام دهيد.

‌‌ظ‌‌ در سمت سرور پايه: مطابق مرحله قبل كاربر محيط كپي‌برداري را در سرور پايه تعريف كنيد. سپس مدخل‌هاي مربوط به تنظيم محيط كپي‌برداري را به فايل گفته شده در سمت سرور پايه اضافه نماييد و در نهايت mysqld را راه‌اندازي مجدد كنيد.

‌ ‌‌ظ‌ در سمت پيرو: مطابق مراحل فوق، مدخل‌هاي مربوط به تنظيم محيط كپي‌برداري را به فايل گفته شده در سمت سرور پيرو اضافه كنيد. سپس mysqld را دوباره راه‌اندازي نماييد.

بعد از راه‌اندازي پيرو همه چيز بايد به درستي كار كند. براي اطمينان از اين موضوع، با سرور پيرو ارتباط برقرار كنيد و دستور SHOW SLAVE STATUS را اجرا نماييد. اگر خروجي شبيه عبارت زير باشد، يعني همه چيز به درستي كار مي‌كند.

 mysq> SHOW SLAVE STATUS \G
Master_Host: db-master.example.com
Master_User: repl
 3306:Master-Port
15: Connect_retry
Master_Log_File: binary-log.001
Read_Master_Log_Pos: 241452666
relay_log_File: Relay_Log.001
 Relay_Log_Pos:113733106
Relay_Master_Log_File: binary-log.001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
:Replicate_do_db
:Replicate_ignore_db
Last_errno:0
:Last_error
Skip_counter:0
Exec_master_log_pos:241452666
Relay_log_space:113733106


مقادير مهم در اين ميان عبارتند از: دو مدخل Yes. اين دو مدخل‌ به ترتيب مربوط به عبارت‌هاي Slave_IQ_Running و Slave_SQL_Running است.  عبارت Yes در مقابل اين دو مدخل نشان ‌مي‌دهد كه در سمت سرور پيرو هر دو رشته به درستي كار مي‌كنند.

 افزودن امكان كپي‌برداري به يك پايگاه داده موجود
تنظيم يك سرور پيرو براي كپي‌برداري از داده‌هاي يك سرور پايه كه هم‌اكنون داده‌هايي در آن ذخيره شده، كمي مشكل است. اگر فقط فايل binary log را در سمت سرور پايه فعال كنيد و در سمت پيرو شروع به كپي‌برداري نماييد، نمي‌توانيد نتيجه قابل قبولي به دست آوريد؛ زيرا جداولي كه قبلاً در سرور پايه ايجاد شده‌اند، در سرور پيرو وجود ندارد و در نتيجه با انتقال و اجراي پرس‌وجوها در سمت سرور پيرو در واقع تلاش مي‌كنيم داده‌ها را به جداولي اضافه كنيم كه در حال حاضر وجود ندارد.

براي عملكرد درست قبل از ايجاد و استفاده از فايل binary log بايد يك كپي از اطلاعات سرور پايه را در سرور پيرو ايجاد كنيد.

براي اين كار مي‌توانيد از دو روش استفاده كنيد: در روش اول اگر سرور پايه بيكار است، يعني هيچ پرس‌وجويي براي نوشتن اطلاعات روي آن انجام نمي‌شود، بايد در سمت سرور پيرو بعد از فعال كردن گزينه‌هاي مربوط به محيط كپي‌برداري، دستور LOAD DATA FROM MASTER را اجرا كنيد. اين دستور به سرور پيرو اعلان مي‌كند كه يك كپي از همه جداول را از پايگاه داده موجود در سرور پايه دريافت كند. بعد از اتمام اين فرايند، مي‌توانيد پرس‌وجوهاي مربوط به نوشتن داده‌ها را در سرور پايه از سر گيريد. تنها جداول grant از پايگاه‌داده MySQL در طول فرايند LOAD DATA به جدول پيرو انتقال نمي‌يابد. اگر در سمت سرور پيرو به اين جداول نياز داريد، بايد آن‌ها را به طور دستي كپي كنيد.

در روش دوم، ابتدا براي ايجاد فايل binary log و ايجاد يك كپي لحظه‌اي (Snapshot) از داده‌ها بايد سرور پايه را خاموش كنيد. به عبارت ديگر، زماني كه سرور خاموش است، يك كپي از پوشه يا درايو حاوي داده‌ها را به سرور پيرو انتقال دهيد. با كامل‌شدن كار كپي، سرور پايه را براي انجام پرس‌وجوي مربوط به ارتباط با سرور روشن كنيد. حال سرور پيرو همه پرس‌وجوهايي كه بعد از ايجاد كپي لحظه‌اي در سرور پايه ايجاد شده است را كپي‌برداري مي‌كند.
موارد گفته شده، اصول پايه كپي‌برداري در MySQL است و موضوعات پيشرفته‌تري از اين مبحث شامل توپولوژي‌هاي كپي‌برداري، امكانات مربوط به فيلتر كردن و مطالعه دقيق‌تر پرس‌وجوهاي ذخيره شده يا همان Logها را در فرصت ديگري مورد بررسي قرار خواهم داد.

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

گذري بردنياي‌ MySQL دوشنبه سیزدهم آبان 1387 19:15
گذري بردنياي‌ MySQL

مهيار داعي‌الحق‌
ماهنامه شبکه - فروردين و ارديبهشت ۱۳۸۵ شماره 64

اشاره :

شايد تاكنون مقالات متعددي را درباره بانك اطلاعاتي MySQL در ماهنامه شبكه يا جاهاي ديگر ديده و خوانده باشيد. اكنون مي‌خواهيم به‌جاي برشمردن مزايا، معايب يا ويژگي‌هاي اين بانك اطلاعاتي، كمي وارد جزئيات ساختار آن شويم و قسمت‌ها و ابزارهاي مختلف آن را به‌طور مختصر بررسي كنيم تا وجوه تشابه و تمايز آن را نسبت به ساير بانك‌هاي اطلاعاتي و به‌ويژه ‌SQLServer مايكروسافت ببينيم.


هدف از ايجاد MySQL
نسخه‌هاي اوليه ‌‌MySQL را به هيچ عنوان نمي‌توان با نسخه‌هاي جديد آن مقايسه‌ نمود. نسخه‌هاي قديمي به‌دليل ماهيت عمومي سيستم‌عاملي كه براي آن درنظر گرفته شده بودند (يعني يونيكس و لينوكس‌هاي اوليه) داراي واسط كاربر چندان جالبي نبودند و تمام فرامين مربوط به طراحي و مديريت بانك اطلاعاتي در آن‌ها از طريق دستورات خط فرمان انجام مي‌گرفت. اما به‌تدريج و با پيدايش محيط‌هاي گرافيكي توانمند و زيبا براي لينوكس،‌‌MySQL نيز همانند ساير نرم‌افزار‌هاي اپن‌سورس تحت لينوكس مراحل تكامل و بهينه شدن هسته و ابزارهاي جانبي خود را پيمود تا به جايي رسيد كه اكنون به عنوان يكي از سريع‌ترين، كاراترين و مقرون به صرفه‌ترين برنامه‌هاي بانك اطلاعاتي جهان شناخته مي‌شود.
 
غير از توانمندي‌هاي مربوط به واسط كاربر و امكانات جانبي، در نسخه‌هاي جديد MySQL سعي شده‌است نقاط ضعف هميشگي اين موتور بانك اطلاعاتي، يعني نبود سه عنصر مهمِ ديد ‌(View)، روال‌هاي ذخيره شده و تريگرها، تا حدود زيادي رفع شود و اكنون ديگر ‌‌MySQL به دليل نداشتن اين سه عنصر مهم، در رقابت با ساير بانك‌هاي اطلاعاتي مورد سرزنش و بي‌مهري برنامه‌نويسان و مديران بانك‌هاي اطلاعاتي قرار نمي‌گيرد.

به‌طوركلي وقتي به تاريخچه و مراحل تكامل ‌‌MySQL مي‌نگريم، سه ويژگي آن، يعني قابليت اطمينان، كارايي مناسب و آساني استفاده را از نكات مورد توجه سازندگان آن در توليد اين اثر مي‌يابيم. قابليت اطمينان، از اين جهت كه يك بانك اطلاعاتي اپن‌سورس و با حمايت يك شبكه توانمند و در همه‌جا حاضري به نام MySQL Network در هرلحظه آماده ارائه خدمت به استفاده كنندگان آن و پشتيباني از آن‌ها است و به راحتي مي‌تواند دربسياري از كاربردهاي تجاري جايگزيني مناسب براي همتايان گرانقيمت خود باشد.
 
كارايي مناسب، از اين لحاظ كه با ارائه نسخه‌هاي متعدد تحت سيستم عامل‌هاي مختلف و تحت معماري‌هاي سخت افزاري گوناگون قادر است تا هم در كاربردهاي مبتني برتعداد فرايندهاي فراوان ‌(OLTP) و هم در كاربردهاي داراي پردازش‌ها و محاسبات سنگين (OLAP) مورد استفاده قرار گيرد. آسانيِ استفاده هم از اين‌جهت است كه كليه مراحل استفاده از آن، از دستيابي به فايل‌هاي مخصوص نصب كه به‌طور رايگان قابل دريافت است و هم از اين بابت كه مراحل نصب و پيكربندي كه حداكثر در ده دقيقه در سيستم‌عامل‌هاي مختلف صورت مي‌گيرد. همچنين در زمان بهره‌برداري به شيوه‌اي بسيار آسان و گويا، ابزارهاي خود را در اختيار توسعه‌‌دهندگان و مديران سيستم قرار مي‌دهد.

معماري ‌MySQL  
ويژگي اپن‌سورس بودن MySQL باعث شده است معماري داخلي آن، به‌صورت گويا و واضح و در قالب ماجول‌هاي اساسي يا جانبي آن براي كاربرانش شناخته شده باشد. شكل 1 به‌طور خلاصه ماجول‌هاي مختلف موجود در‌‌MySQL را با نامگذاري براساس وظايفشان، نشان مي‌دهد.

همانطور كه مشاهده مي‌كنيد ساختار اين بانك اطلاعاتي شامل ماجول‌هاي مختلفي براي انجام‌دادن وظايف مختلف و استاندارد يك موتور پايگاه داده‌اي همه منظوره است. برخي از قسمت‌هاي اصلي و شيوه عملكرد آن‌ها در‌ MySQL عبارتند از:

شكل 1

مديريت اتصال
كنترل و ايجاد محدوديت درتعداد اتصالات قابل انجام بين كلاينت‌ها و سرور بانك اطلاعاتي يكي از ماجول‌ها و وظايف اصلي MySQL است. درواقع موتور بانك اطلاعاتي با مديريت خودكار و ايجاد اشتراك بين كلاينت‌ها در استفاده بهينه از اتصالات موجود نقش مهمي را ايفا مي‌كند. درواقع اين ماجول سعي مي‌كند با ايجاد فضاي مشترك، از به وجود آمدن تعداد زيادي اتصالات بي‌كار و بلااستفاده به بانك اطلاعاتي جلوگيري كند و در استفاده كمتر از فضاي حافظه و پردازش پردازنده موثر واقع شود.

دستورات و عناصر اصلي
وظايف ماجول‌هاي مستقر در اين قسمت، ايجاد امكان ساخت جداول بانك اطلاعاتي ايندكس‌ها، ديدها، روال‌هاي ذخيره شده، توابع، تريگرها، و پشتيباني از دستورات ‌‌SQL ويژه ساخت اين عناصر يا خواندن، درج، حذف و تغيير داده‌ها در آنان است.

مديريت حافظه
يكي از مهم‌ترين كارهايي كه يك موتور پايگاه داده‌اي بايد انجام دهد، تخصيص و مديريت حافظه مورد استفاده بانك اطلاعاتي و پردازش‌هاي مربوط به آن‌ها و همچنين فضاي موردنياز جهت عمليات بافرينگ ورودي و خروجي به‌علاوه عمليات ‌caching براي افزايش سرعت خواندن اطلاعات است. اين كار به‌خوبي در‌ MySQL انجام مي‌گيرد. ضمن اين‌كه در زمان ايجاد و نگهداري يك بانك‌اطلاعاتي نيز پارامترهاي مختلفي در اين زمينه توسط مديرسيستم و استفاده از ابزارهاي مختص‌ MySQL قابل تنظيم است.

 شكل 2

موتور ذخيره‌سازي اطلاعات

MySQL داراي ابزارهاي متعددي براي ذخيره‌سازي اطلاعات به شيوه‌هاي گوناگون است. براين‌اساس و درزمان ايجاد يك پايگاه داده، MySQL پرسش‌هاي خاصي درمورد انتخاب نوع كاربرد بانك اطلاعاتي و انتخاب موتور ذخيره‌سازي مطرح مي‌گردد.
 
در پرسش اول كه اختصاص به نوع كاربرد دارد، مديرسيستم مي‌تواند از بين دو نوع پيش فرض يعني يك پايگاه داده با تعداد زيادي فرايندهاي همزمان (OLTP) يا يك پايگاه داده با تعداد زيادي دستورات ويژه خواندن و آناليز اطلاعات (OLAP) يكي را انتخاب كند يا اقدام به تنظيم دستي نمايد.
 
با اين كار و طبق انتخاب وي، سيستم، تعداد اتصالات همزمان پايگاه داده‌اي را كه در بحث <مديريت اتصال> به آن اشاره كرديم تنظيم مي‌كند. براين اساس اولويت به كاربرد ‌OLPA داده مي‌شود چون اصولاً كاربرد OLTP نياز به استفاده زماني كمتري از يك اتصال دارد و بدين سبب مي‌تواند تعداد اتصال همزمان بيشتري را مديريت نمايد.  (شكل 2)

اما درمورد سؤال دوم همانطور كه گفتيم، ‌‌MySQL امكان انتخاب نوع ابزار و موتور ذخيره‌سازي را به مديرسيستم مي‌دهد. به عنوان مثال موتور InnoDB به‌طور پيش‌فرض براي كاربردهاي ‌‌OLTP و موتوري به‌ نام ‌MyISAM براي كاربردهاي OLAP و نگهداري انبوه اطلاعات پرحجم مثل Data Warhousing يا وب سايت‌ها مورد استفاده MySQL قرار مي‌گيرد. در ضمن همانطور كه در شكل 1 نيز مشاهده مي‌كنيد، ‌MySQL نيز همانند ساير بانك‌هاي اطلاعاتي مشهور،‌ علاوه بر دو موتور مختص به خودش كه برشمرديم، راه‌حل‌هايي براي ذخيره‌سازي اطلاعات به‌صورت آرشيو  ‌(‌Archive)، تجمعي ‌(‌Federated Servers)، توزيع شده يا خوشه‌اي (‌Cluster) يا حتي بانك‌هاي اطلاعاتي سريع حافظه‌اي (‌In Memory) و چند نوع ديگر را دارد.

ويژگي‌هاي برتر
در ‌‌MySQL معمولاً اكثر روش‌هاي ساخت و بهره‌برداري از يك بانك‌اطلاعاتي به دو كاربرد OLTP و‌ OLAP ختم مي‌شود كه موتور بانك اطلاعاتي براي پشتيباني و كارايي بهينه از هردو كاربرد مذكور، به خوبي ساخته و پرداخته شده است. به عنوان نمونه، در كاربردهاي OLTP، وجود سازوكارها و استانداردهاي يك بانك اطلاعاتي براي تضمين صحت اطلاعات مثل پشتيباني كامل  از انواع فرايند‌ها ‌(Transaction) و حتي فرايندهاي توزيع شده، روابط اطلاعاتي (كليد اوليه، كليدهاي خارجي) و وجود ايندكس‌هاي منحصر به‌فرد (‌UNIQE INDEX) را مي‌توان گواهي براين مسئله دانست. ضمن اين‌كه موتور ذخيره‌سازي InnODB نيز به نوبه خود با مديريت فضا و صفحات حاوي اطلاعات (‌Pages)درحال ايجاد نظم و ترتيب در اطلاعات و حذف فضاهاي خالي براي افزايش سرعت جستجو است.

اين موتور ذخيره‌سازي همچنين قادر است با يك تصوير حايل از اطلاعات چندين جدول يك بانك اطلاعاتي، از تداخل عمليات خواندن با فرايندها (تغيير، درج، حذف) و بروز مشكلات مربوط به قفل شدن ركوردها ‌(‌Blocking) جلوگيري نمايد. اما درمورد كاربردهاي OLAP، موتور MyISAM با فراهم نمودن يك فضاي اطلاعاتي ترابايتي، محيط بسيار وسيعي را براي انباشت اطلاعات و دسترسي سريع به آن‌ها در مواقع موردنظر را پديد آ‌ورده است.

تجربه نشان داده ‌است كه بسياري از شركت‌هاي معتبر و سايت‌هاي اينترنتي مشهور كه با مشكل ذخيره‌سازي و آناليز انبوه اطلاعات مواجه بوده‌اند و سعي داشتند با استفاده از روش‌هاي توسعه طولي (‌Scale UP) مثل استفاده از سرورهايي با حافظه و هاردديسك‌هاي پرظرفيت‌تر و سريع‌تر يا پردازنده‌هاي قدرتمندتر، ظرفيت سيستم خود را بالا ببرند، موفق شدند با روي آوردن به MySQL و استفاده از موتور ذخيره‌سازي ‌‌MyISAM به نوعي دست به توسعه عرضي ‌(‌Scale Out) بسيار مقرون به صرفه‌اي بزنند و تا هشتاددرصد هزينه‌هاي مربوط به توسعه طولي يا همان ارتقاي سخت‌افزاري را كاهش دهند.

ابزارهاي مديريتي
اپن‌سورس بودن ‌‌MySQL باعث شده‌است بسياري از شركت‌ها بتوانند براي هرچه آسان‌تر كردن و پيشرفته‌تر نمودن ابزارها و محيط‌هاي گرافيكي مبتني بر MySQL وارد كار شوند و به سرعت كمبود واسط كاربرهاي ويژه مديريت در‌‌MySQL را جبران نمايند. يكي از معتبرترين واسط‌هاي كاربرهاي گرافيكي در زمينه مديريت، برنامه Query Browser است كه شركت‌‌MySQL  آن‌را ساخته و رسمي‌ترين برنامه‌ مديريت در MySQL است.
 
اين برنامه نيز به صورت رايگان از سايت MySQL.Com قابل دانلود و نصب است. با استفاده از اين برنامه قادر خواهيد بود جداول، ديدها، توابع و هر‌چه كه در يك بانك اطلاعاتي با دستورات SQL بايد ساخته شود را طراحي و پياده‌سازي نماييد. درهمين رده از برنامه‌ها مي‌توان به ابزارهاي ديگري چون ويزارد پيكربندي (Configuration Wizard) و يا ويزارد مخصوص ارتقا يا مهاجرت به ‌MySQL يعني ‌‌Migration Wizard و بسياري برنامه‌هاي ديگر براي برپايي سرورهاي MySQL، عمليات بكآپ‌گيري، كلاسترينگ و امثال آن، نيز اشاره نمود.

شايان ذكر است كه برخي از ساير توزيع‌كنندگان‌ MySQL نيز ابزارهاي مديريتي خاص خود را تهيه و ارائه نموده‌اند كه مشهورترين آن‌ها محصول شركت اروپايي SAP موسوم به MAXDB است كه نسخه‌اي براساس‌ MySQL مي‌باشد و ابزارهاي مديريتي متنوعي مثل DBManager يا‌ SQL Studio ‌را به همراه خود دارد. در شماره‌هاي آينده سعي مي‌كنيم به محيط MySQL و ابزارهاي كار با آن، بيشتر بپردازيم. ‌

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

راهكارهايي براي‌ افزايش سرعت در بانك‌هاي اطلاعاتي SQL Server

مهيار داعي‌الحق
ماهنامه شبکه - آذر ۱۳۸۴ شماره 60

اشاره :

شايد بعضي از شما تاكنون دست‌اندركار يكي دو پروژه مبتني بر بانك‌هاي اطلاعاتي بوده‌ايد و يا اكنون با چنين پروژه‌هايي سروكار داريد. اگر تجربه كار در محيط‌هاي متوسط (مثلاً با يكصد كاربر) يا بزرگ‌ را نيز داشته باشيد، قطعاً با مسائل و مشكلات مربوط به كاهش سرعت ناشي از افزايش تعداد كاربران يا حجم پردازشي آن‌ها مواجه شده‌ايد. اين مقاله با استناد به منابع مايكروسافتي، راهكارهايي را براي بهبود سرعت و كارايي سيستم در بانك‌هاي اطلاعاتي با تعداد كاربر و حجم پردازش زياد مورد بررسي قرار مي‌دهد. شايان ذكر است كه در تمامي نمونه‌هاي مورد اشاره، بانك‌هاي اطلاعاتي مبتني بر محصول مايكروسافت يعني SQL Server2000 مدنظر قرار گرفته است. طبق بررسي‌هايي كه كارشناسان مايكروسافت انجام داده‌اند، كارايي يك سيستم بانك اطلاعاتي به پنج عامل مختلف بستگي دارد كه به ترتيب اهميت عبارتند از: برنامه نوشته شده، پايگاه داده موردنظر، سخت‌افزار سرور يا كلاينت، تنظيمات و نسخه مورد استفاده SQL Server و سيستم‌عامل ويندوز. همان‌طور كه حتماً مي‌بينيد، ساختار پايگاه داده، براي كارايي سيستم، در رتبه دوم اهميت قرار‌دارد. بنابراين ايجاب مي‌كند كه در زمان تحليل و طراحي سيستم، به‌صورت ويژه‌ به بانك اطلاعاتي در‌حال ساخت توجه شود و رابطه بين اين بانك و برنامه‌هاي كاربردي و همچنين رابطه بين اجزاي مختلف درون بانك، به بهترين شكل ممكن طراحي و پياده‌سازي شود.


توسعه 
به‌طور كلي براي افزايش سرعت يك بانك اطلاعاتي مي‌توان به دو روش اقدام كرد. در واقع پنج عامل مورد اشاره در بالا‌، به دو دسته طولي و عرضي تقسيم‌بندي مي‌شوند. در توسعه طولي كه در اصطلاح انگليسي به Scalp up نيز شناخته مي‌شود، مدير سيستم با صرف هزينه‌، به ارتقاي سخت‌افزار (مثل پردازنده‌ها يا هاردديسك‌ها) يا به‌طوركلي ايجاد شبكه‌اي سريع‌تر اقدام مي‌نمايد يا مثلاً سيستم‌عامل خود را به نسخه‌اي جديدتر و پايدارتر ارتقا مي‌دهد. اما در روش عرضي (Scale out) تقريباً با حفظ همان سخت‌افزار و ساختار شبكه، به بهينه‌سازي روابط موجود ميان عناصر دخيل در سرعت مثل برنامه‌هاي كاربردي، بانك اطلاعاتي و سرور اقدام مي‌كند.

توسعه طولي (Scale up) 
هدف اين مقاله پرداختن به توسعه عرضي براي بهره‌برداري بهينه از امكانات موجود است. اما قبل از آن، جادارد به‌صورت خلا‌صه و فهرست‌وار به توسعه طولي و راه‌حل‌هاي آن نيز پرداخته شود تا زمينه براي بررسي‌هاي بيشتر در آينده فراهم گردد.

راه‌حل يكم: افزايش حافظه مورد استفاده SQL Server از يك به سه گيگابايت. اين كار را بايد با دستكاري در فايلBoot.ini سرور 2000 يا 2003 كه SQL Server در آنجا قرار دارد، انجام دهيد. براي اطلاع از چگونگي انجام‌دادن اين كار، به سايت پشتيباني مايكروسافت رجوع كنيد نشاني(
http://support.microsoft.com) و در آنجا عبارت AWE SQLServer را جستجو كنيد تا مقالاتي كه در اين زمينه وجود دارد، در دسترس شما قرار گيرد.

راه‌حل دوم: ارتقاي سيستم‌عامل ويندوز 2000 به 2003 كه در فرايند caching، سيستم‌عاملي پايدارتر و هوشمندتر قلمداد مي‌شود.

راه‌حل سوم: استفاده از پردازنده‌هاي Xeon به جاي پنتيوم 4 در سرور. اين پردازنده‌ها به دليل ويژگيhyper threading، مي‌توانند سرعت پردازش اطلاعات در سمت سرور را به دو برابر افزايش دهند.

راه‌حل چهارم: هاردديسك‌هاي اسكازي با 15‌هزار دور در دقيقه و سرعت سه مگابيت در ثانيه و يا Sata با 10‌هزار دور در دقيقه و دو مگابيت در ثانيه نسبت به هاردديسك‌هاي IDE با 7500 دور در دقيقه و يك مگابيت در ثانيه از عملكرد بهتري برخوردارند.پس درصورت امكان، از اين ادوات ذخيره‌سازي در سرور بانك اطلا‌عاتي استفاده كنيد.

 راه‌حل پنجم: جداسازي محل ذخيره فايل‌هاي داده‌اي بانك اطلاعاتي (mdf) و فايل‌هاي لاگ (ldf) برروي دو هاردديسك مختلف يا دو ديسك مختلف از يك RAID. معمولاً براي نگهداري mdf استفاده از RAID1 و براي ldf  استفاده از RAID5 توصيه مي‌شود.

با جداسازي اين فايل‌ها از يكديگر، عمل ايجاد لاگ، وقفه‌اي در خواندن و نوشتن اطلاعات بر روي هاردديسكي كه حاوي فايل‌هاي داده‌اي mdf است، ايجاد نمي‌كند.

راه‌حل ششم: راه‌حل آخر و در واقع مشكل‌ترين راه، تقسيم بانك اطلاعاتي (در صورت لزوم) به دو بانك جدا از هم و بر روي دو سرور مختلف است. به عنوان مثال، فرض كنيد كه عمليات روزانه سيستم شما به دو دسته تقسيم مي‌شود: دسته يكم عملياتي است كه طي آن بايد از آخرين اطلاعات موجود بر روي سيستم استفاده شود و هرگونه تغيير نيز بايد فوراً  در همان لحظه بر روي بانك سيستم‌ها (جداول مربوط به آن‌ها كه به
online transactional Processing) OLTP) مشهورند،) اعمال شود.

دسته دوم نيز شامل عملياتي است كه طي آن مي‌توان از اطلاعات چند ساعت يا چند روز پيش نيز استفاده كرد و لزومي به داشتن آخرين اطلاعات به صورت لحظه‌اي نيست. به عنوان نمونه فرض كنيد تعدادي از گزارش‌هاي سيستم مربوط به تحليل آماري فرايندهاي مختلف ماه پيش است. بنابراين بايد تمهيداتي انديشيده شود تا تهيه اين گزارش‌ها -كه البته ارزش آني ندارند، اما به دليل بازه زماني و نوع تحليل آن‌ها، منابع زيادي از سيستم براي خواندن اطلاعات انبوه و تجزيه و تحليل صرف مي‌شود، بايد بر روي سرور دومي در شبكه كه به
سيستم‌هاي online Analytical Processing) OLAP) مشهورند قرار گيرند تا در كار كساني كه مشغول  كار با OLTP  هستند، خللي ايجاد نشود.

بنابراين سرور دومي را در شبكه در نظر بگيريد و كپي بانك اطلاعاتي موجود در سرور اول را به سرور دوم انتقال دهيد. سپس با استفاده از روش Replication سيستم را طوري تنظيم كنيد تا در مواقع خلوت‌بودن ترافيك سيستم (مثلاً نيمه شب) اطلاعات Upgrade شده آن روز را از سرور اول به سرور دوم كپي كند. كليه برنامه‌هايي كه با OLAP  كار مي‌كنند را به بانك مشابه، اما با آدرس سرور دوم ارجاع دهيد.
 
براي كسب اطلاعات بيشتر در زمينه نحوه انجام‌دادن Replication، عبارت مذكور را در سايت ماهنامه شبكه جستجو كنيد. تا به مقالا‌تي در اين زمينه دست پيدا كنيد.

توسعه عرضي (Scale out) 

نام خانوادگي

نام

شماره تامين اجتماعي بيمه شده

شماره سريال بيمه شده

ب

الف

ايندكس خوشه‌اي يا خاصيت منحصر به فرد

كليد اوليه ايندكس غيرخوشه‌اي

راه‌هاي موجود در توسعه عرضي در واقع سريع‌ترين راه‌حل‌هاي افزايش سرعت در بانك‌هاي اطلاعاتي را تشكيل مي‌دهند. برخي از اين راه‌ها فقط با يك بار استفاده، اثر دايمي خود را روي سيستم به جا مي‌گذارند. اما برخي ديگر بايد به عنوان يك الگوي دوره‌اي در مراحل زماني مناسب ازسوي مدير سيستم اجرا شود. اين راه‌ها در واقع جزئي از دستورالعمل‌هاي نگهداري و پشتيباني سيستم محسوب مي‌شوند. در ادامه  به بررسي آن‌ها مي‌پردازيم:

1 - از ساخت جداولي كه فاقد كليد اوليه (Primary key) باشند، خودداري كنيد. كليد اوليه علاوه بر جلوگيري از  ورود اشتباه اطلاعات از سوي كاربر، به دليل داشتن خاصيت منحصر به‌فرد بودن (Unique) به سريع‌تر پيدا‌شدن ركورد موردنظر از همان جدول كمك شاياني مي‌كند. تا آنجا كه براي سيستم امكان دارد براي كليد اوليه از فيلدهاي عددي استفاده كنيد.

استفاده از فيلدهاي رشته‌اي (string) مثلchar ياvarchar به‌عنوان كليد اوليه، كمي كندتر از فيلدهاي عددي است. از انتخاب فيلدهاي رشته‌اي با طول زياد و يا فيلدهايي مثل Memo ،Text و Picture به عنوان كليد اوليه نيز اجتناب كنيد.

2 - تمام كليدهاي خارجي (Foreign key) قابل تعريف در بانك را تعريف كنيد. وجود كليدهاي خارجي نيز علاوه بر جلوگيري از اشتباه كاربر در واردكردن يا حذف اطلاعات، موجب مي‌شود هنگام لينك شدن (join) جداول مادر و فرزند از طريق كليدهاي خارجي، سيستم سرعت بيشتري را در انجام دستورات Select شما از خود نشان دهند.

3 - همان‌طور كه مي‌دانيد ايندكس‌ها در دو نوع خوشه‌اي (cluster) و غيرخوشه‌اي (Non cluster) قابل ساخت هستند. ايندكس‌ها باعث افزايش سرعت خواندن اطلاعات به‌وسيله دستور Select مي‌شوند.
ما تعريف بي‌رويه آن‌ها در سيستم نيز باعث كاهش سرعت اجراي دستورات فرايندي مثل Insert ،Update و Delete  مي‌شود. بنابراين سعي كنيد ايندكس‌هاي ضروري را در سيستم تعريف كنيد. اما در اين راه دست و دلبازي بي‌مورد از خود نشان ندهيد. به عنوان مثال، فرض كنيد در يك شعبه اداره تأمين اجتماعي، جدولي ويژه تعريف بيمه‌شدگان به شكل زير وجود دارد.  

مبلغ

تاريخ

شماره سريال

1

جزء دوم كليد اوليه

جزء اول كليد اوليه

1

 

كليد خارجي از جدول قبل

1

جزئي از ايندكس خوشه اي

جزئي از ايندكس خوشه اي

جدولي نيز براي نگهداري وجه حق بيمه از بيمه‌شدگان نيز تعريف شده است.

همان‌طور كه مشاهده مي‌كنيد، ايندكس نوع خوشه‌اي به فيلدي داده شده كه نسبت به بقيه فيلدها در يك جدول كاربرد بيشتري دارد. چرا كه اين نوع ايندكس نسبت به نوع غيرخوشه‌اي سرعت بيشتري دارد. در ضمن در هر جدول از بانك اطلاعاتي شما فقط قادر به تعريف يك ايندكس خوشه‌اي هستيد كه انتخاب فيلد آن اهميت زيادي دارد. بنابراين لزومي ندارد فيلدي كه كليد اوليه است، حتماً به عنوان ايندكس خوشه‌اي انتخاب شود.

نكته مهم ديگر اين است كه لا‌زم است تمام كليدهاي اوليه جداول ايندكس داراي باشند (خوشه‌اي يا غيرخوشه‌اي) نكته ديگر در زمان ساخت ايندكس‌ها فاكتور پرشدن (Fill Factor) آن‌ها است. اين فاكتور در واقع بيانگر ميزان فضاي مياني است كه بايد براي ركوردهايي كه در آينده درج يا حذف مي‌شوند، خالي نگه داشته شود. بنابراين اگر احساس مي‌كنيد جدول شما به‌طور مداوم مورد عمليات حذف و درج (Insert،‌Delete) قرار مي‌گيرد، اين فاكتور را پايين (مثلاً 30 درصد) انتخاب كنيد. اما اگر صرفاً عمليات درج بر روي يك جدول انجام مي‌گيرد و ميزان حذف اطلاعات از آن بسيار كم است، مي‌توانيد اين ميزان را به ارقام بالاتر مثلاً 90 درصد افزايش دهيد. زيرا اين نوع جداول نيازي به داشتن فضاي خالي مياني براي ركوردهايي كه در آينده جانشين ركوردهاي حذف شده مي‌شوند، ندارد.

اين مسئله براي ايندكس‌هايي كه برروي ديدها (Indexed Views) ساخته مي‌شوند نيز صادق است. به‌طوركلي گذاشتن ايندكس برروي ديدها به افزايش سرعت آن‌ها كمك مي‌كند. در اين حالت، كليه مطالب مذكور از جمله سياست استفاده از ايندكس‌هاي خوشه‌اي و غيرخوشه‌اي و همچنينFill Factor در جداول، در مورد ديدها نيز عيناً بايد رعايت گردد.

4 - در هنگام نوشتن دستورات Select يا در هنگام ساختن ديدها، از استفاده بي‌مورد از پارامترهاي پردازش مثلDistinct و LIKE order by و لينك‌هاي خارجي (Outer join) اجتناب كنيد. در صورت استفاده از اين پارامترها، مطمئن باشيد كه گذاشتن آن‌ها كاملاً ضروري است و چاره ديگري نداريد.

5 - از واگذاري پردازش‌هاي رياضي يا آماري سنگين و مداوم به سرور بانك اطلاعاتي بپرهيزيد. مثلا‌ً به دستور زير نگاهي بيندازيد.
SELECT( a*( b+c )) +( d* E+F))  %G/H From ... WHERE ...


به‌جاي اين‌كار، مي‌توانيد ابتدا با استفاده از يك Select معمولي مثل Select a ,b ,c ,d ,E ,F ,G ,h  فيلدهاي موردنظر را در حافظه كلاينت لود كنيد و سپس عمليات رياضي مذكور را در همان جا انجام دهيد. با اين كار پردازشي كه سرور بايد مثلاً براي 50 كلاينت در عرض چند دقيقه انجام دهد، بين آن 50 كلاينت تقسيم مي‌شود و در واقع هر كلاينت فقط سهم پردازشي مربوط به خود را انجام مي‌دهد.

6 - گاهي عمل اجتماع بين دو Select  توسط دستور Union به شدت بر عملكرد و سرعت سيستم اثر منفي مي‌گذارد. بنابراين در صورت امكان به جاي استفاده از روش مذكور، از روش‌هاي ديگري كه هدفتان را برآورده نمايد، استفاده كنيد.

7 - سعي نماييد فيلدهايي كه از نظر مقدار و ارزش با يكديگر مقايسه مي‌شوند، از يك جنس (type) باشند. در غير اين‌صورت سيستم‌مجبور مي‌شود به طور ضمني، عمل تبديل داده را انجام دهد كه كمي برايش وقت‌گير است. به مثال زير توجه كنيد و فرض بگيريد فيلد customer ID در جدول customers از جنس nchar تعريف شده است. 

Declare@custID char (5)
Set @ CustID =' FDLKO'
Select * From Customers where customerID=@custID


8 - تاحد ممكن از به كار بردن توابع (چه پيش ساخته توسط SQL Server و چه ساخته شده توسط كاربر) در قسمت WHERE يا order by اجتناب كنيد. مثال زير نمونه‌اي از اين مورد است:

Select * Form orders Where DateAdd (Day, 15, orderdata) = '2005/23/07'


9 - در زمان نوشتن تريگر (trigger) بر روي جداول يك بانك اطلاعاتي، از نوشتن تعداد زيادي دستورالعمل در آن‌ها خودداري كنيد. به عبارت ديگر تريگرها را تا حد امكان كوتاه كنيد و دستورالعمل‌ پياد‌ه‌سازي آن‌ها را كم نماييد.
10 - در زمان ساخت كرسر (cursor) درون توابع، روال‌ها و تريگرها از پارامترهاي Forward only يا read only و همچنين local استفاده كنيد تا SQL Server با دانستن اين نكته كه شما قصد تغيير داده‌ها در كرسر موردنظر را نداريد، تغيير يافتني بودن آن‌ها را درنظر نگيرد و آن را براي شما سريع‌تر بسازد.

11 - در صورتي كه تكه‌اي از برنامه شما به ساخت يك جدول موقت (temporary table) نياز دارد، اين كار بايد با ظرافت خاصي صورت بگيرد. اصولا SQL Server براي اجتناب برنامه‌نويسان از ساخت جداول موقت، از يك نوع داده(Data type) خاص به نام Table پشتيباني مي‌كند كه مزيت استفاده از آن اين است كه به‌جاي هاردديسك، در حافظه رم قرارگرفته است و در نتيجه نسبت به جداول موقت سرعت بيشتري دارد.

اما به ياد داشته باشيد كه استفاده بي‌رويه از اين نوع داده، حافظه زيادي را صرف مي‌كند كه مي‌تواند باعث كاهش كارايي سيستم شود. بنابراين اگر احساس مي‌كنيد تعداد جداول موقت، ركوردهاي آن‌ها و زمان استفاده از آن‌ها كم است، از اين نوع داده استفاده كنيد. در غير اين‌صورت، راه‌حل جدول موقت را انتخاب كنيد.
 
12-  قفل‌گذاري بر روي ركوردهايي كه در حال خواندن، درج شدن، حذف شدن يا تغيير كردن هستند، هميشه از مباحث مهم بانك‌هاي اطلاعاتي بوده‌است. همان‌طور‌كه مي‌دانيد يك فرايند (Transaction) شامل يك يا چند دستورالعمل SQL است كه يا بايد همگي به صورت موفقيت‌آميز اجرا شوند (committed) يا در صورت ايجاد خطا در زمان اجراشدن يكي، اجراي بقيه نيز منتفي شود (Rollbacked).
 

ايندكس گذاري برروي ديده ها(Indexed Views) يكي از بهترين راههاي فوري جهت افزايش سرعت جستجو بر روي ديدهااست. در حالت عادي گزينه Manage Indexes بر روي ديدها قابل انتخاب نيست مگر آنكه اولا كليه جداول يا ديدهاي موجود در آن، خود داراي ايندكس باشد و دوم اينكه كليه ديدهاي موجود در آن و هم خود ديد مورد نظر با دستور زير ساخته شده باشند.
Create View....Whit Schema Binding AS.......
 

فرايند به دو صورت قابل پياده‌سازي است. اين كار يا با استفاده از دستورات Begin trans و Committrans انجام مي‌شود كه به آن حالت صريح (Explicit) مي‌گويند يا به صورت ضمني (Implicit) صورت مي‌گيرد كه در آن اثري از دو دستور مذكور ديده نمي‌شود و هر دستور SQL يك فرايند مجزا به حساب مي‌آيد. در هر دو روش ركوردهايي كه تحت‌تأثير دامنه فرايند قرار مي‌گيرند، توسط سيستم قفل مي‌گردند و براي ديگر كاربران نيز غيرقابل استفاده مي‌شوند و در نتيجه باعث كاهش سرعت كار آن‌ها به دليل ايجاد انتظار براي آزاد شدن ركوردها مي‌شود.
 
بنابراين براي رسيدن به حداكثر كارايي سيستم، بايد از ايجاد قفل‌هاي بي‌مورد بر روي ركوردهاي جداول بانك اطلاعاتي جلوگيري كرد. اين كار با استفاده از دستور SET Transaction Isolation Level Read Uncommitted براي فرايندهاي صريح (قبل از شروع فرايند، يعني قبل از دستور (begin Trans  و يا استفاده از دستور WITH NOLOCK  براي فرايندهاي ضمني (پس از قسمت From هر دستور SQL) قابل انجام است. در مورد مسئله فرايندها و انواع قفل‌گذاري مطالب خواندني زيادي در سايت مايكروسافت وجود دارد كه درصورت تمايل مي‌توانيد به آن‌ها نيز مراجعه كنيد.

13 - روال‌هاي ذخيره شده (stored Procedures) پس از هر اجرا، به ازاي هر دستورالعملي كه اجرا مي‌كنند،  جهت اطلاع برنامه فراخوان (كلاينت) از موفقيت‌آميز بودن اجراي آن دستور SQL، پيغامي را به سمت آن برنامه مي‌فرستند. اين مسئله باعث افزايش ترافيك شبكه در اثر فرستادن مداوم پيغام ازSP به سمت كاربر مي‌شود. با تايپ دستور زير در ابتداي يكSP، مي‌توانيد آن را از انجام اين كار منع كنيد:
SET NOCOUNT ON

نتيجه‌گيري‌
مطالب فوق تنها قسمتي از راهكارهاي قابل انجام براي رسيدن به‌سرعت و بازدهي مناسب در بانك‌هاي اطلا‌عاتي مبتني بر SQL Server است. در ضمن‌ بايد اين نكته را هم درنظر داشت كه اصولا‌ً در سيستم‌هاي بزرگ اطلا‌عاتي تحت شبكه، توپولوژي و نوع اجزاي موجود در شبكه از اهميت بسيار زيادي در تعيين سطح كارايي يك بانك اطلا‌عاتي برخورداراست. گاهي حتي در حالي‌كه بهترين طراحي و پيكربندي SQL Server براي يك بانك اطلا‌عاتي انجام شده، يك اشتباه كوچك در سطح شبكه مي‌تواند تمام زحمات را بر ‌باد دهد يا مثلا‌ً يك سهل‌انگاري در نوشتن روال‌هاي ذخيره شده يا تريگرها مي‌تواند سيستم را به‌يك لوپ (Loop) پردازشي بي‌نهايت ببرد و باعث افت شديد سرعت اجراي برنامه‌ها شود. بنابراين در اين‌گونه سيستم‌ها، استفاده بجا و مناسب از منابع سيستم و شبكه و دقت در طراحي و پياده‌سازي جداول، ديدها، روال‌هاي ذخيره‌شده و تريگرها بسيار مهم  و حياتي است.

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

مهاجرت به MySQL دوشنبه سیزدهم آبان 1387 19:14
مهاجرت به MySQL

مهيار داعي‌الحق
ماهنامه شبکه - خرداد ۱۳۸۵ شماره 65

اشاره :

مهاجرت يك پروژه از يك محيط نرم‌افزاري به محيط مشابه ديگر، همواره بسيار دشوارتر از آغاز آن پروژه در يك محيط مشخص است. درواقع فرايند مهاجرت، از اولين مراحل آن (اتخاذ تصميم صحيح)، تا بهره‌برداري از سكو يا نرم‌افزارجديد، به نوعي تفكر فني و مديريتي خاص نيازمند است. در اين مقاله سعي مي‌كنيم مزايا، مشكلات و راهكارهاي مهاجرت سيستم‌هاي اطلاعاتي به‌ MySQL را بررسي نماييم.


اهداف مهاجرت
انتشار نسخه‌هاي جديد ‌MySQL، به ويژه نسخه پنجم آن با قابليت‌هاي فراوان و قيمت ارزان، باعث شده است براي بسياري از شركت‌هايي كه همواره به ‌دليل محدوديت مالي، با هزينه‌هاي خريد، نگهداري و ارتقاي سيستم اطلاعاتي خود دست و پنجه نرم مي‌كردند، جاي شك و ترديدي نماند كه راه نجات آن‌ها، روي‌آوردن به سمت نرم‌افزارهاي سورس باز و به ويژه بانك اطلاعاتي ‌MySQL است. شايد قبلاً شرح كاهش چشمگير هزينه‌هاي نگهداري سيستم در سايت آمازون براثر استفاده از ‌MySQL را شنيده باشيد، اما اكنون مسئله از آن هم فراتر رفته‌ است.

زيرا آن نسخه ‌‌MySQL كه آمازون و چندين سايت اينترنتي را از بحران مالي دور كرد و به سوي وضعيت بهتري رساند، با نسخه كنوني ‌‌MySQL بسيار متفاوت است. شايد در آن زمان حتي بسياري از كارشناسان بي‌طرف سيستم‌ها و بانك اطلاعاتي، ‌MySQL را به دلايل ويژگي‌هاي آن زمان، يعني عدم پشتيباني از برخي امكانات و استانداردهاي يك بانك‌اطلاعاتي چند‌منظوره مثل تريگر، روال ذخيره‌شده، ويو و امثال آن، فقط براي استفاده در چند كاربرد محدود مثل انباركردن اطلاعات يا به اصطلاح ‌Data Warehousing مناسب مي‌دانستند و در برخي كاربردهاي تجاري پرمصرف ديگر مثل سيستم‌هاي مبتني ‌بر فرايندهاي محاسباتي (‌Transaction) استفاده از آن را توصيه نمي‌كردند.

به عنوان مثال، در آن روزگار ‌‌MySQL مي‌توانست براي سايت‌هايي كه صرفاً نقش اطلاع‌رساني را بازي مي‌كردند و چندان درگير پردازش‌هاي سنگين نبودند (مانند سايت آمازون) انتخاب مناسبي قلمداد شود، اما در كاربردهاي ديگري چون سيستم‌هاي اطلاعاتي و مديريت منابع انساني سازمان‌ها و موسسات تجاري‌ (سيستم‌هاي ‌MIS،‌‌ERP يا ...) به عنوان راه‌حل رده چندم هم به حساب نيايد.

با اين‌حال اكنون وضع به گونه ديگري است. تغييراتي كه در نسخه‌هاي جديد ‌‌MySQL داده شده، اين موتور پايگاه داده‌اي را در معرض رقابت جديدي با بانك‌هاي اطلاعاتي سرشناسي چون اوراكل و ‌‌SQLServer قرار داده است. بنابراين براي بسياري از شركت‌هايي كه قصد اختصاص هزينه‌هاي كمتري براي برخورداري از يك سيستم بانك‌اطلاعاتي را دارند، ‌MySQL يك آلترناتيو ايدهآل به حساب مي‌آيد. غير از هزينه‌‌هاي مربوط به مالكيت (TCO) كه پايين بودن آن يكي از نقاط‌قوت ‌MySQL قلمداد مي‌شود، عامل مهم ديگري وجود دارد كه همان خدمات پشتيباني است. اين عامل كه همواره از عوامل بسيار با اهميت در حوزه‌هاي مختلف ‌IT است، تا چند سال قبل با علامت سوال بزرگي درباره برخي محصولات اپن سورس مثل ‌MySQL همراه بود.
 
نامشخص بودن متولي رسمي در قالب يك شركت مطرح و همچنين تعدد توزيع و نسخه‌هاي مختلف، همواره يكي از نقاط‌ضعف برخي نرم‌افزارهاي سورس باز بوده است. اما در مورد ‌MySQL و به‌ويژه در سال‌هاي اخير كه پس از انجمن‌هايي چون ‌MySQL AB، شركت‌هاي مطرحي مثل ‌‌SAP به توسعه و پشتيباني نسخه‌هايي از نرم‌افزارهاي مبتني ‌بر ‌‌MySQL پرداختند، اوضاع بسيار قابل اعتمادتر از گذشته شده‌است. افزايش تعداد حاميان ‌MySQL در ميان شركت‌هاي معتبر و شكل‌گيري اجتماعاتي براي حمايت از توسعه‌دهندگان و استفاده‌كنندگان ‌‌MySQL با نام MySQL Community و MySQL NetWork، از عوامل پايدارتر شدن موضع ‌MySQL در برابر ساير رقبا است.

هزينه‌يابي
همان‌طور كه گفته‌شد، هزينه، همواره يكي از عوامل مورد توجه در انتخاب محصولات اپن سورس و به‌ويژه ‌MySQL  بوده و هست. طبق آمار موسسه ‌MySQL، هزينه خريد و نگهداري مجوز استفاده از ساير بانك‌هاي اطلاعاتي معتبر در  سال 2005 بالغ بر ده ميليون دلار براي بيش از دو هزار شركت بزرگ برآورد شده است، اما بعضي از آن‌ها توانسته‌اند با مهاجرت از ساير بانك‌هاي اطلاعاتي به سمت‌ ‌MySQL بين هشتاد تا نود درصد هزينه‌هاي مذكور را كاهش دهند.
 
در حالي كه علاوه بر مسائل مربوط به هزينه خريد و نگهداري مجوز استفاده، نكات قابل توجه ديگري نيز در اين قبيل ملاحظات مالي مطرح است. يكي از اين نكات، هزينه مربوط به ارتقاي سخت‌افزار يا سيستم عامل در موارد ضروري است. براين اساس، افزايش تعداد سرورها در ساير بانك‌هاي اطلاعاتي داراي هزينه‌هاي جداگانه و خاص خود است. در‌حالي‌كه اين مسئله در ‌MySQL با وجود سرويس‌هاي پشتيباني خاصي كه براي اين‌گونه موارد درنظر گرفته شده‌است، مشتريان را نسبت به افزايش تعداد سرورها نگران نمي‌كند. در ساير موارد مربوط به ارتقا نيز كماكان استفاده از ‌MySQL بسيار مقرون‌به‌صرفه جلوه مي‌نمايد. وجود نسخه‌هاي ويژه انواع سكوهاي سخت‌افزاري و نرم‌افزاري چون اينتل، اپل، يونيكس، ويندوز، لينوكس، انواع معماري‌هاي 64 بيتي و امثال آن ازجمله دلايل اين امر به حساب مي‌آيند.

‌نگاهي به ‌‌mySQL AB
اصولاً مسئله مهاجرت از يك نرم‌افزار به نرم‌افزار ديگر، پيچيده و مستلزم دقت كافي در نكات فني و مالي است. بدون‌شك هيچ مشتري عاقلي حاضر به خريد يك محصول نرم‌افزاري كه نام يك شركت پشتيباني‌كننده را به همراه نداشته باشد، نيست. حال هرچه اين شركت سرشناس‌تر و محصولش در بازار داراي استفاده كننده بيشتري باشد، اطمينان مشتريان بعدي نيز بالاتر مي‌رود و ناخودآگاه محصول فوق را به عنوان يك انتخاب قوي براي آن‌ها درمي‌آورد. در حال حاضر‌ MySQL NetWork از اين ويژگي برخوردار است. اين اتحاديه تا سال 2005 در بيش از 22 كشور دنيا، بالغ بر هشت ميليون نسخه ‌‌MySQL AB را نصب و پشتيباني كرده‌است و به گفته مسئولان آن، روزانه تقريباً چهل هزار نفر اقدام به دانلود تمام يا قسمتي از محصولات ‌‌MySQL AB مي‌نمايند.
 
اما شركت‌هاي بزرگي كه خواستار ارائه پشتيباني از محصولات باشند نيز مي‌توانند امتياز پشتيباني موسوم به‌MySQL NetWork را خريداري كنند و از مزاياي آن بهره‌مند شوند. هم‌اكنون شركت‌هاي معتبري چون HP، ناول، دل و ديگران نيز از عاملا‌ن فروش امتياز پشتيباني ‌‌MySQL Network هستند و بسياري از شركت‌ها يا سازمان‌هاي بزرگ نظير ياهو، گوگل، ناسا، سايت آمازون و ... نيز از مشتريان اين امتياز پشتيباني به شمار مي‌آيند. به گفته دان آگرونو، مدير فني سايت هواشناسي ‌Weather.com (يكي از ده سايت اينترنتي بزرگ جهان)، استفاده از يك سيستم عامل لينوكس، پردازنده اينتل و بانك ‌MySQL به جاي سرور سولاريسي در اين سايت باعث كاهش يك سوم هزينه‌هاي نگهداري و افزايش سي‌درصدي كارايي و حجم پردازش شده است.

هزينه برحسب كارايي
‌صحبت از كارايي يا سرعت پردازش ذخيره، بازيابي يا پردازش اطلاعات به ميان آمد. بد نيست عامل هزينه را به همراه مسئله كارايي سيستم به‌طورهمزمان بررسي نماييم. كاملاً واضح است كه هيچ كارفرمايي حاضر نيست سرعت، كارايي و ظرفيت سيستم خود را كاملاً فداي هزينه پايين نمايد. بنابراين به دنبال راه‌حل ميانه و بهينه‌اي مي‌گردد كه تا حدودي هر دو خواسته را برآورده كند. امروزه ‌MySQL با توانايي‌ها و قابليت‌هاي جديدي كه در نسخه پنجم به بعد خود به همراه دارد، قادر است اين مهم را به انجام برساند.

بنابراين مشتري در زمان استفاده از ‌‌MySQL نبايد نگران هزينه احتمالي براي ارتقاي سخت‌افزار خود يا افزايش تعداد سرورها، پردازنده‌ها، يا هارديسك‌ها باشد. چراكه‌ MySQL مي‌تواند تا حدود قابل توجهي اين نياز را جبران نمايد. وجود انواع موتورهاي ذخيره‌سازي ‌(‌Store Engin در ‌MySQL) كه شيوه ذخيره‌سازي اطلاعات را براي كاربردهاي گوناگون تعريف مي‌نمايند، از جمله ابزارهاي مهم در مقبول بودن سرعت سيستم به حساب ميآيند. دو موتور ذخيره‌سازي مشهور به نام ‌‌InnODB براي كاربردهاي OLTP و موتور ISAM براي كاربردهاي OLAp به علاوه چندين موتور ذخيره‌سازي ديگر براي  ساير كاربردها دستيابي به اين هدف را آسان‌تر نموده‌اند. ابزارهاي ديگري چون سيستم ايندكس‌گذاري روي متون ‌(Text Indexing)، سيستم تنظيم‌كننده و پيكربندي حافظه‌ ‌Cache مورداستفاده موتور MySQL، و برنامه‌هاي بهينه‌ساز كارايي سيستم ‌(‌Optimizer) نيز از جمله ابزارهاي موجود در اين بانك اطلاعاتي هستند.

جدول 1


حتي بسياري از كارشناسان بر اين باورند كه در هنگام الزام به استفاده از تعداد سرورهاي بيشتر نيز ‌‌MySQL داراي مزيت بزرگ است؛ زيرا هم از افزايش تعداد سرورهاي بانك اطلاعات در هر دو شكل آن يعني هم به صورت اشتراك داده و هم به صورت خوشه‌بندي به خوبي پشتيباني مي‌كند و هم خريد مجوز آن براي افزايش و استفاده روي سرورهاي جديد بسيار مقرون به صرفه‌تر از ساير بانك‌هاي اطلاعاتي موجود چون اوراكل يا ‌SQLServer است. جدول 1 نسبت هزينه به كارايي‌‌(علا‌مت $‌US به معناي واحد هزينه به دلار و ‌TOPS يعني تعداد عمليات قابل اجرا در واحد ثانيه است) را براي چند پايگاه داده مختلف نشان مي‌دهد. در اين جدول عدد كمتر نشان‌دهنده هزينه كمتر و كارايي بيشتر است.

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

اوراکل نرم‌افزار بانک اطلاعاتي مجاني عرضه کرد

سرويس خبر شبکه آنلاين
پنجشنبه 12 آبان 1384


شرکت اوراکل در اقدامي قافلگيرانه يک نسخه مجاني از نرم‌افزار بانک اطلاعاتي ORACLE 10g با نام Express Edition منتشر کرد.


روز سه‌شنبه شرکت اوراکل صنعت نرم‌افزار جهان را غافلگير کرد و با صدور اطلاعيه‌اي انتشار مجاني نسخه Express از نرم‌افزار مشهور و محبوب ORACLE 10g را اعلام و طلسم گران قيمت بودن اين نرم‌افزار را شکست.

نسخه Express از نرم‌افزار ORACLE 10g داراي محدوديت‌هايي است. از جمله تنها روي سرورهايي کار مي‌کند که يک پردازنده دارند و فقط از 4 گيگابايت فضاي ذخيره‌سازي روي هاردديسک و يک گيگابايت حافظه رم پشتيباني مي‌کند.

گرچه محدوديت‌هاي نسخه Express مانع از به‌کارگيري آن در محيط‌ها و سايت‌هاي بزرگ مي‌شود اما اين مشخصات براي راه‌اندازي سايت‌هاي کوچک و متوسط و نيز مصرف برنامه‌نويسان شرکت‌هاي نرم‌افزاري کافي به نظر مي‌رسد.

نسخه بتاي Express Edition از اين نشاني قابل دريافت است.

نرم‌افزار بانک اطلاعاتي اوراکل قدرتمند‌ترين سيستم در نوع خود به شمار مي‌رود و زيرساخت نرم‌افزاري بسيار از سازمان‌ها و شرکت‌هاي بزرگ دنيا همچون ساختار دولت الکترونيک برخي از کشورهاي جهان بر مبناي آن بنا شده است. اما معماري و اينترفيس دشوار اين نرم‌افزار تاکنون مانع از رويکرد عمده برنامه‌نويسان رده متوسط به سمت آن شده است.

به نظر مي‌رسد اوراکل قصد دارد با اين اقدام چهره مهربان‌تر و کاربرپسندتري از خود ارائه دهد و جايگاه خود را در بازارهايي که نرم افزار SQL Server مايکروسافت و برنامه اپن سورس MySQL حرف اول را مي‌زنند تقويت کند.

اقدام اوراکل از سوي بسياري از محافل اپن سورسي جهان حرکتي در جهت تضعيف جنبش اپن سورس در بازار نرم‌افزارهاي بانک اطلاعاتي ارزيابي شده است. محافل اپن سورسي معتقدند که اوراکل قصد دارد با اين کار نرم‌افزار MySQL ، محبوب‌ترين بانک اطلاعاتي در صنعت اپن سورس را به زمين بزند.

نرم‌افزار MySQL‌ يکي از ارکان پلاتفرم نرم‌افزاري ترکيبي موسوم به LAMP است که از اين بانک اطلاعاتي به همراه سيستم‌عامل لينوکس، آپاچي و PHP تشکيل شده است.

برخي صاحب‌نظران مي‌گويند شرکت اوراکل با اين فرض که بخش عمده‌اي از رويکرد کاربران سراسر دنيا به نرم‌افزارهاي اپن سورس ناشي از توجه آنان به مقوله قيمت پايين اين نرم‌افزارهاست و مساله باز بودن کد منبع آنها برايشان اهيمت کمتري دارد، نرم‌افزار ORACLE 10g Express Edition را رايگان کرده است ولي از بازکردن سورس کد آن اجتناب کرده است تا کسب‌وکار غير اپن سورسي خود را کماکان پررونق نگه دارد.

سخنگوي MySQL در واکنش به اين خبر گفت: بيشتر کاربران از نرم‌افزارها و نسخه‌هايي که داراي محدوديت هستند خوششان نمي‌آيد و دنبال نرم‌افزارهاي Full Edition مانند نسخه پنجم بانک اطلاعاتي MySQL هستند.

همچنين پاول بيچ، يک مدير پروژه اپن سورسي Firebird در اين زمينه گفت: نسخه Express اوراکل قابل رقابت با نرم‌افزارهاي بانک اطلاعاتي اپن سورسي همچون Firebird و PostgreSQL نيست.

يک برنامه‌نويس علاقه‌مند به PostgreSQL در گفتگو با رسانه ZDNet به کاربران صنعت اپن سورس هشدار داد که گول اوراکل را نخورند زيرا نسخه 8.1 برنامه PostgreSQL که تا چند روز ديگر به بازار مي‌آيد قادر است چندين گيگا بايت و حداکثر 8 پردازنده را پشتيباني کند.

گروهي از ناظران با يادآوري وجود شبکه عظيم بين‌المللي فروش نرم‌افزار اوراکل، نسبت به دست‌کم گرفتن قدرت بخش بازاريابي شرکت اوراکل از سوي کاربران اپن سورس هشدار دادند و خواستار تقويت بازار نرم‌افزارهاي اپن سورس در عرصه بانک‌هاي اطلاعاتي شدند.

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

مايکروسافت Visual Studio 2005 و SQL Server 2005 را معرفي کرد

سرويس خبر شبکه آنلاين
سه شنبه 17 آبان 1384


مايکروسافت با معرفي ويژوال استوديوي 2005 و نسخه جديد SQL Server ، از پلاتفرم نرم‌افزاري دات‌نت 2 رسما پرده‌برداري کرد. نسخه Express هر دو نرم‌افزار رايگان است.


روز دوشنبه شرکت مايکروسافت طي مراسمي بزرگي سه محصول جديد و مهم Visual Studio 2005 ، SQL Server 2005 و BizTalk Server 2006 را معرفي کرد.

دو نرم‌افزار Visual Studio 2005 و SQL Server 2005 بخش اصلي پلاتفرم جديد دات نت 2 را تشکيل مي‌دهند. نرم‌افزار ويژوال استوديو يک ابزار جامع برنامه‌نويسي (IDE) است که براي توليد نرم‌افزارهاي تحت وب (ASP.NET) يا تحت ويندوز و مبتني بر پلاتفرم دات نت به‌کار مي‌رود. نرم‌افزار SQL Server يک سيستم جامع مديريت بانک‌هاي اطلاعاتي است که روي سرور ويندوز قابل نصب است.

نرم‌افزار BizTalk Server يک سيستم پيشرفته نرم‌افزاري مبتني بر فناوري‌هاي XML و Web Services است که در تجارت و کسب‌وکار الکترونيک کاربرد دارد و از محصولات موفق مايکروسافت طي سالهاي اخير محسوب مي‌شود.

در نسخه جديد ويژوال استوديو علاوه بر پشتيباني از زيرساخت نرم‌افزاري دات نت 2 ، امکانات جديدي به آن افزوده شده و کاربران شاهد پيشرفت‌هاي قابل توجهي در کارآيي پلاتفرم دات نت خواهند بود. ويژوال استوديوي 2005 اولين ارتقاي مهم اين نرم‌افزار پس از دو سال محسوب مي‌شود.

نسخه جديد SQL Server دربرگيرنده پيشرفت‌هاي بسيار گسترده و متنوعي نسبت به نسخه قبلي آن است. مهمترين تغيير در نسخه جديد پشتيباني ذاتي آن از چارچوب دات نت و فناوري XML است. نرم‌افزار مديريت بانک‌هاي اطلاعاتي SQL Server 2005 اولين ارتقاء جدي اين نرم افزار پس از 5 سال است.

نسخه 2005 از نرم‌افزار برنامه نويسي ويژوال استوديو خود يک برنامه 32 بيتي است اما گفته مي‌شود امکاناتي براي توليد برنامه‌هاي 64 بيتي در آن درنظر گرفته شده است.

ويژوال استوديوي 2005 در چهار نسخه مستقل با نام‌هاي اکسپرس، استاندارد ، Professional و Team System عرضه مي‌شود که دو نسخه اول مخصوص علاقه‌مندان به آشنايي با پلاتفرم دات‌نت ، مبتديان و نيز کساني که نمي‌توانند هزينه زيادي براي خريد نرم‌افزار بپردازند در نظر گرفته شده اما دو نسخه ديگر براي استفاده شرکت‌هاي توليد نرم‌افزار، سازمان‌هاي بزرگ و مقاصد حرفه‌اي مناسب هستند. يک نسخه پنجم نيز مخصوص توليد نرم‌افزارهاي سازگار با مجموعه آفيس درنظر گرفته شده است.
جدول مقايسه هر 5 نسخه را مي‌توانيد از
اين نشاني ببينيد.

علاوه بر اين، نسخه جديد ويژوال استوديوي 2005 در غالب يک بسته نرم‌افزار ويژه همراه SQL Server 2005 نيز به صورت يکجا عرضه مي‌شود.

در حال حاضر با درنظرگرفتن ابزارهاي برنامه‌نويسي دات نت و نرم‌افزار بانک اطلاعاتي SQL، مهمترين رقيب پلاتفرم نرم‌افزاري دات‌نت مجموعه راهکارهاي ارائه شده از سوي شرکت اوراکل است. به همين دليل شرکت مايکروسافت اعلام کرده‌است آن دسته از مصرف‌کنندگان اوراکل که مايل باشند بانک اطلاعاتي SQL Server 2005 را جايگزين بانک اطلاعاتي اوراکل در سيستم کنوني خود کنند مي‌توانند از 50 درصد تخفيف ويژه استفاده کنند.

راهکار اوراکل علاوه بر نرم‌افزار بانک اطلاعاتي معروف اين شرکت شامل اجزاي متنوعي است که عمدتا بر مبناي معماري و فناوري جاوا طراحي شده‌اند. همچنين شرکت آي‌بي‌ام با مجموعه راهکارهاي موسوم به WebSphere نيز يکي از جدي‌ترين رقباي مايکروسافت در اين زمينه محسوب مي‌شود.

شرکت مايکروسافت همچنين اعلام کرد نسخه اکسپرس ويژوال استوديوي 2005 و SQL Server 2005‌ را رايگان عرضه مي‌کند. براي دانلود نسخه رايگان اين دو نرم‌افزار مي‌توانيد به اين نشاني مراجعه کنيد.

ناظران اين اقدام مايکروسافت را پاسخي به اقدام چند روز پيش شرکت اوراکل در رايگان کردن نسخه اکسپرس نرم‌افزار بانک اطلاعاتي 10g ساخت اين شرکت ارزيابي مي‌کنند.

اغلب تحليلگران معتقدند عرضه اين سه محصول مهمترين رويداد شرکت مايکروسافت طي پنج‌سال گذشته در عرصه نرم‌افزارهاي سرويس‌دهنده و برنامه‌نويسي است.

شرکت مايکروسافت براي معرفي و تبليغ اين سه محصول مراسم گسترده‌ و کم‌سابقه‌اي را در بيش از 30 کشور جهان تدارک ديده‌است که از هفتم تا نهم ماه نوامبر برگزار خواهند شد.

از روز دوشنبه جاي جاي سايت مايکروسافت به اطلاع رساني پيرامون اين رويداد اختصاص يافته است. براي مشاهده جزئيات برنامه‌هاي معرفي اين سه محصول در اقصا نقاط دنيا و نيز آشنايي با مشخصات فني پلاتفرم جديد مايکروسافت به اين نشاني مراجعه کنيد.

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

ابزارهاي ويژوال‌ در MySQL دوشنبه سیزدهم آبان 1387 19:7
ابزارهاي ويژوال‌ در MySQL

مهيار داعي‌الحق
ماهنامه شبکه - تير ۱۳۸۵ شماره 66

اشاره :

در چند شماره گذشته و پياپي ماهنامه شبكه، مقالاتي درزمينه آشنايي با MySQL و روند تكامل و بهبود سرويس‌هاي مختلف موجود در آن به چاپ رسيد. در اين شماره قصد داريم به ابزارهاي گرافيكي يا همان واسط‌هاي كاربري كه سرويس‌هاي مذكور را در اختيار كاربر قرار مي‌دهند بپردازيم.


داشتن ابزارها و واسط‌هاي كاربري گرافيكي همواره از نقاط قوت يك پلتفرم، سيستم‌عامل يا برنامه نرم‌افزاري محسوب مي‌شود. هرچند روح يا لايه متفكر يك نرم‌افزار را هسته يا موتور اجرايي درون آن تشكيل مي‌دهد، بدون داشتن يك رابط‌گرافيكي كاربرپسند كه نقش كالبد و پيكر آن را بازي مي‌كند، مانند موجودي نامرئي است كه بسياري از ويژگي‌ها و توانايي‌هايش از ديد ديگران پنهان مي‌ماند. از اين‌رو بسياري از نرم‌افزارهايي كه به‌ صورت سنتي براساس دستورات خط فرمان، سرويس‌هاي خود را در اختيار كاربران قرار مي‌دادند تلاش نمودند ضمن حفظ يكپارچگي و توانايي‌ها و ويژگي‌هاي سابق خود، ابزارهاي جديدي را براي برقراري يا تكميل هرچه بهتر رابطه خود با كاربران و به‌خصوص متخصصان و برنامه‌نويسان سيستم عامل‌هاي گرافيكي ارائه  نمايند.

بانك‌هاي اطلاعاتي نيز به دليل ماهيت خود كه سطح گسترده‌اي از سرويس‌هاي مختلف را دربرمي‌گيرند، نه تنها از اين قاعده مستثني نبوده‌اند، بلكه در برخي موارد نيز چاره‌اي جز پيوستن به اين روند نيافته‌اند. شايد بتوان اقبال برخي برنامه‌نويسان و توسعه‌‌دهندگان به نسخه‌هاي اوليه برخي بانك‌هاي اطلاعاتي نوپا، چون SQLServer مايكروسافت، را نمونه بارزي از تمايل متخصصان به استفاده از بانك‌هاي اطلاعاتيِ داراي واسط كاربر گرافيكي دانست. در حالي كه نقص همين ويژگي در برخي بانك‌هاي اطلاعاتي قدرتمند و پيش‌كسوتي چون اينفورميكس، باعث افول و پايان يكه‌تازيشان در عرصه نگهداري و پردازش اطلاعات شد.

از اين رو بانك‌اطلاعاتي MySQL كه قاعدتاً با توجه به پيشرفت‌هاي روز به‌روز و شگفت‌انگيز محيط‌هاي گرافيكي همزاد خود يعني لينوكس، راهي جز پيوستن به خط‌مشي مذكور را نمي‌ديد، از نسخه 4 و به خصوص نسخه 5 شاهد دگرگوني بسيار شگرفي در ارائه ابزارهاي گرافيكي مديريت، توسعه و عيب‌يابي بانك‌هاي اطلاعاتي شد. اين ابزارهاي گرافيكي همچون خود هسته MySQL به‌صورت منبع‌باز و در دو قالب برنامه قابل نصب و سورس‌كد قابل كامپايل از سايت mysql.com به‌صورت رايگان براي انواع سكوها چون ويندوز، لينوكس و مكينتاش قابل دسترس هستند.

شكل 1

مديريت سيستم و MySQL Administrator
 
از اين برنامه براي انجام‌دادن عمليات مديريتي  و پيكربندي MySQL استفاده مي‌شود. ويرايش كنوني اين ابزار مديريتي داراي يازده قسمت مختلف است كه هركدام وظيفه خاصي را به عهده دارند (شكل 1) كه برخي از آن‌ها عبارتند از:

Ÿ‌‌Server Information 
در اين قسمت مشخصات سرور ارائه ‌دهنده سرويس‌هاي MySQL مثل نام كامپيوتر، آدرسIP، سيستم عامل، پردازنده و امثال آن براي مدير سيستم نمايش داده مي‌شود.

Ÿ‌Server Control 
در اين پنجره امكان شروع يا توقف سرويس MySQL و كنترل آن وجود دارد. در واقع اين قسمت همان كاري را انجام مي‌دهد كه مركز كنترل سرويس در سيستم عامل به عهده دارد.

Ÿ‌Startup Parameters 
شايد مهم‌ترين و به بياني، مديريتي‌ترين بخش ابزار مذكور، قسمت مربوط به تنظيم پارامترهاي پيكربندي موتورMySQL است. براي كار با اين پنجره تسلط به مفاهيم پايگاه‌هاي داده‌اي و همچنين واژه‌ها و تكنيك‌هاي مديريتيMySQL بسيار ضروري است. در واقع اين زير برنامه از تنظيمات شبكه‌اي چون پورت TCP/IP گرفته تا تنظيمات امنيتي موتور MySQL را انجام مي‌دهد. به‌علا‌وه، تمام پارامترها و تنظيمات مربوط به دو موتور ذخيره‌سازي مشهور يعني MyISAM و InnoDB به‌خصوص تنظيمات مربوط به بافرهاي آن‌ها نيز دراين جا تعريف مي‌شوند.

در قسمت‌هاي ديگر اين پانل نيز پارامترهاي ديگري چون ميزان حافظه نهفته قابل تخصيص به عمليات جست‌وجو، يعني همان Query Cache يا برخي تنظيمات مربوط به عمليات Replication كه مستلزم تخصص كافي مدير سيستم در زمينه‌هاي مربوطه است در اختيار وي قرار داده مي‌شود.

Ÿ‌User Administration 
تعريف نام كاربر، رمز عبور و ساير مشخصات آن، به علاوه تعريف سطوح دسترسي وي به كليه موجوديت‌هاي درون يك بانك اطلاعاتي و ساير تنظيمات كاربر، در اين قسمت انجام مي‌شود.

Ÿ‌Server Connentions 
در اين پانل، اطلاعاتي درمورد كاربران در حال اتصال و كار با بانك‌هاي اطلاعاتي مثل نام كاربر، كامپيوتر در حال استفاده، بانك اطلاعاتي مورد استفاده، نوع كار در حال انجام و ... نمايش داده شده و امكان توقف پردازش‌هاي در حال انجام توسط كاربر به وسيله مكانيسم Kill Process براي مدير بانك اطلاعاتي فراهم گشته است.

Ÿ‌Health 
نمايي از وضعيت فعلي سيستم مثل ميزان استفاده از پردازنده، حافظه، ترافيك داده‌اي در شبكه و خلاصه‌اي از وضعيت فعلي پارامترهاي اوليه‌اي كه در قسمت Startup Variables توسط مدير سيستم تنظيم شده بود و ساير موارد مربوط به كارايي و موقعيت پردازشي سرور در اين قسمت قابل مشاهده است.

ساير قسمت‌ها
قسمت‌هاي ديگر ابزار مديريت سيستم، شامل برنامه‌هايي براي كنترل لاگ‌ها، كنترل وضعيت عمليات Replication  در حال اجرا و دو برنامه جهت عمليات پشتيبان‌گيري و بازاريابي اطلاعات است. در اين زمينه نسخه پنجم MySQL داراي تغييرات بسيار مهم براي پشتيباني كامل از عمليات مذكور است. در اين نسخه امكان انجام‌دادن چهار نوع پشتيبان‌گيري از يك بانك‌اطلاعاتي وجود دارد. ضمن اين‌كه هركدام از اين چهار نوع نيز به نوبه خود تنظيمات بسيار متعددي دارند كه مي‌توانند به مقاصد پشتيبان‌گيري متعددي پاسخگو باشند.
 
حتي اين عمليات براي آن‌كه بتواند دقيقاً مدير سيستم را در پشتيبان‌گيري اجزاي موردنياز و حياتي يك بانك اطلاعاتي ياري دهد، عمليات مذكور را تا حد تك‌‌تك اشياي موجود در بانك مثل يكايك جداول، ديدها، روال‌ها و ساير موجوديت‌ها قابل انجام نموده است؛ ضمن اين‌كه عمليات بازيابي (Restore) اطلاعات از فايل‌هاي پشتيبان نيز به همين صورت قابل انتخاب توسط مدير سيستم است.

مديريت بانك اطلاعاتي و Query Browser 
Query Browser عنوان يك ابزار گرافيكي توانمند براي كار با موجوديت‌هاي درون يك بانك اطلاعاتي است. در واقع با اين ابزار مي‌توان يك بانك‌اطلاعاتي يا همان به اصطلاح Schema را ساخت و موجوديت‌هاي درون آن اعم از جداول، ديدها، روال‌ها و توابع را تعريف كرد. در سمت راست پانل اين ابزار پنجره‌اي به نام Schemata وجود دارد كه محل تعريف و مشاهده بانك‌هاي اطلاعاتي و موجوديت‌هاي درون آن‌هاست. در اين پنجره كاربر قادر خواهد بود با يك راست‌كليك‌ ساده و انتخاب New Schema پايگاه داده جديد خود را تعريف كند و سپس به همين روش به تعريف ساختار دروني آن بپردازد.

شكل 2

براي اين كار كافي است با راستكليك روي نام بانك ايجاد شده، گزينه ‌New Table را انتخاب كنيد. پس از آن پنجره‌اي نمايش داده مي‌شود كه تمام امكانات ساده و پيشرفته‌ براي تعريف يك جدول (ستون‌ها) در آن مشاهده مي‌شود. اين پنجره درعين سادگي، امكان تعريف فيلدهاي يك جدول را به آساني فراهم مي‌كند.

به‌علا‌وه، بخش‌هايي براي انجام‌دادن امور پيشرفته‌اي چون ايندكس‌گذاري روي جدول و انتخاب ايندكس (از بين سه نوع Btree ،Hash ،(Rtree يا حتي انتخاب نوع موتور ذخيره‌سازي مورد استفاده براي كار با داده‌هاي اين جدول در حال ساخت (از بين هفت موتور ذخيره‌سازي مشهور چون ISAM ،InnoDB ،MyISAM ،Memory ،Merge ،NDB ،BDB) و ساير تكنيك‌هاي پيشرفته را نيز دارد.

در سمت چپ اين ابزار نيز محل نوشتن دستورات SQL براي كار با داده‌هاي موجود در جداول بانك اطلاعاتي يا درهنگام ساخت ساير موجوديت‌ها مثل ديدها، روال‌ها و توابع مشاهده مي‌شود. (شكل 2)

شكل 3

مهاجرت و Migration ToolKit
 
با اين همه، مهم‌ترين واژه دنياي پلتفرم‌هاي نرم‌افزاري كه اتفاقا ًMySQL سرمايه‌گذاري و سروصداي زيادي روي آن به راه انداخته، مسئله مهاجرت است.
 
با ابزار Migration Toolkit، يك توسعه‌‌دهنده يا مدير سيستم مي‌تواند بانك اطلاعاتي موجود خود را از يك پلتفرم يا موتور پايگاه داده‌اي ديگر مثل اوراكل، اكسس يا SQLServer به MySQL  انتقال دهد.

اين ابزار با استفاده از فناوري جاوا و توابع موجود در محيط يا پلتفرم اجرايي جاوا (jRE) قادر است بانك‌هاي اطلاعاتي موجود در هر پايگاه داده‌اي را كه از jDBC براي اتصال به آن پشتيباني مي‌كند، به MySQL منتقل كند.
 
در قدم اول مدير سيستم، مبدا و مقصد مهاجرت يك بانك اطلاعاتي را مشخص مي‌كند. آن‌گاه فهرستي از موجوديت‌هاي داخل بانك مبدا نمايان مي‌شود و او مي‌تواند جداول، ديدها و هر چيزي را كه مايل به انتقال به MySQL است، انتخاب كند. با اين كار، ابزار مهاجرت، اسكريپت‌هاي DDL براي ساخت اين موجوديت‌ها در مقصد را آماده مي‌كند. در قدم بعد، يك بانك اطلاعاتي در سرور MySQL (مقصد) ساخته شده و اسكريپت‌هاي DDL در آن‌جا اجرا مي‌شوند. بدين ترتيب يك ساختار مشابه بانك اطلاعاتي مبدا، در سرور MySQL مقصد ساخته شده و درنهايت با يك عمل انتقال داده يا به اصطلاح يك كپي گروهي (Bulk Copy) كليه داده‌هاي موجود در جداول به بانك اطلاعاتي مقصد كپي مي‌شود. (شكل 3)

شكل 4

طراحي بانك اطلاعاتي و MySQL Workbench
 
ميزكار MySQL عنوان برنامه‌اي جديد است كه به وسيله آن مي‌توان جداول و ديدهاي يك بانك اطلاعاتي را طراحي كرد و روابط بين جداول را به‌صورت گرافيكي تعريف نمود.

اين ابزار، پانلي را كه شمايل‌هاي گرافيكي خاصي روي آن ديده مي‌شود، در اختيار طراح بانك قرار مي‌دهد تا وي با استفاده از آن‌ها (كه هر كدام نماينده يك نوع موجوديت در MySQL است)، بانك موردنظر خود را طراحي نمايد و پس از برقراري روابط بين آن‌ها، با يك فرمان، موجوديت‌هاي مذكور را يكباره در بانك اطلاعاتي موردنظر ايجاد كند.

ميزكار MySQL را در واقع مي‌توان هم نوعي برنامه طراحي بانك به حساب آورد و هم نوعي Query Browser  گرافيكي‌تر دانست كه مي‌تواند عملكرد اين برنامه را شفاف‌تر و آسان‌تر نمايد. ضمن اين‌كه مستندات (Document) مناسبي را نيز براي استفاده تحليلگران، برنامه‌نويسان و مديران سيستم پديد آورد. (شكل 4)

شايان ذكر است كه بسياري از فروشندگان محصولات نرم‌افزاري نيز به دليل ماهيت اپن‌سورس بودن MySQL توانسته‌اند ابزارهاي بصري ويژه خود را براي آن تهيه و ارائه  نمايند. به‌عنوان مثال شركت اروپايي SAP نسخه‌اي از يك پايگاه‌داده به نام MAXDB را براساس هسته MySQL ارائه نموده كه داراي ابزارها و محيط مختص به خود است، اما بنيان اصلي آن همان موتور MySQL است. به همين دليل مي‌توان اميدوار بود كه MySQL در آينده نزديك داراي ابزارها و واسط‌هاي كاربر قدرتمندي در رقابت با ساير برنامه‌ها باشد

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

گزارش تصويري اختصاصي ماهنامه شبكه از جيتكس ۲۰۰۷ - قسمت دوم، نماي عمومي نمايشگاه

سرويس خبر شبکه آنلاين
شنبه 24 شهريور 1386

اشاره :

نمايشگاه جيتكس ۲۰۰۷ از تاريخ ۱۷ تا ۲۱ شهريور ماه در محل دائمي نمايشگاههاي مركز تجارت جهاني دوبي برگزار شد. در اين گزارش تصويري تعداد ديگري از عكسهاي نمايشگاه را ملاحظه ميكنيد.


عکس از: بهروز نوعي پور و پرهام ايزدپناه

نمايشگاه جيتكس ۲۰۰۷ از تاريخ ۱۷ تا ۲۱ شهريور ماه در محل دائمي نمايشگاههاي مركز تجارت جهاني دوبي برگزار شد. در اين گزارش تصويري تعداد ديگري از عكسهاي نمايشگاه را ملاحظه ميكنيد. (براي تماشاي تصاوير زير در ابعاد بزرگتر روي آنها کليک کنيد.)

شايان ذکر است که در پرونده ويژه شماره آتي ماهنامه شبکه که به همين نمايشگاه اختصاص دارد، تصاوير جالب و ديدني ديگري به صورت رنگي به چاپ خواهد رسيد.

راهروي ورودی سالن ها

راهروي ورودی سالن ها

محل ثبت نام براي بازديد از
نمايشگاه و پرداخت بهاي بليط

 

 

 

داخل يکي از سالن ها

فهرست کامل شرکتهاي حاضر در
 نمايشگاه در راهروي بيرون سالن‌ها

راهروي ورودی سالن ها

 

 

 

نماي ورود به غرفه‌هاي
شهر اينترنتي دوبي

غرفه‌هاي شهر اينترنتي دوبي

ماکت شهر جديد Smart City
 که نمونه پيشرفته‌تري از شهر
اينترنتي دوبي خواهد بود

گوشه‌اي از ماکت شهر جديد
 Smart City از نماي نزديک

تبليغات اوراکل جلوي ورودي
يکي از سالن‌ها

در سرتاسر راهروي ورودي
سالن‌ها شرکت اتصالات
ايستگاه‌هاي اينترنت رايگان
برپا کرده بود.

 

 

 

روش جديدي براي تبليغ LCD !

سالادهاي خوشمزه و البته گرانقيمت
در انتظار بازديدکنندگان خسته

مراسم جشن و سرودخواني در
غرفه شرکت اتصلات

 

 

 

نمايش گوشي‌هاي شرکت
مخابراتي ثريا

نمايي از غرفه BlackBerry سازنده
انواع Smartphone

انواع غذاهاي خوشمزه در خورجين
اين اغذيه فروش سيار پيدا مي‌شود!

     
   
نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

جيتكس ۲۰۰۷ / اوراکل از نسخه 11 بانک اطلاعات خود رونمایی می‌کند

سرويس خبر شبکه آنلاين
يکشنبه 18 شهريور 1386


شرکت اوراکل نسخه 11 سیستم بانک اطلاعاتی خود در نمایشگاه جیتکس امسال به نمايش مي‌گذارد.


منبع: itp.net

شرکت اوراکل نسخه 11 سیستم بانک اطلاعاتی خود در نمایشگاه جیتکس امسال به نمايش مي‌گذارد.

مجموعه همكاران این شرکت نیز همانند گذشته در کنار اوراکل هستند و این شرکت با مشارکت بیش از چهل همکار و شریک تجاری خود ، غرفه بزرگ "راه‌حل‌های تجاری جیتکس" را برپا نموده است . به اين ترتيب اوراکل ضمن بنمایش درآوردن وسعت محدوده و تعدد راه‌حل‌های تجاری خود ، سطح تخصص و توانائی شرکای تجاری و مشتریان خود را برخ بکشد.

قدرت و توانائی اصلی اوراکل مشخصاً با معرفی نسخه یازدهم نرم افزار بانک اطلاعاتي معروفش آشکار خواهد شد. معرفی این محصول موجب خواهد شد تا مدیران منطقه اولین «نگاه عمومی» خود را به این بانک اطلاعات جدید بیاندازند . پیش از آغاز نمایشگاه برخی شرکت‌های منتخب از سرتاسر خاورمیانه در جریان امتحان نسخه بتا مشارکت داده شده بودند.

Dana Murugan مدیر ارشد بازاریابی خاورمیانه و افریقای اوراکل می‌گوید : «مدیریت ریسک و هزینه در زمان تولید نرم‌افزار ، برنامه‌های كاربردی و یا در زمان تغییر و ارتقاء برنامه‌های موجود ، بزرگ‌ترین چالش در پیش روی سازمان‌ها در خاورمیانه می‌باشد».

وی می‌افزايد : «نسخه یازدهم بانک اطلاعات اوراکل با دارا بودن قابلیت‌های بالائی از اتوماسیون سیستم‌ها ، دقیقاً مناسب ایندسته از شرکت‌ها بوده و ما اعتقاد داریم که نمایشگاه جیتکس فرصت بی‌نظیری را ، هم برای مشتریان فعلی و هم برای مشتریان جدید اوراکل فراهم خواهد آورد تا بتوانند قابلیت‌های اوراکل 11 را مشاهده كنند».

خریدهای اخیر اوراکل نیز یکی از موضوعاتی است که مورد توجه قرار دارد . این شرکت اخیراً مطالبی را در ارتباط با خرید شرکت Hyperion که در زمینه هوش تجاری و مدیریت کارائی تجاری فعالیت می‌کند، اعلام نمود.  اوراکل عقیده دارد این خرید موجب گسترش تولیداتش خواهد شد.

بازدیدکنندگان از غرفه اوراکل اطلاعاتی را درمورد آخرین راه‌حل‌های مربوط به مدیریت ارتباط با مشتریان ياCustomer Relationship Management ، دريافت خواهند کرد و از نزدیک نگاهی به بسته E-Business این شرکت خواهند داشت.

 

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

بررسي معماري اوراكل 10g دوشنبه سیزدهم آبان 1387 19:1
بررسي معماري اوراكل 10g

امين صفايي
ماهنامه شبکه - تير ۱۳۸۶ شماره 77

اشاره :

پايگاه‌داده اوراكل از مجموعه‌اي از اطلاعات تشكيل شده است كه توسط سيستم مديريت پايگاه داده كنترل مي‌شود. اوراكل در واقع يك سيستم مديريت پايگاه داده رابطه‌اي است و معماري آن را مي‌توان به دو قسمت فيزيكي و منطقي تقسيم‌بندي نمود. ساختار منطقي اوراكل از Tablespace و Schema تشكيل شده است و ساختار فيزيكي آن از Data Fileها، Redo Logها و چند كنترل فايل تشكيل شده است.


مقدمه

سي سال پيش در سال 1977 ميلا‌دي Lary Ellison آزمايشگاه‌هاي طراحي و توسعه نرم‌افزار را پايه‌گذاري نمود. دو سال بعد در سال 1979 اين شركت به Relational Software Inc) RSI) تغيير نام داد و نرم‌افزاري به نام ORACLE V2 را به بازار ارايه داد كه از يكي ابتدايي‌ترين سيستم‌هاي پايگاه داده رابطه‌اي يا Relational بود.
 
اين نسخه از اوراكل Join و Queryها را پشتيباني مي‌كرد، ولي از Transactionها پشتيباني نمي‌كرد. در سال 1983 شركت RSI دوباره نامش را تغيير داد و نام خود را همنام محصول خود، يعني Oracle اعلا‌م كرد. در همان سال نسخه سوم اين نرم افزار كه با زبان C نوشته شده بود، تهيه شد.

در اين نسخه امكاناتي همچون RoolBack و Commit پشتيباني مي‌شد. در سال 1984 شركت اوراكل نسخه چهارم خود را كه از قابليت Read-Consistency برخوردار بود، راهي بازار نمود و يك سال پس از آن، نسخه پنجم اين نرم‌افزار با قابليت پشتيباني از سيستم‌هاي كلاينت سروري و جست‌وجوهاي غيرمتمركز به بازار آمد.

نسخه‌هاي پنجم، ششم، هفتم و هشتم نيز از سال 1989 تا سال 1997راهي بازار شدند كه با در اختيار قراردادن قابليت‌هايي مانند PL/SQL ،Referential integrity ،Stored Procedures ،Triggers ،Object Oriented و ... گوي سبقت را از ديگر پايگاه‌هاي داده ربودند.

در سال 2001 نسخه جديد Oracle 9i با امكانات جديدي مانند استفاده از XML و Real Clustering به وجود آمد و در سال 2003 اوراكل 10g با قابليت پشتيباني از GRID به بازار آمد. هم اكنون آخرين نسخه اوراكل 2/10 است، اما زمزمه‌هايي از ارايه اوراكل 11g به گوش مي‌رسد كه تا آخر سال جاري ممكن است به بازار بيايد.

پايگاه داده اوراكل از مجموعه‌اي از اطلاعات تشكيل شده است كه توسط سيستم مديريت پايگاه داده كنترل مي‌شود. اوراكل در واقع يك Relational Database Management System) RDBMS) يا سيستم مديريت پايگاه داده رابطه‌اي است. معماري اين پايگاه داده را مي‌توان به دو قسمت فيزيكي و منطقي تقسيم‌بندي نمود كه در شكل 1 به صورت كامل مشخص شده است.

شکل 1


اين تقسيم‌بندي به ما كمك مي‌كند بتوانيم منابع فيزيكي را بدون آن‌كه در ساختار منطقي تأثيري داشته باشد، عوض كنيم. در اين مقاله معماري پايگاه داده اوراكل و ساختار منطقي و فيزيكي آن مورد بررسي موضوعي قرار خواهد گرفت. سپس در مورد Instanceها توضيح داده خواهد شد و به پردازش‌هايي كه در پيش‌زمينه اتفاق مي‌افتند، نگاهي افكنده مي‌شود. در آخر نيز اين معماري در اوراكل 10g بررسي مي‌شود.

ساختار منطقي اوراكل‌

ساختار منطقي اوراكل از دو عنصر تشكيل شده است: Tablespace و Schema.

‌‌‌‌Tablespace

بانك اطلاعاتي اوراكل به صورت منطقي به يك يا چند قسمت تقسيم شده است كه به آن قسمت‌ها Tablespaceمي‌گويند. در حقيقت Tablespace گروه‌بندي منطقي اطلاعاتي است كه به هم ارتباط دارند. Tablespaceها معمولاً تحت نظر مدير پايگاه داده يا DBAها قرار دارند و به او اجازه مي‌دهند كارهاي زير را انجام دهد:

-‌ براي افزايش كارايي بانك اطلاعاتي، منابع داده را به دستگاه‌هاي مختلف اختصاص دهد.
-‌‌ ميزان فضاي ديسك را در پايگاه داده كنترل نمايد.
‌-‌ براي هر كاربر ميزان مشخصي فضا در نظر بگيرد.
-‌ عمليات كپي پشتيبان و به‌روزآوري اطلاعات را به صورت جزيي انجام دهد.

هر پايگاه داده حداقل داراي يك Tablespace به نام SYSTEM است كه به صورت خودكار در موقع توليد پايگاه جديد توليد مي‌گردد. اگرچه مي‌توانيم در SYSTEM Tablespace پايگاه كوچك ديگري قرار دهيم، توصيه مي‌شود براي هر كاربر بانك اطلاعاتي يك Tablespace جديد توليد گردد.

اوراكل از SYSTEM Tablespace براي ذخيره اطلاعاتي مانند Data Dictionary استفاده مي كند كه در خود اطلاعات MetaData را انبار مي‌كند. اين اطلاعات شامل داده‌هايي همچون سطوح دسترسي و اطلاعات كليدهاي اصلي جداول است. شكل 2 ساختار يك Tablespace را نشان مي‌دهد.

شکل 2



هر Tablespace در اوراكل شامل يك يا چند DataFile است كه اطلاعات را در خود ذخيره مي‌كنند. اين DataFileها خود شامل DataBlock ،Extentها و Segmentها مي‌شوند.

Data Blockها كه بعضي مواقع به آن‌ها Page ،Oracle block و logical block نيز مي‌گويند، مكاني هستند كه اطلاعات اوراكل مستقيماً در آن ذخيره مي‌شود و اوراكل از فضاي خالي اين Data Blockها استفاده مي‌كند.

Extentsها مجموعه‌اي از DataBlockها هستند كه براي ذخيره نوع خاصي از اطلاعات به كار گرفته مي‌شوند. بعد ازExtentها در رده بالاتر Segmentها قرار دارند كه مجموعه‌اي از extentها هستند كه در يك Tablespace مشخص ذخيره مي‌گردند.

مثلاً تمامي اطلاعات جدول در data segment خود ذخيره مي‌شود و ايندكس‌هاي هر داده در index segment خاص خود ذخيره مي‌شوند. پايگاه داده اوراكل مي‌تواند علاوه بر دو Segment ذكر شده، از Segmentهاي Rollback كه اطلاعات Rollback را ذخيره مي‌كند و Segment به نام Temporary كه براي دستورات SQL مانند مرتب‌سازي به كار گرفته مي‌شوند نيز استفاده كند.

‌‌Schema

شکل 3

Schema در واقع اشيايي هستند با ساختار منطقي كه به شما اجازه ديدن اطلاعات پايگاه را مي‌دهند. تمامي اشياي منطقي از قبيل:
-‌Tables
-‌Clusters 
-‌Indexes
-‌Views
-‌Stored procedures
-‌Triggers
-‌Sequences
همان‌طور كه در شكل 3 مشخص شده است، در Schema قرار مي‌گيرند.

ساختار فيزيكي اوراكل

لايه فيزيكي پايگاه داده در اوراكل از سه نوع فايل تشكيل شده است.
-‌ يك يا چند Data File
-‌ چند ‌Redo Log
-‌ يك يا چند كنترل فايل

Data Fileها فايل‌هاي فيزيكي هستند كه پسوند آن‌ها DBF است. در يك پايگاه داده هر تعداد Data File مي‌تواند وجود داشته باشد. اطلاعات موجود در يك جدول مي‌تواند در چند Data Fileوجود داشته باشد و Data Fileها اصولاً مي‌توانند به صورت اشتراكي بين جداول مختلف استفاده شوند و اين موضوع مي‌تواند باعث افزايش كارايي پايگاه داده شود. شكل 4 ساختار فيزيكي پايگاه داده را نشان مي‌دهد.

شکل 4

فايل‌هاي Redo Log كه معمولاً پسوندهاي rdo. و arc. دارند، در Transactionهاي پايگاه داده مورد استفاده قرار مي‌گيرند و تمام اين Transactionها در اين Redo Fileها ذخيره مي‌گردند و در زماني كه سيستم با اشكالي روبه‌روشد و احتياج به بازآوري پيدا شد، مي‌توان با استفاده از اين Redo Fileها سيستم را به‌روزرساني كرد و در صورت خرابي اين فايل‌ها و پاك شدنشان، نمي‌توان هيچ كاري انجام داد.

وقتي يك عمليات جديدي در پايگاه رخ مي‌دهد، به بافر اين فايل‌ها مي‌رود و تا Data Blockها درگير انجام عمليات هستند، هيچ ذخيره فيزيكي انجام نمي‌شود.

روشي كه اوراكل براي پر كردن اين فايل‌ها استفاده مي‌كند، اين‌ گونه است كه پس از پر شدن يك Log File ،Log File جديد ديگري به وجود مي‌آيد و وقتي تمام Logها پر شد، دوباره به سراغ log اول مي‌رود و اطلاعاتش را بازنويسي مي‌نمايد.

كنترل فايل‌ها كه با پسوند ctl. در اوراكل وجود دارند، اطلاعات كنترلي تمام فايل‌ها در پايگاه داده را ذخيره مي‌كنند. شكل 5 اين فايل‌ها را نشان مي‌دهد. در اوراكل اين فايل‌هاي كنترلي جهت ثابت نگهداشتن موقعيت سيستم و براي عمليات بازآوري يا Recovery به كار مي‌روند. اطلاعات اين فايل‌هاي كنترلي در شروع كار Instance به كار مي‌رود و به اين Instance مي‌گويد كه مثلاً Data File و Redo File در كجا قرار دارد.

شکل 5

Instanceها

شکل 6

براي دسترسي به اطلاعات يك پايگاه داده اوراكل از رويه‌هاي پشت صحنه‌اي استفاده مي‌كند كه در شكل 1 به وضوح ديده مي‌شوند. همچنين در اوراكل ساختار حافظه‌اي وجود دارد كه آخرين جست‌وجوهايي كه از پايگاه به عمل آمده است را در خود ذخيره مي‌كند.

Instanceها در واقع ساختارهاي حافظه‌اي و پروسه‌هايي هستند كه به فايل‌هاي پايگاه دسترسي دارند. هر پايگاه داده مي‌تواند بيش از يك Instance هم داشته باشد كه به آن Real Application Cluster نيز مي‌گويند.

پارامترهايي كه اندازه اين Instance را مشخص مي‌كند، در فايل‌هايي مانند init.ora ذخيره مي‌گردد و وقتي كه يك instance در حال شروع شدن يا start up است، از آن فايل خوانده مي‌شود.

البته اين فايل مي‌تواند توسط DBA تغيير يابد، ولي تا شروع مجدد Instance تغييرات اعمال نخواهد شد. شكل 6 چگونگي عملكرد Instanceها و شكل 7  اجزاي آن را در پايگاه داده نمايش مي‌دهد.

اوراكل براي هر پروسه از يك حافظه اشتراكي به نام System Global Area) SGA) و يك Private Memory Area كه به آن program global area) PGA) نيز مي‌گويند استفاده مي‌كند.

SGA منطقه حافظه مشتركي است كه اطلاعات Instance را در خود دارد. وقتي يك Instance شروع به كار كرد، اوراكل SGA را به آن تعلق مي‌دهد و در موقع غيرفعال شدن آن را مي‌گيرد. در واقع مي‌توانيم بگوييم هر Instanceدراي SGA است و هر SGA به سه قسمت تقسيم شده است:

- Database buffers cache: اطلاعاتي از قبيل آخرين Data Block استفاده شده را ذخيره مي‌كند.‌
- Redo log buffers: براي ذخيره كردن Redoها به كار مي‌رود.
- Shared pool: براي استفاده مجدد از منابع سيستم به كار گرفته مي‌شود. مثلاً  اگر دستوري قبلاً استفاده شده است مي‌تواند دوباره به كار گرفته شود.

PGAها بر خلاف SGAها فضاي حافظه اشتراكي ندارند و اطلاعات كنترلي براي پروسه‌هاي سرور را نگهداري مي‌كنند. اين پروسه‌ها وقتي اتفاق مي‌افتند كه كلاينتي از سرور درخواستي مي‌كند. در واقع PGAها وقتي كه سرور به كار مي‌افتد متولد مي‌شوند.

Background Processها

رابطه بين ساختار فيزيكي و ساختار حافظه در اوراكل توسط پروسه‌هاي پيش‌زمينه هدايت مي‌شود. برخي از اين پروسه‌ها در جدول 1 مشخص شده‌‌اند.

درون يك پايگاه اطلاعاتي اوراكل چيست؟

 نام پروسه

شرح عمليات 

 SMON

 پردازش System Monitor يا SMON در زمان شروع بانک اطلاعاتي در صورت لزوم عمل بازآوري را با استفاده از فايل‌هاي Online Redo Log انجام مي‌دهد. کارايي ديگر SMON اين است که Extentهاي خالي پيوسته را با Extentهاي خالي بزرگ‌تر ادغام مي‌نمايد.

 PMON

 اين پردازش وظيفه پاکسازي و پردازش ناتمام کاربر را بر عهده دارد. اين پردازش مسئول کنترل Lockها هم هست.

 DBWR

 اين پردازش مديريت محتويات Data Block Buffer Cache را عهده‌دار است. همچنين اين پردازش وظيفه نوشتن بلوک‌هاي تغييريافته در ناحيه SGA به Data Fileها را به عهده دارد.

 LGWR

 اين پردازش وظيفه ثبت محتويات Redo Log Buffer را بر فايل‌هاي Online Redo Log به عهده دارد و ورودي‌هاي Log را به صورت گروهي در اين فايل‌ها مي‌نويسد.

 CKPT

 CheckPointها مدت زمان مورد نياز براي اجراي بازآوري Instance را کاهش مي‌دهند و باعث مي‌شوند DBWR تمامي بلوک‌هايي که تغيير يافته‌اند را از Cache به Data File منتقل کند.

 RECO

 اين پردازش خطاها را در بانک اطلاعاتي توزيع شده رفع کرده و بازسازي مي‌کند.

 جدول 1

همان‌طور كه قبلاً توضيح داده شد، يك بانك اطلاعاتي اوراكل از داده‌هايي تشكيل شده است كه در يك يا چند فايل ذخيره شده‌اند و هر پايگاه به دو قسمت منطقي و فيزيكي تقسيم مي‌شود.

ساختار اوليه در بانك‌هاي اطلاعاتي جداول هستند. اوراكل 10g از جداول مشخص شده در جدول 2 پشتيباني مي‌كند.
ايندكس‌هايي كه در Oracle 10gپشتيباني مي‌شوند، در جدول 3 مشخص شده‌اند.

اوراكل همچنين از زبان‌هاي دسترسي در جدول 4  مشخص شده نيز استفاده مي كند.

اطلاعات چگونه ذخيره مي شوند؟

در اوراكل يك Data Dictionary وجود دارد كه تمامي اطلاعات مربوط به آبجكت‌ها از جمله صاحب آن‌ها، تعريف آن‌ها و ... ذخيره مي‌گردد. 

 نام جدول

کاربرد 

 Relational Table

جداول رابطه‌اي در اوراکل

 Object-relational Table

براي استفاده از امکان Inheritance مي‌توانيم از Object Relational استفاده نماييم. با اين کار مي‌توانيم Data Type خودمان را طراحي نماييم.

 Index-organized Table

با استفاده از اين جدول مي‌توانيم اطلاعات را در ساختار ايندکس ذخيره کنيم.

 External Table

با استفاده از اين جدول مي‌توانيم از اطلاعات فايل‌هاي Flat را بدون آن که آن را در پايگاه Load کنيم استفاده نماييم.

 Partitioned Table

با استفاده از اين جدول مي‌توانيم جدول را به چند قطعه تقسيم کنيم و هر قسمت را به صورت مجزا مديريت نماييم.

 Materialized Views

با استفاده از اين جدول مي‌توانيم از امکان Materialized در جست‌وجوها استفاده کنيم.

Temporary Table

 با استفاده از اين جدول موقت با دستور Create global temporary table مي‌توانيم جدولي درست کنيم که کاربران مختلفي به آن اطلاعات وارد کنند و فقط اطلاعات خود را مشاهده نمايند.

 Clustered Table

مي‌توانيم دو جدول را که معمولاً با هم جست‌وجو مي‌شوند را به صورت فيزيکي با هم ذخيره کنيم.

 Dropped Table

با استفاده از اين جدول مي‌توانيم جداولي که از بين رفته‌اند را بازآوري نمايد.

جدول 2

براي آبجكت‌هايي كه نياز به منبع ذخيره فيزيكي دارند، اوراكل فضايي را در Tablespace تعلق مي‌دهد.

اوراكل 10g حداقل دو Tablespace به نام‌هاي SYSTEM و SYSAUX براي هر پايگاه ايجاد مي‌كند.

با اختصاص اين دوTablespace نيازهاي مديريت داخلي بانك‌هاي اطلاعاتي مرتفع مي‌گردد.
همچنين در اوراكل 10gمي‌توانيم نوع خاصي از Tablespaceبه نام bigfileايجاد كنيم كه ظرفيت هزاران ترابايت داده را دارد.
همان‌طور كه قبلاً توضيح داده شد، هر Tablespace از يك تا چند DataFile تشكيل شده است.

در اوراكل با استفاده از امكان Oracle Managed Files) OMF) مديريت و نگهداري اين فايل‌ها بسيار آسان‌تر شده است.

با استفاده ازOMF مديريت bigfileها نيز بسيار آسان‌تر شده است و DBAمي‌تواند بدون نگراني از اين‌كه اگر تغييري درTablespace ايجاد شود، ممكن است در datafileها تأثير داشته باشد Tablespace را مديريت كند.

 نام ايندکس

کاربرد 

B*_Tree 

اين ايندکس در واقع ايندکس استاندارد در Oracle 10g است. 

 Bitmap

براي ستون‌هايي به کار مي‌رود که مقادير ثابت و کمي دارند. اين ايندکس سرعت و کارايي جست‌وجوها را بالا مي‌برد. 

 Reverse Key

با استفاده از اين ايندکس مي‌توانيم به صورت دايناميکي مقدار ايندکس را قبل از اين که ذخيره گردد برگردانيم. 

 Function_based

به جاي مرتب کردن ستوني مانند ستون (نام)، مي‌توانيم ستوني که داراي رويه يا Function است را مرتب کنيم. مثلاً (UPPER (NAME 

 Partitioned

مديريت ايندکس‌ها را با جداکردن آن‌ها براي Partitioned Tables آسان مي‌کند. 

 Text Index

براي افزايش سرعت جست‌وجوها در متن‌هاي TEXT 

 جدول 3


اگر Tablespace به‌عنوان يك Temporary Tablespace طراحي شده باشد (مثلاً براي پشتيباني عملياتي مانند توليد ‌Index يا Join) خود Tablespace به تنهايي دائمي است، تنها Segmentهايي كه در آن هستند، موقتي هستند.

در Oracle 10g قابليتي جديد به نام Automatic Storage Management) ASM) وجود دارد كه لايه‌بندي data file و فايل‌هاي ديگري كه براي ذخيره‌سازي استفاده مي شوند را مديريت مي‌كند و data fileها را در سرتاسر فضاي خالي ديسك‌ها ذخيره مي‌نمايند.


 نام ابزار

توضيح 

PL/SQL 

براي درست کردن Stored Proceduresها، Functionها و فراخواني functionها در جست‌وجوها 

Dynamic SQL 

توليد SQL در Run time و ارسال آن به Procedureها 

Plus*SQL 

ارايه رابط کاربر راحت براي کار با پايگاه‌داده 

Java and JDBC 

به جاي PL/SQL در برخي از عمليات‌ها مي‌توانيم از Java استفاده نماييم. 

XML 

مي‌توانيم از نوع داده XML و رابط کاربر آن در اوراکل استفاده نماييم.

Object-oriented SQL and PL/SQL 

در اوراکل 10g مي‌توانيم ساختار شيءگرا براي پايگاه‌داده خود تهيه نماييم. 

Data Pump 

در اوراکل Import ،10g و Export کردن اطلاعات با استفاده از Data Pump کارايي بالاتري پيدا کرده است.

Loader*SQL 

 براي Load کردن فايل‌هاي flat در جداول اطلاعاتي

UTL_MAIL 

با استفاده از اين بسته برنامه‌نويسان PL/SQL مي‌توانند بدون اين که از ساختار SMTP اطلاعي داشته باشند، اي‌ميل ارسال کنند. 

جدول 4 

وقتي يك ديسك جديد به ASM instance اضافه مي‌شود، فايل‌هاي پايگاه داده به صورت خودكار در ديسك‌هايي كه قبلاً تعريف شده است، پخش مي‌شوند كه اين كار به افزايش كارايي پايگاه داده كمك خواهد كرد.

همچنين از آنجا كه اطلاعات در يك جا ذخيره نمي‌شوند، امكان از دست رفتن كليه اطلاعات كمتر خواهد شد.

براي پشتيباني از عملياتي كه روي پايگاه داده انجام مي‌شود، در اوراكل Undo Segmentها به وجود مي‌آيند كه در حقيقت تصويري از اطلاعاتي هستند كه قبل از عمليات فعلي در پايگاه وجود داشته است.

اواركل 10g از (Automatic Undo Management) AUM استفاده مي‌كند كه مديريت Undo Segmentها را به عهده دارد؛ بدون آن كه به DBA نيازي باشد (شكل7).

به كمك از اين ابزار استفاده از جست‌وجوهاي Flashback نيز آسان‌تر مي‌گردد.
با استفاده از Oralce 10gهمچنين مي‌توانيم نسخه جست‌وجوي ‌Flashback را اجرا كنيم و اطلاعات قبلي و فعلي را با هم مقايسه نماييم.

تا قبل از نسخه 10g بحث سطل آشغال يا Recycle Bin در اوراكل مطرح نبود. در اوراكل 10g وقتي جدولي را حذف مي‌كنيم، كپي آن در Recycle Bin باقي مي‌ماند. البته مي‌توانيم با دستور Purge جداولي كه در سطل وجود دارند را به كلي حذف نماييم.

شکل 7

از اطلاعات چگونه محافظت مي‌شود؟

در اوراكل 10g مي‌توانيم به اطلاعات خود دسترسي كاملي داشته باشيم. مي‌توانيم براي هر كاربر روي هر آبجكت سطح دسترسي تعيين كنيم. در اوراكل قابليتي به نام Virtual Private Database وجود دارد كه وقتي از آن استفاده مي‌كنيم، مي‌توانيم ركوردها را محدود كنيم و جست‌وجوهاي كاربران در جداول را محدود نماييم، ولي در اوراكل 10g  اين قابليت تقويت شده است و حال مي‌توان ستون‌ها را نيز فيلتر نمود و براي آن سطح دسترسي تعيين كرد.

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

نگاهي كوتاه به امنيت در اوراكل دوشنبه سیزدهم آبان 1387 18:58
نگاهي كوتاه به امنيت در اوراكل

امين صفايي
ماهنامه شبکه - مرداد ۱۳۸۶ شماره 78

اشاره :

اطلاعات صحيح در هر سازماني بسيار مفيد است و باعث موفقيت آن سازمان مي‌گردد. اما اگر اين اطلاعات دستكاري شود، بدون شك تأثيرات بدي در سازمان خواهد داشت. بانك اطلاعاتي اوراكل با محدود كردن دسترسي به داده‌ها مي‌تواند از اطلاعات شما محافظت كند. اوراكل با استفاده از Granting، يا محدود كردن مجوزهاي كاربران و فراهم كردن دستوراتي مانند Create User ،Create Role و Grant براي مديران پايگاه‌داده مي‌تواند دسترسي به اطلاعات را مديريت كند. هر كاربر اوراكل داراي نام و رمز ورودي است و صاحب چند جدول، View يا اجزاي ديگري است كه به وجود مي‌آورد. يك Oracle Role (يا نقش) در واقع شامل امتيازاتي است كه كاربر مي‌تواند براي دسترسي به اشياي بانك اطلاعاتي داشته باشد. مي‌توانيد امتيازي (Privilege) را به نقشي بدهيد و سپس آن نقش را به يك كاربر اهدا كنيد. در اين مقاله قصد ندارم شما را با مباحث پيچيده امنيت در اوراكل آشنا كنم، هدف، آشنا كردن شما به صورت كاملاً عملي با پايه امنيت در اوراكل 10g است.


ايجاد كاربر

هر سيستم اوراكل به صورت پيش‌فرض داراي چندين كاربر مانند SYSTEM و SYS است. كاربر SYS صاحب جداول داخلي بانك اطلاعاتي است (كه وظيفه مديريت بانك اطلاعاتي را به عهده دارند) و كاربر SYSTEM صاحب جداول ديگر مديريتي است و براي اين‌كه بتوانيم كاربري را در يك بانك اطلاعاتي اضافه كنيم يا تغييراتي را در مجوزهاي آن بدهيم، بايد با اين كاربر به سيستم وارد شويم. فرمت دستوري كه مي‌توانيد با آن كاربر جديدي را به سيستم اضافه كنيد، به صورت زير است:

در شكل 1 مراحل ساخت يك كاربر به نام Amin نشان داده شده است. در مرحله اول كاربر با استفاده از دستور Create User ساخته شده است. در مرحله دوم رمز كاربر تعويض شده است و در مرحله سوم براي اين‌كه به كاربر اجازه ورود بدهيم، يك Session  جديد به نام او ساخته‌ايم.

شکل 1


مديريت رمزها

كاربر بانك اطلاعاتي مي‌تواند پسورد خود را با استفاده از دستور password عوض كند، ولي در اوراكل مي‌توانيم رمزهاي كاربران را به صورت پيشرفته مديريت نماييم. مثلاً مي‌توانيم رمز ورودي را منقضي كنيم DBA و... مي‌تواند پروفايل‌هاي خاصي را براي مديريت امنيت تعريف نمايد و وقتي كاربر را ايجاد مي‌كند، آن پروفايل را به آن اختصاص دهد.

شکل 2


Profile مي‌تواند محدوديت‌هايي از قبيل طول عمر يك رمز، مدت زماني كه كاربر بايد رمز خود را عوض كند، تعداد دفعات ورود به سيستم با رمز اشتباه براي قفل كردن سيستم، تعداد روزهايي كه حساب كاربر بسته باشد، تعداد روزهايي كه بايد بگذرد تا كاربر دوباره از يك رمز استفاده كند، طول رشته رمز و محدوديت‌هاي ديگر را در خود داشته باشد.

در شكل 2 طريقه ايجاد يك پروفايل را مشاهده مي‌كنيد كه تعداد اشتباه در ورود روز را «2» تعيين كرده است. همان‌طور كه در اين كدها مشخص شده است، اين پروفايل به كاربر amin داده مي‌شود و حساب او پس از دو اشتباه قفل مي گردد. البته DBA مي‌تواند با دستور زير Account او را مجدداً باز كند.


ايجاد نقش براي كاربر

در مراحل قبل كاربر amin را ساختيم و رمز جديدي به آن داديم. حال او داراي حساب است، ولي نمي‌تواند كار خاصي انجام دهد؛ چراكه هيچ نقش و مجوزي جز Create Session به او Grant نشده است. مهم‌ترين نقش‌هاي اوراكل براي كاربران در جدول زير مشاهده مي‌شود:


حال فرض كنيد كه كاربر amin صاحب جدول emp و نقش مدير سيستم را عهده دار است. حال مطابق شكل 3 دو كاربر به اسامي zbehro و Parham مي‌سازيم و به هر دوي آن ها اجازه  ورود به سيستم را مي‌دهيم و به Parham اختيارات ديگري نيز مي‌دهيم.

شکل 3


حال سؤال اينجاست كه با وجود اختياراتي كه به Parham داده شده است، آيا او مي‌تواند به جداول amin دسترسي كامل داشته باشد يا خير؟ براي دسترسي كاربري به جدوال خود از دستور grant به نوعي ديگر استفاده مي‌كنيم. مثلاً مي‌توانيم با دستور زير بگوييم كه كاربر Parham مي‌تواند از جدول emp كاربر amin استفاده كند:


اضافه بر نقش‌هايي كه به صورت پيش‌فرض در اوراكل وجود دارد، مي‌توانيد نقش‌هاي ديگري نيز در اوراكل درست كنيد. مثلاً دو دستور زير دو نقش جديد به سيستم اضافه مي‌كند.


حال همان‌طور كه در كدهاي زير مي‌بينيد، مي‌توانيد امتيازها را به نقش بدهيد:


بررسي عملكرد كاربران‌

در اوراكل مي‌توانيم به راحتي تمامي اعمالي كه اتفاق افتاده است را بررسي كنيم. تمامي اين اعمال به صورت ركوردهايي در بانك اطلاعاتي ثبت مي‌شود. در اوراكل امكان بررسي يا Audit سه چيز وجود دارد: برقراري ارتباط با سيستم، دسترسي به اشياي بانك اطلاعاتي، و  اعمالي كه روي بانك اطلاعاتي انجام مي‌گيرد. براي فعال‌سازي اين گزينه، بايد مقدار AUDIT_TRAIL  در فايل Init.ora ،DB يا OS باشد.
براي اين‌كه ارتباطات كاربران به بانك اطلاعاتي را كنترل كنيم، مي‌توانيم از دستورات زير استفاده نماييم:


در اين حالت سيستم از تمامي ارتباطات موفق و غيرموفق كاربران ركورد برداشت مي‌نمايد. براي مشاهده اين اطلاعات مي‌توانيم از جدول dba_aduit_session استفاده نماييم و با استفاده از فيلد returncode كه در اين جدول است، خطاي مربوطه كه معمولاً ORA_1017 و ORA_1005 است را استخراج نمود.

ORA_1005 وقتي است كه كاربر بدون كلمه عبور مي‌خواهد وارد شود و خطاي ORA_1017 زماني است كه كاربر رمز اشتباه را وارد مي‌نمايد. براي غير فعال كردن بررسي ارتباطات كاربران، مي‌توانيم از دستور NOAUDIT session  استفاده نماييم.

براي بررسي عمل كاربرها روي اشيايي مانند Database Link ،Tablespace ،User و Index كه غالباً Drop ،Alter وCreate را اجرا مي‌كنند، بايد دستور AUDIT ROLE را اجرا كنيم و با جست‌وجوي زير عملكرد كاربران را مشاهده كرد:


اضافه بر كنترل دسترسي بر اشيا، مي‌توانيم اعمال دستكاري داده ها بر اشيا را نيز بررسي نماييم. مثلاً اعمالي مانند Insert ،Select و Delete. براي بررسي اين قسمت مانند دستورات قبلي از دستور Audit استفاده مي‌كنيم، ولي عبارت اضافي By Session يا By Access نيز به اين دستور اضافه مي‌شود. اين دستور به سيستم مي‌گويد: براي هر دسترسي يك ركورد جمع‌آوري كند. مثلاً براي بررسي اعمالي كه روي جدول emp انجام مي‌شود، بايد دستورات روبه‌رو را نوشت:


با اين كار هر گونه دستكاري از قبيل اضافه كردن ركورد و حذف آن در جدولDBA_AUDIT_OBJECT  ذخيره مي‌شوند و شما مي‌توانيد به راحتي اين اطلاعات را مشاهده كنيد.

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

پايگاه‌داده‌ها؛ قلب سيستم‌هاي اطلاعاتي‌ - آشنايي با SQL Server 2005

کيوان تيرداد
ماهنامه شبکه - شهريور ۱۳۸۶ شماره 79

اشاره :

در شماره‌هاي قبل به بررسي مفصل اصول آكادميك و مباني علمي بانك‌هاي اطلاعاتي پرداختيم. بدين‌ترتيب از اين شماره به بيان مفاهيم عملي بانك‌هاي اطلاعاتي مي‌پردازيم. بدين منظور ابتدا به آشنايي با محيط SQL Server2005 مي‌پردازيم. چراكه اين محيط در حقيقت همان محيطي است كه تمام مفاهيم و مطالبي را كه مي‌خواهيم به صورت عملي نشان دهيم، در آن صورت مي‌گيرد. اگر از خوانندگاني هستيد كه مجموعه مقالات «پايگاه داده‌ها قلب سيستم‌هاي اطلاعاتي» را دنبال مي‌كنيد يا تصميم داريد از اين شماره به طور جدي‌تر اين مقالات را دنبال كنيد، اكنون وقت آن فرا رسيده است كه به قولي دست به آچار شويد. بدين منظور در قدم اول بايد SQL Server2005 را نصب كنيد. در اين شماره مباني نصب و آشنايي نسبتاً جامعي را با اين محيط بررسي خواهيم كرد.


1- آشنايي با نسخه‌هاي SQL Server 2005

SQL Server2005 در نسخه‌هاي مختلفي عرضه شده است  كه از نظر كارايي و قيمت بسيار متفاوت هستند و البته براي كاربران مختلفي نيز طراحي شده‌اند.

˜‌ (SQL Server2005 Enterprise Edition (32-bit and 64 bit

اين نسخه در حقيقت نسخه پيشرفته اين نرم‌افزار است و براي محيطي طراحي شده است كه يا داراي بانك اطلاعاتي بسيار بزرگ (از نظر تعداد ركورد يا حجم اطلاعات) يا داراي تعداد پردازش آنلا‌ين بسيار زياد يا نيازمند تحليل پيچيده اطلاعات است. اين نسخه همه قابليت‌هاي اين نرم‌افزار را دارد.

˜ (SQL Server2005 Standard Edition (32-bit and 64-bit 

اين نسخه در حقيقت براي شركت‌هاي متوسط مناسب است. نكته مهم اين است كه اين نسخه نيز به راحتي بانك‌هاي اطلاعاتي بزرگ را پشتيباني مي‌كند. اما بعضي از ويژگي‌هاي مورد نياز براي تحليل پيچيده اطلاعات را ندارد و البته قيمت بسيار مناسب‌تري نسبت به نسخه Enterprise دارد.

‌˜ (SQL Server2005 Workgroup Edition (32-bit only

اين نسخه براي شركت‌هاي كوچك و سرويس‌دهنده‌هاي وب و البته بانك‌هاي اطلاعاتي كه به عنوان نسخه پشتيبان استفاده مي‌شوند، مناسب است. اين نسخه در بين نسخه‌هايي كه به كاربران نهايي عرضه مي‌شود، كمترين قيمت را دارد.

‌‌˜ (SQL Server 2005 Developer edition (32-bit and 64-bit

اين نسخه از نظر خصوصيات و ويژگي‌ها هيچ تفاوتي با نسخه Entrprise ندارد. اما مختص برنامه‌نويسان است. لذا قيمت بسيار پاييني دارد و شركت‌هاي برنامه‌نويسي در زمينه بانك‌هاي اطلاعاتي از اين نسخه استفاده مي‌كنند. بدين ترتيب اين شركت‌ها ديگر مجبور نيستند براي تست برنامه خود نسخه Entrprise را تهيه كنند.

‌˜ (SQL Server2005 Express Edition (32-bit only 

اين نسخه كاملاً مجاني است و مي‌تواند به عنوان يك سرويس‌دهنده يا يك سرويس گيرنده با حجم كوچكي از اطلاعات استفاده شود. بدين‌ترتيب برنامه‌نويساني نيز كه مي‌خواهند برنامه‌اي بنويسند كه داراي يك بانك اطلاعات كوچك است ديگر نيازي نيست كه نگران بانك اطلاعاتي خود باشند. چرا كه مي‌توانند برنامه خود را همراه با يك نسخه مجاني Exprees Edition ارائه كنند.

‌˜ SQL Server 2005 Compact Edition و SQL Server2005 Mobile Edition

اين دو نسخه جزء نسخه‌هايي هستند كه بعدها به مجموعه اصلي اضافه شده‌اند كه فعلاً از بحث ما خارج هستند.
نكته: يك نسخه ديگر نيز وجود دارد كه البته نسخه كرك شده نرم‌افزار مورد نظر است كه با پرداخت مبلغي اندك و ناقابل مي‌توانيد دي وي دي آن را تهيه كنيد كه در آن تمام نسخه‌هاي گفته شده وجود داشته باشد و البته بدون هيچ كم و كاستي هم كار مي‌كند!

براي اطلاعات بيشتر و دقيق‌تر در رابطه با تفاوت‌هاي بين اين نسخه‌ها مي‌توانيد به اين آدرس مراجعه  كنيد.

2- كدام سيستم عامل؟

در مورد اين‌كه SQL Server2005 روي كدام سيستم عامل را نصب كنيم، بسته به اين‌كه شما كدام نسخه را بخواهيد نصب كنيد، انتخاب‌هاي زيادي وجود دارد. اما پيشنهاد مي‌كنم كه روي سيستم‌عامل windows server2003 نصب كنيد.

چراكه با اين كار مي‌توانيد از امكانات امنيتي اين سيستم‌عامل در پايگاه داده خود بهره ببريد. توجه داشته باشيد كه اگر شما windows server2003 نداريد، بدين معني نيست كه نمي‌توانيد از SQL Server2005 استفاده نماييد؛ مي‌توانيد SQL Server2005 را روي windows XP SP2 نصب كنيد.

اگر windows Server2003 را نصب كرديد، حتماً از قسمت نرم‌افزارهايي كه با خود سي‌دي ويندوز عرضه مي‌شوند، نرم‌افزار IIS را نيز نصب كنيد. براي اين كار كافي است به Control Panel>add or remove Programs>add/remove windows component مراجعه كنيد و روي Aplication server دو بار كليك كنيد و سپس با انتخاب گزينه Internet Information services نرم‌افزار IIS را نصب كنيد. به خاطر داشته باشيد كه پيش از نصب حتماً سي‌دي ويندوز را در دستگاه گذاشته باشيد (شكل 1).

شکل 1


نكته: در رابطه با اين‌كه كدام نسخه‌ها از SQL Server2005 را روي چه سيستم‌عاملي نصب كنيد و چه نيازهاي سخت‌افزاري يا نرم‌افزاري داريد، مي‌توانيد به اين آدرس زير مراجعه كنيد.

3- نصب SQL Server2005

بعد از قرار دادن دي‌وي‌دي SQL Server2005 در دستگاه و اجراي فايل Setup و تأييد License برنامه، صفحه‌اي را مشاهده مي‌كنيد كه برنامه‌هاي مورد نياز براي نصب SQL Server2005 را در كامپيوتر شما نصب مي‌كند. اين موارد به‌طور مشخص NET FRAMWORK 2.0. و NATIVE CLIENT براي دسترسي به سرويس‌دهنده شبكه و تعدادي فايل حمايتي براي نصب SQL Server2005 است (شكل 2).

شکل 2


بعد از انتخاب گزينه Install صفحه آغازين نصب SQL  Server2005 ظاهر مي‌شود و با انتخاب گزينه Next صفحه‌اي مانند شكل 3 ظاهر مي‌شود.



شکل 3

اين صفحه در حقيقت قسمت چك كردن سيستم براي مشخص كردن مهيا بودن سيستم براي نصب SQL Server2005 است. همان‌طور كه مي‌بينيد، مواردي مانند نصب بودن ماجول‌هاي حمايت از XML و وجود Service pack در سيستم‌عامل يا دارا بودن حداقل نيازهاي سخت‌افزاري براي نصب SQL  Server2005، نصب بودن IIS و ... در اين صفحه چك مي‌شود.

اگر پيام خطا در مورد سخت‌افزار دريافت كرديد، خيلي نگران نباشيد. زيرا اگر اختلاف سخت‌افزار شما با آنچه مايكروسافت مي‌خواهد زياد نباشد، مشكلي در نصب نخواهيد داشت. اگر مانند شكل 3 ديديد كه IIS روي سيستم شما نصب نيست يا طبق روال گفته شده آن را نصب كنيد يا اگر نمي‌خواهيد با بستر اينترنت و ماجول توليد گزارش كار كنيد، بدون توجه به اين اشكال به مرحله بعد برويد.

در ادامه نصب SQL Server2005 روي كامپيتر شما آغاز مي‌شود. در ادامه صفحه بايد شماره سريال را وارد كنيد كه با انجام اين كار صفحه‌اي مانند شكل 4 ظاهر مي‌شود.

شکل 4


در اين صفحه مي‌توانيد با انتخاب سرويس‌هاي مناسب ادامه نصب نرم‌افزار را پي بگيريد. مايكروسافت اكيداً توصيه مي‌كند كه براي داشتن امنيت بهتر اگر از ماجولي استفاده نمي‌كنيد، از نصب آن خودداري كنيد. اما اگر به منظور آموزش نرم‌افزار را نصب مي‌كنيد، مي‌توانيد همه ماجول‌هاي آن را نصب كنيد.

توصيه مي‌كنم همه مثال‌ها و راهنماي نرم‌افزار كه به آن Books On Line مي‌گوييم را نيز حتماً نصب كنيد كه بعداً حتماً به كارتان خواهد آمد. براي نصب همه ماجول‌ها مي‌توانيد با انتخاب گزينه Advance از صفحه بعدي كمك بگيريد (شكل 5).

شکل 5


در صفحه بعدي شما دو انتخاب خواهيد داشت: انتخاب اول، گزينه Default instance است. اين گزينه هنگامي استفاده مي‌شود كه براي اولين بار مشغول نصب SQL  Server روي سيستم خود هستيد. اما اگر روي سيستم خود داراي SQL Server  هستيد، سيستم جديدي كه نصب مي‌كنيد، حتماً بايد داراي يك نام جديد باشد تا قابل شناسايي باشد.

بنابراين گزينه Named Instance را انتخاب مي‌كنيم و يك نام را در قسمت مربوطه براي سيستم خود وارد مي‌كنيم و سپس با گزينه Next به صفحه بعد مي‌رويم. شايد از خود بپرسيد: به چه دليلي ممكن است نياز داشته باشيم چند نسخه از اين نرم‌افزار را روي سيستم خود داشته باشيم.

مايكروسافت چهار دليل را براي اين مسئله بيان مي‌كند: اول هنگامي كه بخواهيد چند نسخه مختلف را به طور همزمان روي سيستم خود داشته باشيد. دوم هنگامي كه مي‌خواهيد كار يك برنامه براي برقراري ارتباط بين چند سيستم را تست كنيد.

بدين ترتيب به جاي اين‌كه چند سيستم را روي چند كامپيوتر اجرا كنيد، همه سيستم‌ها را روي يك كامپيوتر نصب مي‌كنيد و بعد تست مي‌كنيد. بديهي است اين روش داراي صرفه اقتصادي بيشتري است. دليل سوم هنگامي كه داراي چند مشتري هستيد كه هر كدام سيستم خود را مي‌خواهند و چهارم مربوط به زماني است كه داراي چند برنامه روي سيستم خود هستيد كه هر برنامه نيازمند سيستم خود است (شكل 6).


شکل 6


در ادامه بايد كاربران مجاز را با سطح دسترسي مشخص براي سيستم معلوم  كنيد. براي اين كار سه راه وجود دارد: اول شما انتخاب مي‌كنيد كه افرادي كه به كامپيوتري كه سيستم مديريت پايگاه شما روي آن نصب است دسترسي دارند با همان username و password به SQL Server2005 دسترسي خواهند داشت. حالت دوم هنگامي است كه خود username و password جديد براي كاربر انتخاب مي كنيد. حالت سوم نيز هنگامي است كه به ازاي هر سرويس، كاربر تعريف مي‌كنيد (شكل 7).

شکل 7


همان‌طور كه در شكل 7 مي‌بينيد، مي‌توانيد از قسمت پايين سرويس‌هايي كه بعد از نصب مي‌خواهيد اجرا شود را انتخاب كنيد. با انتخاب گزينه NEXT به صفحه بعد مي‌رويد. در اين صفحه نحوه تعيين هويت را براي SQL Server2005 معلوم مي‌كنيد.

براي اين‌ كار دو راه‌حل داريد: اول انتخاب Windows Authentication Mode كه موجب مي‌شود سيستم از روال‌هاي امنيتي سيستم‌عامل استفاده كند و دوم Mixed Mode كه هم روال‌هاي سيستم‌عامل است و هم ساير روال‌هاي تعريف شده براي خود SQL Server. بايد توجه داشت كه با انتخاب Mixed Mode بايد نام و رمز مدير سيستم را معلوم كنيد.

در اينجا دو نكته اساسي وجود دارد: اول اين‌كه Windows Authentication Mode از امنيت بيشتري برخوردار است و البته در اينجا دليل استفاده از سيستم‌عامل Windows Server2003 معلوم مي‌شود. دوم اين‌كه، اگر از Mixed Mode استفاده مي‌كنيد، حتماً بايد براي مدير سيستم از يك Password قوي استفاده كنيد. توجه داشته باشيد كه Mixed Mode هنگامي كاربرد دارد كه كاربران زيادي از طريق يك برنامه با SQL Server2005 ارتباط برقرار مي‌كنند (شكل 8).

شکل 8


در صفحه بعد مي‌توانيد نحوه ذخيره‌سازي اطلاعات را از نظر نحوه كد شدن حروف و كاراكترها انتخاب كنيد. توجه داشته باشيد كه اين انتخاب براي حالت كلي است و البته در خروجي شما هنگامي كه مي‌خواهيد خروجي منظم باشد، اثر مستقيم دارد.

يعني هر Collation داراي نظم خاصي است. البته مي‌توانيد به ازاي هر سرويس قرارداد خاصي  تنظيم كنيد. براي اين ‌كار كافي است فقط تيك اول صفحه را فعال كنيد. اما فعلاً بهتر است به همان صورت پيش فرض نصب كنيد (شكل 9).

شکل 9


در صفحه بعد دو گزينه مي‌بينيد: اولي براي اين‌كه اگر سيستم به مشكلي برخورد كرد، اطلاعات خطاي شما به صورت خودكار براي مايكرو سافت ارسال شود تا بتواند از آن براي بهتر شدن محصولات خود استفاده كند و در عين حال سعي كند مشكل شما را حل كند.


دوم براي اين است كه اطلاعات كاربرد و ويژگي‌هاي مورد استفاده شما از SQL Server2005 به مايكروسافت فرستاده شود تا اگر در كار شما مطلب يا كاربرد جديدي بود، در نسخه هاي بعدي به عنوان قسمتي از راهنما به كاربران عرضه شود.

در صفحه بعد خلاصه‌اي از چيزي كه قرار است روي سيستم شما نصب شود، مشاهده مي‌كنيد و با انتخاب گزينه Install فرآيند نصب آغاز مي‌شود و البته خوشبختانه فرايند پيشرفت در هر سرويسي جداگانه نمايش داده مي‌شود كه اين خود براي كاربر درك بهتري پديد مي‌آورد (شكل 10).

شکل 10


و بدين ترتيب نصب SQL Server2005 به پايان مي‌رسد.

4- آشنايي با محيط SQL Server Management Studio

بعد از نصب SQL Server2005 با مراجعه به گزينه Start و انتخاب programs در windows XP يا انتخاب All programs در Windows Server2003 و انتخاب Microsoft SQL Server2005 گزينه SQL Server Management Studio را مشاهده خواهيد كرد و با انتخاب اين گزينه محيط اين برنامه ظاهر خواهد شد.
 
از اين به بعد اين گونه كارها را بدين شكل نمايش مي‌دهيم.
مثلاً: Start>Programs>Microsoft SQL Server 2005>SQL Server Management studio در ابتدا با صفحه‌اي مانند شكل 11 روبه‌رو مي‌شويد.

شکل 11


اگر روي كامپيوتر خود چند  سيستم نصب كرده‌ايد، مي‌توانيد سرويس‌دهنده‌اي را كه مي‌خواهيد به آن وصل شويد، از قسمت Server Name انتخاب كنيد و البته نحوه وصل شدن به سيستم و نام ورمز كاربري را نيز توسط قسمت Authentication معين كنيد تا بتوانيد به SQL Server Management Studio (از اين به بعد آن را به اختصار SSMS مي‌ناميم) وصل شويد و بدين‌ترتيب شكل 12 را خواهيد ديد.

شکل 12


همان‌طور كه در شكل مي‌بينيد، در سمت چپ داراي Object explorer هستيم. بدين ترتيب مي‌توانيم به همه شيءهاي موجود دسترسي داشته باشيم. اگر بخواهيم نگاهي ظاهري به اين قسمت داشته باشيم، اولين چيزي كه جلب توجه مي‌كند، وجود يك شيء به نام Server است و البته درست حدس زديد.

با دسترسي به اين شيء اين امكان براي ما وجود خواهد داشت كه همزمان به چند Server مختلف دسترسي داشته باشيم. براي اين‌ كار كافي است از منوي file گزينه Connect Object Explorer را انتخاب كنيد تا بتوانيد سرور جديدي را كه مي‌خواهيد به آن وصل شويد، انتخاب كنيد.

در Object Explorer بعد از گزينه Server داراي شيء Database هستيم. نكته بسيار جالب و مهم اين است كه در SQL Server2005 شما System Database و Database Snapshot را به صورت جدا از بقيه پايگاه هاي كاربر مي‌بيند و بدين ترتيب امكان مديريت بسيار بيشتر و راحت‌تر براي كاربر وجود دارد.

در قسمت پايگاه‌هاي كاربر اگر هر پايگاه را انتخاب كنيد داراي موارد ذيل هستيد: اول از همه، Database Diagramكه شامل دياگرام‌هاي رسم شده براي پايگاه است. سپس Tables كه همان جداول پايگاه است وجود دارد. بعد گزينه‌ view كه فهرست ويوهاي پايگاه در آن قرار دارد و به همين ترتيب بقيه موارد نيز ديده مي‌شود.

از شماره بعد به توضيح همزمان روش‌هاي پياده‌سازي پايگاه و امكاناتي مي‌پردازيم كه SQL Server2005 براي كاربر به وجود مي‌آورد.

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

چگونگي انتقال اطلاعات در اوراكل 10g دوشنبه سیزدهم آبان 1387 18:56
چگونگي انتقال اطلاعات در اوراكل 10g

امين صفائي‌
ماهنامه شبکه - شهريور ۱۳۸۶ شماره 79

اشاره :

در اوراكل 10g بر خلاف نسخه‌هاي قبلي كه تنها از ابزارهاي Export و Import استفاده مي‌شد، با استفاده از Data Pump Export/Import مي‌توان اطلاعات و ساختار پايگاه اطلاعاتي را از يك ماشين به ماشين ديگر انتقال داد. ولي در برخي موقعيت‌ها مانند وقتي كه مي‌خواهيم اطلاعات را از نسخه قبلي به صورت غيرمستقيم جابه‌جا كنيم، بايد از روش قبلي، يعني همان ابزارهاي ‌Import و ‌Export استفاده كنيم. در اين مقاله به صورت كلي روش انتقال اطلاعات در اوراكل را مورد بررسي قرار مي‌دهيم. به طور كلي از اين ابزار مي‌توان جهت كپي اطلاعات و بازآوري داده‌ها، انتقال يك بانك اطلاعاتي به بانك ديگر و انتقال داده از يك نسخه به نسخه بالاتر استفاده نمود. با استفاده از ابزار Import و Export مي‌توان از اطلاعات به صورت Incremental كپي پشتيبان گرفت و مجدداً ذخيره نمود. مي‌توان يك يا چند بخش از پايگاه داده را انتقال داد. مي‌توان اطلاعات را از يك سيستم‌عامل به سيستم عامل ديگر منتقل كرد. به علا‌وه، امكان ذخيره داده‌ها در فايل‌هاي سيستم‌عاملي نيز وجود دارد. در واقع ابزار Export در بانك اطلاعاتي جست‌وجو مي‌كند و خروجي را در فايلي به نام Export Dump مي‌نويسد. با اين ابزار مي‌توانيم همه بانك اطلاعاتي، اطلاعات كاربر خاص يا حتي جدول مشخصي را ذخيره نماييم. با كمك اين ابزار حتي مي‌توانيم اشياي Tablespace و Indexها را نيز انتقال دهيم. ابزار Import از طرف ديگر اطلاعات باينري فايل Dump را كه ابزار Export آن را درست كرده است، اجرا مي‌كند. نكته مهم اين است كه لازم نيست اين اطلاعات در پايگاه اطلاعات مشابه يا Schema مشخصي كه اطلاعات از آن برداشته شده است، منتقل شود. حتي مي‌توان قسمتي از اطلاعات Export شده را برداشت نمود.


‌صادر كردن اطلاعات با Export

Export را كه بعضاً به آن كپي پشتيبان منطقي نيز مي‌گويند، تعاريف DDL اشياي بانك اطلاعاتي و داده‌هاي بانك اطلاعاتي را در خود ذخيره مي‌كند. اين ابزار چهار سطح دارد:

˜ Full Mode: تمامي Data Dictionary خوانده مي‌شود و تمامي ديتابيس export مي‌شود و تمامي DLLهايي كه براي ايجاد مجدد كل ديتابيس نياز است، در فايل Dump نوشته مي‌شود. اجزاي اين فايل از دستوراتي تشكيل شده است كه براي ساخت تمامي اجزا، كاربران، Tablespaceها، مجوزها و همه چيزهاي لازم در پايگاه داده جديد نياز است.

˜ Tablespace Mode: تمامي ايندكس‌ها و اجزاي مورد نياز كپي مي‌شود.

˜ User Mode: اشياي متعلق به كاربر خاص و داده‌هاي آن انتقال مي‌يابد.

˜ Table Mode: جدول مشخص به همراه ايندكس‌ها، ساختار آن انتقال مي‌يابد.

براي export كردن مي‌توانيد به خط دستوري Command Line برويد و عبارت exp را مستقيماً وارد كنيد. اما بهتر است براي يك Export كامل و بدون اشكال از فايل پارامتري استفاده شود. شكل 1 نمونه‌اي از اين فايل را نشان مي‌دهد (فايل scr_exp.exp را در درايو C به وجود آوريد).

شکل 1

جدول 1 پارامترهايي را مشخص كرده است كه مي‌توانيد در دستور exp از آن استفاده كنيد. (پارامترهايي كه در كارايي بانك اطلاعاتي تأثير دارند، با رنگ متفاوت مشخص شده‌اند).

 پارامتر

توضيح پارامتر 

USERID 

نام کاربر که مجوز Export دارد. USERID=traffic_admin@traffic 

BUFFER 

اندازه بافري که براي واکنش رکوردها از بانک اطلاعاتي تعيين مي‌گردد. اين مقدار حافظه‌اي است که براي Export نياز است. معمولاً بافرهاي بالا کارايي بالاتري دارند. 

FILE 

نام فايلي که Export مي‌سازد.

GRANT 

اگر اين پارامتر را مساوي Y قرار دهيم، مجوزها در فايل Dump ذخيره مي‌شوند. 

INDEXES

ايندکس‌ها در فايل Export ذخيره مي‌شوند. 

 ROWS

اگر مقدار اين پارامتر را مساوي Y قرار دهيم، رکوردهاي جدول در فايل ثبت خواهد شد. 

 CONSTRAINTS

مي‌توانيم Constraintsها را با Y ثبت و با N غيرفعال کنيم. 

 COMPRESS

اگر مقدار اين پارامتر را مساوي Y قرار دهيم، باعث بازنويسي مجدد پارامتر Storage جداول و Indexها مي‌گردد. استفاده از اين پارامتر باعث يکپارچگي داده‌ها و جداول خواهد شد.

 FULL

با استفاده از اين پارامتر تمامي Schemaهاي بانک اطلاعاتي در فايل Export ذخير مي‌گردد. 

 OWNER

با انتخاب اين گزينه مي‌توانيم کاربران اشياي بانک اطلاعاتي را انتخاب کنيم که مي‌خواهيم اطلاعاتشان را منتقل کنيم. 

RECORD LENGTH

موقع انتقال اطلاعات از يک سيستم از يک سيستم‌عامل به سيستم‌عامل ديگر بايد از اين پارامتر براي مشخص نمودن اندازه طول رکورد فايل (براساس بايت) استفاده کنيم.

INCTYPE

اگر بخواهيم از Full Mode استفاده کنيم، مي‌توانيم از اين پارامتر استفاده کنيم و مشخص کنيم که تمامي اطلاعات را مي‌خواهيم Backup بگيريم؛ يعني INCTYPE=COMPLETE. اگر بخواهيم تنها جداول تغيير يافته Backup شوند، از انتخاب‌هاي Comulative و Incremental استفاده کنيم.

RECORD

با استفاده از اين پارامتر مي‌توانيم مشخص کنيم که ثبت اطلاعات incremental در جداول SYS.INCEXP و SYS'INCID صورت گيرد يا خير.

PARFILE

نام فايل پارامتري.

LOG

نام فايلي که اطلاعات مربوط به LOG در آن ذخيره مي‌شود.

CONSISTENT

اين پارامتر مشخص مي‌کند که آيا جدولي که Export شده است، نياز به اعمال Read_consistent دارد يا خير.

STATISTICS

با مقادير Estimate و Compute اطلاعات آماري مربوط به جداول و ايندکس‌ها در زمان Import.

DIRECT

براي لود مستقيم اطلاعات به کار مي‌رود که سرعت بيشتري دارد.

FEEDBACK

اگر مثلاً مقدار اين پارامتر را دويست تعيين کنيد، آن‌گاه به ازاي هر دويست رديفي که Export مي‌شود، يک نقطه در نمايشگر نمايش داده مي‌شود.

FILESIZE

حداکثر اندازه فايل Export با بايت

TABLE SPACE

فهرست تمامي Tablespaceهايي که بايد Export شود.

VOLSIZE

حداکثر اندازه در هر Volume بر حسب بايت

جدول 1- پارامترهاي قابل استفاده براي Export

مثلاً تصور كنيد مي‌خواهيم تمامي اشياي مربوط به كاربر HOTELMANAGER را از بانك اطلاعاتي HOTEL جمع‌آوري كنيم يا به اصطلاح Backup بگيريم. ابتدا به RUN مي‌رويم و CMD را انتخاب مي‌كنيم تا به محيط Command Lineبرويم.

حال همان‌‌طور كه در شكل 2 نشان داده شده است،‌ در خط دستوري دستور exp را وارد مي‌كنيم. سپس سيستم از ما مي‌خواهد نام كاربر و رمز ورودي را وارد كنيم. سپس نام فايل Dump را سؤال مي‌كند. پس از آن همان‌طور كه مشاهده مي‌كنيد، سيستم سؤال مي‌كند كه مي‌خواهيد از كدام  Export استفاده كنيد.

شکل 2

مثلاً مي‌گوييم مي‌خواهيم User را كپي كنيم. سپس نام كاربر را وارد مي‌كنيم. اگر بخواهيم تنها يك كاربر را منتقل كنيم، نام كاربر را وارد مي‌كنيم و اگر سيستم دوباره سؤال كرد كه كاربر بعدي را وارد كنيد، كافي است يك دات  (نقطه) وارد كنيد. سپس سيستم فايل Dump را براي شما مي‌سازد.

وارد كردن اطلاعات با Import

در حقيقت دستور Import فايل Export Dump را مي‌خواند و دستورات آن را اجرا مي‌كند و اشيا و كاربراني كه در  فايل Export وجود دارند را به بانك اطلاعاتي جديد معرفي مي‌كند. جدول 2 برخي از مهم‌ترين پارامترهايي كه در دستور ‌Import مورد استفاده قرار مي‌گيرد را نشان مي‌دهد.

پارامتر 

توضيح پارامتر 

 Userid

نام کاربر داراي مجوز USERID=traffic_admin;traffic Import

 Buffer

اندازه بافري که در استخراج اطلاعات يک Row استفاده مي‌شود. 

 File

نام فايلي که بايد Import شود. 

 Show

اگر مقدار اين پارامتر را Y قرار دهيم، محتواي فايل نشان داده مي‌شود. 

 Ignore

ناديده گرفتن خطاهايي که موقع Create ايجاد مي‌شود. 

 Grant

اگر مقدار اين پارامتر را Y قرار دهيم، Grantهاي اشياي پايگاه‌داده هم وارد بانک جديد مي‌شوند. 

 Indexes

ايندکس‌هاي جداول 

 Rows

با انتخاب Row،Yهاي بانک اطلاعاتي به بانک جديد اضافه مي‌شوند و در غير اين صورت، فقط فايل‌هاي DLL اشياي پايگاه‌داده اجرا مي‌شود. 

 Log

اسم فايلي که لوگ Import در آن ذخيره مي‌شود. 

 Full

با قرار دادن اين پارامتر مساوي Y تمامي اطلاعات فايل انتقال مي‌يابد. 

 Fromuser

اسامي کاربراني که بايد از فايل خوانده شود. 

 Touser

اسامي کاربراني که اطلاعات بايد به آن‌ها داده شود. 

 Tables

فهرست جداولي که بايد Import شوند. 

 Commit

وقتي اين پارامتر Y باشد، بعد از هر تغيير در بانک اطلاعاتي به صورت خودکار تغييرات ذخيره مي‌شود. 

 Parfile

نام فايل پارامتري که در Import مورد استفاده قرار مي‌گيرد.

 Constraints

وقتي اين مقدار مساوي Y قرار مي‌گيرد، Constraintsهاي جداول هم به بانک جديد منتقل مي‌شوند.

 Indexfile

اين گزينه دستوراتي مانند Create Cluster، Create Table و... را به جاي آن که اجرا کند، در فايلي قرار مي‌دهد و آن را اجرا نمي‌کند. 

 Feedback

اعداد رکوردهايي که در مرحله Import نمايش داده مي‌شود. اگر مقدار اين پارامتر را صفر قرار دهيم، هيچ Feedback تا وقتي که تمام Import انجام نشود، نمايش داده نخواهد شد. 

 Filesize

حداکثر اندازه فايل Dump 

 Resumable

مشخص مي‌کند که آيا Session بعد از وجود خطا به کار خود ادامه دهد يا خير. 

 Compile

کامپايل Procedureها، Functionها و... بعد از Import 

 Volsize

حداکثر اندازه بايت در يک فايل 

 Datafiles

فهرست DataFileهايي که بايد به Database انتقال يابد. 

 جدول 2- پارامترهاي قابل استفاده براي Import

براي اين‌كه بتوانيم اطلاعات موجود در فايل Export را به بانك اطلاعاتي جديد وارد كنيم، بايد از دستور Importاستفاده كنيم. تصور كنيد كه در دستگاه ديگري اوراكل نصب كرده‌ايد و مي‌خواهيد فايل خود را Import كنيد. كافي است ابتدا به RUN برويم و CMD را انتخاب مي‌كنيم تا به محيط Command Line برويم.

سپس دستور IMP را وارد مي‌كنيم. سپس سيستم از شما مي‌خواهد اسم فايلي را وارد كنيد كه Export آن را توليد كرده است. سپس سؤالاتي در مورد پارامترهايي كه در جدول 2 در مورد آن صحبت شد، به عمل خواهد آمد و در ادامه سيستم نام كاربري را مي‌خواهد كه مي‌خواهيد آن را Import كنيد.

پس از وارد كردن نام كاربر، اگر نخواهيد كاربر ديگري را اضافه كنيد، كافي است يك دات (نقطه) وارد كنيد‌. سپس سيستم اشياي كاربر مورد نظر را به بانك اطلاعاتي جديد منتقل مي‌نمايد. (شكل 3)

شکل 3

استفاده از Data Pump در Export و Import

پمپ اطلاعات در نسخه 10g به عنوان امكان انتقال اطلاعات معرفي گرديد. Data Pump ابزار Import و  Export تحت سرور را مهيا مي‌كند. اين ابزار هم از نظر كارايي و معماري از ابزار معمولي Import و Export اطلاعات عملكرد بهتري دارد. در اين ابزار امكان شروع و خاتمه Jobها، ديدن عملكرد Jobها و محدود كردن اطلاعات وجود دارد.

نكته مهم اين است كه Data Pump مي‌تواند از فايل‌هاي توليد شده از مدل معمولي Export  استفاده كند. اما ابزار Import معمولي نمي‌تواند از فايل‌هاي توليد شده از Data Pump Export استفاده كند. Data Pump رويه‌اي است كه در سرور اتفاق مي‌افتد. در نتيجه پروسه كلاينتي كه يك Job را شروع كرده است مي‌تواند موقتاً اتصال را معلق نمايد و بعد از اتصال مجدد كار خود را انجام دهد.

از آن جايي كه در اين روش اطلاعات لازم نيست توسط برنامه  كلاينت پروسس شود و استخراج و Load اطلاعات به صورت هم‌زمان انجام مي‌پذيرد كارايي در اين روش بسيار بالا تر از مدل معمولي Export و Import است كه قبلاً در مورد آن توضيح داده شد.

براي استفاده از Data Pump بايد يك دايركتوري براي فايل‌هاي اطلاعات و Logها توليد گردد. براي اين كار همان‌طور كه در كدهاي زير مشاهده مي‌كنيد، بايد با استفاده از دستور Create Directory دايركتوري مربوطه را ايجاد كنيم و به كاربراني كه مي‌خواهند به فايل‌هاي Data Pump دسترسي داشته باشند، مجوزهاي مناسب را براي نوشتن و خواندن اطلاعات را بدهيم. مثال زير دايركتوري DumpDir را با Grantهاي خواندن و نوشتن براي اسكيماي ‌Systemنشان مي‌دهد.

;'create directory dumpdir as 'c:\dumpdir
;grant read on directory dumpdir to system
grant write on directory dumpdir to system


پنج مدل براي Data Pump Export وجود دارد:

˜ Full Export: براي استخراج تمام اطلاعات پايگاه داده و Metadata
˜ Schema Export: براي استخراج اطلاعات و Metadata از اسكيماي خاص
˜ Tablespace Export: براي استخراج اطلاعات و Metadata از Tablespaceها
˜ Table Export: براي استخراج اطلاعات و Metadata از جدول‌ها و پارتيشن آن‌ها
˜ Transportable Export: براي استخراج اطلاعات و Metadata از Tablespaceهاي خاص‌

نكته مهمي كه بايد در Data Pump Export به آن توجه شود اين است كه privilege يا اختيار EXP_FULL_DATABASE را بايد به كاربري كه مي‌خواهد Transportable Export را انجام دهد اضافه نمود.

در حقيقت وقتي كه كاربر يك Job را ارسال مي‌كند، اوراكل يك نام كه خود آن را ساخته است، براي آن Job مي‌سازد (البته مي‌توان نام Job را با پارامتر ‌Job_name نيز تعيين كرد، ولي بايد مراقب Conflict شدن نام‌ها باشيم). وقتي Data Pump در حال كار است، اوراكل يك جدول براي آن Job مي‌سازد كه هم نام Job است.

براي شروع كار Data Dump Export مي‌توانيم از فايل پارامتري استفاده كنيم. مثلاً نام اين فايل را pumpexp.par  مي‌گذاريم و دستورات زير را در آن تايپ مي‌كنيم:

DIRECTORY=c:\dumpdir
DIRECTORY=c:/metadata.dmp
CONTENT=METADATA_ONLY

سپس دستور زير را براي اجراي Data Pump Export اجرا مي‌كنيم:

Expdp system/system parfile=c:/pumpexp.par

بعد از اجراي اين دستور اگر با اشكالي مواجه نشويد، يك فايل به نام metadata.dmp توليد خواهد شد كه حاوي اطلاعات XML از ساختار اسكيما است.

براي Import كردن اطلاعات مي‌توانيم مستقيماً از دستور impdp يا از طريق فايل پارامتري استفاده كنيم و‌ آبجكت‌هاي اسكيماي توليد شده در فايل metadata.dmp را به هر پايگاهي كه مايليم  Import كنيم. البته در Export و Import نكاتي از قبيل چگونگي Stop كردن و دوباره شروع كردن Jobها نيز وجود دارد كه مي‌توانيد اطلاعات خوبي را در اين زمينه از نشاني زير دريافت نماييد:
http://download.oracle.com/docs/cd/B12037_01/server.101/b10825/dp_overview.htm

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

نگاهي به اوراكل 11g دوشنبه سیزدهم آبان 1387 18:55

امين صفايي
ماهنامه شبکه - شهريور ۱۳۸۶ شماره 79

اشاره :

نسخه جديد اوراكل با نام 11g بيستم تير 1386 به صورت رسمي توسط اين شركت معرفي گرديد. بنا به ادعاي مسئولان اين شركت، اين نسخه نسبت به Oracle 10g حدود 482 قابليت جديد دارد كه اغلب در زمينه مديريت بهتر، دسترسي‌پذيري بيشتر و ساختار هوشمندانه ارائه شده است. در اين نسخه با استفاده از فناوري فشرده‌سازي تقريباً دو سوم در ذخيره‌سازي اطلاعات صرفه‌جويي مي‌شود. امكاناتي همچون Data Guard ،Replay Workload (براي ذخيره تمامي فعاليت‌هاي پايگاه داده)، Online Application Upgrades ،Quick Fault Resolution (مديريت سريع رفع اشكال)، Database Repair Adviser (براي كمك به مديران پايگاه اطلاعاتي) و كامپايلر Native براي Java و PL/SQL اين نسخه را از اوراكل 10g متمايز مي‌نمايد. بيشتر قابليت‌هاي جديدي كه در نسخه 11g وجود دارد، در واقع ابزارهايي هستند كه به DBA كمك مي‌كنند كارهاي مديريتي مانند مديريت حافظه، مديريت فضا و ... را بهتر انجام دهد. اگرچه هنوز در ايران سازمان‌ها و شركت زيادي با نسخه‌هاي 8 و 9i كار مي‌كنند و اغلب درصدد ارتقاي سيستم‌هاي خود به Oracle 11g هستند و گمان نمي‌رود حداقل تا چند سال آينده از اين نسخه جديد استفاده كنند، خالي از لطف نخواهد بود كه بدانيم چه قابليت‌هاي جديدي در اوراكل 11g وجود دارد. در اين مقاله قصد آن نيست كه كليه 482 قابليت جديد اوراكل 11gرا بررسي شود، بلكه به صورت كلي اشاره‌اي مي‌شود به تيترهاي مهم‌ترين قابليت‌هاي اين نسخه از بانك اطلاعاتي اوراكل.


482 قابليت جديد در اوراكل 11g وجود دارد كه اغلب در زمينه مديريت بهتر، دسترسي‌پذيري بيشتر و ساختار هوشمندانه ارائه شده است.

قابليت‌هاي جديد در SQL

- Clause جديد Pivot: اين Clause به ما اجازه مي‌دهد مانند جدول Pivot در اكسل بتوانيم چند ركورد را در يك ستون نمايش دهيم. با استفاده از اين قابليت مي‌توانيم ركوردها را به ستون و ستون را به ركورد تبديل كنيم. اين قابليت در SQL Server 2005 نيز معرفي شده است. براي اطلاعات بيشتر در مورد اين قابليت جديد، به اين نشاني مراجعه كنيد.

- با استفاده از قابليت ‌Scalable Execution مي‌توان به صورت خودكار نتايج جست‌وجوي SQL را در catch ذخيره نمود.
- نسخه ‌11g از مكانيزم‌هاي جست‌وجوي XML مانند XQuery و SQL XML پشتيباني مي‌كند‌. در اين نسخه كارايي‌ dbms_stats بالاتر رفته است.
- قابليت تنظيم Execution Plan براي Statementهاي مشخص وجود دارد.
- قابليت SQL پويا با استفاده از  DBMS_SQL 
- قابليت Tuning كامل و خودكار SQL 
- توسعه قابليت SQL Access Adviser

قابليت پشتيباني از زبان‌ها

- توسعه درايور PHP براي اوراكل‌
- توسعه كامپايلرهاي Java و PL/SQL
- پشتيباني بيشتر از زبان XML
- پيشرفت در مديريت Sequenceها با ByPass كردن DML
- توانايي نوشتن ماكرو با زبان C

قابليت‌هاي جديد در PL/SQL

- اضافه شدن صفحه‌كليد Continue در PL/SQL
- توانايي غير فعال كردن حالت PL/SQL
- از آنجايي كه كدهاي PL/SQL در اوراكل 11g مستقيماً به Shared Library مي‌روند، كامپايل اين كدها از طريق  زبان C انجام نمي‌شود و با سرعت بالاتري اين كامپايل صورت مي‌گيرد.
- تقويت مكانيزم اجرايي Stored Procedureها
- پيام‌هاي خطاي PL/SQL موقع كامپايل شفاف‌تر شده است.

قابليت‌هاي جديد براي مديران پايگاه‌داده (DBA)

- پيشرفت در مديريت چرخه اطلاعات يا Information Lifecycle Management
- قابليت Interval Partitioning كه به صورت خودكار پارتيشن‌هاي جديد را براي داده‌هاي جديد درست مي‌كند.
- ابزارهاي جديد جهت Load Balancing
- نوع داده جديد به نام Simple_integer در اين نسخه اضافه شده است. اين نوع داده هميشه NOT NULL است، به جاي اين‌كه Overflow شود، Wrap مي‌شود و از PLS_INTEGER سريع‌تر است.
-در اين نسخه از اوراكل ‌مي توانيم جدولي را Compress كنيم و آن را در OLTP معمولي استفاده نماييم.
- Trigger DMLها حدوداً 25 درصد سريع‌تر كار مي‌كنند.
- پيشرفت در مديريت فايل‌هاي اطلاعاتي NFS
- در اوراكل Server-Side Connection Pooling، 11g به ما اجازه مي‌دهد Sessionها را سريع‌تر توليد كنيم.
- توانايي تعريف ستون‌هاي مجازي كه در حقيقت Function هستند.
- اضافه شدن صفحه‌كليد Super براي اوراكل شيءگر
- قابليت ذخيره XML در CLOB يا Binary
- نوع جديد Trigger مركب كه داراي Sectionهايي براي پروسه‌هاي Before ،Row و AFTER است.
- اضافه شدن Automatic Diagnostic Repository) ADR) براي ذخيره خطاهاي به وجود آمده‌
- ابزار جديدي به نام Hangman Utility براي پيدا كردن عوامل كندي پايگاه‌داده‌
- ابزار جديد كنترل سلامتي پايگاه داده  به نام Health Monitor) HM)‌
- ابزار جديد Advisers براي بالابردن كارايي پايگاه‌داده
- امكان تعريف نوبت اجرا شدن Triggerها
- توانايي تعريف ايندكس‌هاي مخفي يا Invisible Index

قابليت‌هاي جديد در Oracle Enterprise Manager) OEM)

- داشتن اينترفيس‌هاي گوناگون براي ارتباط با برنامه‌هاي مختلف‌
- نصب و برداشتن آسان نرم‌افزار اوراكل‌
- در اختيار گذاشتن GUI كمكي براي كاربران مبتدي جهت نگهداري بانك اطلاعاتي‌
- ابزار OEM Grid بهتر در مقايسه با نسخه‌هاي قبلي‌

قابليت تنظيم و افزودن كارايي بانك اطلاعاتي‌

- افزايش كارايي Automatic Memory Tuning) AMT)
- افزايش قابليت مديريت منابع I/O با دادن حق تقدم به فايل‌ها، نوع فايل‌ها و گروه‌هاي ديسك ASM
- در نسخه جديد اوراكل، ADDM مي‌تواند در تمامي سطوح RAC به مدير پايگاه مشاوره دهد.
- مرتب‌سازي ‌(Sorting) ‌سريع‌تر انجام مي‌گردد.

قابليت‌هاي جديد امنيتي و كنترل كاربران‌

- طريقه رمزگذاري در اوراكل 11g از DES به SHA-1 تغيير يافته و در نتيجه رمزگذاري در اين نسخه از اوراكل امن‌تر شده است.
- معرفي فايل‌هاي امن SecureFiles به جاي LOBs
- معرفي Audit Vault براي امنيت بيشتر كاربران
- توانايي تعريف Security روي پورت‌ها و URLها

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

ويژگيهاي بانكهاي اطلاعاتي در تحقيق و توسعه

فصلنامه اطلاع رساني. دوره 11، شماره 1.  زمستان 1373
صفحه: 51-55

 

مهرداد علي احمد و حسين شورستاني
شركت مهندسي برق – مشانير

 


كليد واژه ها :
بانكهاي اطلاعاتي * تحقيق و توسعه * شبكه هاي كامپيوتري
 

چكيده :
رشد سريع و غير قابل مهار حجم اطلاعات توليد شده در جهان ، امروزه اغلب مردم و كارشناسان امور اطلاع رساني را با مسئله اي مهم و حياتي روبه رو ساخته است . اطلاعات به صورت سرطاني رشد مي يابد . در اين بين ، كارشناسان و متخصصان مراكز اطلاعاتي با روشهاي دستي و بدون استفاده از وسيله اي قوي و سريع نمي توانند به مقابله با اين پديده كه به اصطلاح " انفجار اطلاعات " ناميده شده بروند . همزمان و به موازات انفجار اطلاعات ، شاهد پيشرفت سريع علم الكترونيك و تكنولوژي كامپيوتر و استفاده از آن در فعاليتهاي اقتصادي ، اجتماعي ، نظامي و فرهنگي هستيم . با رشد فزاينده اطلاعات ، جايگاه ثبت ، عمل آوري و پياده سازي اطلاعات در تحقيق و توسعه بسيار مشهود است . دراين مقاله ، سعي شده در مورد بانكهاي اطلاعاتي و شبكه هاي كامپيوتري – كه دو جزء لاينفك در پديده اطلاع رساني اند – بحث و به ويژگيها و خصوصيات فني هر يك پرداخته شود .
 

طرح مسئله
يكي از القابي كه به جهان معاصر ما داده اند ، عصر اطلاعات و ارتباطات است و علت اين نامگذاري ، در واقع توجه فوق العاده و فعاليت بسيار گسترده اي است كه در زمينه اطلاعات ( ذخيره ، بازيابي و كاربردهاي آن ) انجام مي گيرد . با پديد آمدن علم جديد اطلاع رساني كه وظيفه آن مطالعه در ماهيت اطلاعات و راههاي شناخت ، حفظ ، غنا و اعتلا و انتقال آنهاست ، عصر ما ، وارد مرحله جديدي گرديده است . بايد اين اصل بديهي را بپذيريم كه در جهان معاصر ، اطلاعات " قدرت " است و با توجه به سير سرمايه گذاري و تحقيقات و مطالعه در اين زمينه، گذشت زمان اهميت اين مسئله را بيشتر هويدا مي كند . جامعه كنوني ما ، جامعه اطلاعات است و برتري جهان پيشرفته بر ديگران ، بيش از آنكه افتصادي يا نظامي باشد ، اطلاعاتي است . گرچه اين نكته خود بيانگر اين است كه پيشرفت اطلاعاتي ، خود زمينه ساز غناي اقتصادي و پيشرفت نظامي نيز مي گردد . به عبارت ديگر ، اولين وجه تمايز كشورهاي پيشرفته و توسعه يافته ، بر ديگر كشورها در ميزان توليد ، سازماندهي و كاربرد اطلاعات است . نخستين حركت ، براي كاهش دادن فاصله بين اين كشورها ، ايجاد زيربناهاي اطلاعاتي و تحقيق و پژوهش در مورد كاربردهاي اطلاعات و رفع تنگناهاي اطلاعاتي است . رشد و اعتلاي يك كشور توسعه يافته ، بدون استفاده از اطلاعات و كاربردهاي آن ، ناممكن به نظر مي رسد و اصولأ "توسعه " و "اطلاعات " نمي توانند دو مقوله جدا از يكديگر محسوب گردند . حال كه به اهميت و ضرورت بهره گيري از اطلاعات پي برديم ، مسئله طراحي و تدوين سياست اطلاع رساني جايگاهي بس والا و استراتژيك پيدا مي كند . صرف " كامپيوترايز كردن " دستگاههاي اطلاع رساني ، بدون بررسي و آموزش نيروي انساني ، سازماندهي و تمركز در هدفگذاري اقدامي است كه ما را در رسيدن به هدف اصلي مان – كه همان تحقيق و توسعه است – باز دارد . ضرورت استفاده از كامپيوتر و تكنولوژيهاي جديد اطلاع رساني ، بر هيچ كس پوشيده نيست . اما استفاده بهينه از آن ، هنگامي خودنمايي مي كند كه با ديد باز و برنامه ريزي و شناخت كامل به استقبال آن برويم .
پايه و اساس جامعه " فرصنعتي " يا " اطلاعاتي " به كارگيري گسترده تكنولوژيهاي ارتباطي – اطلاعاتي است . در واقع تكنولوژيهاي ارتباطي ، يااطلاعاتي درهم آميخته اند و خدماتي را ارائه مي دهند كه در كار گردآوري ، انباشت ، فراخواني يا پردازش ، بازيابي و توزيع اطلاعات ، انقلابي به وجود آورده اند . خود اين امر ، سرعت توليد اطلاعات را صورت فزاينده اي ، افزايش داده است و محور تمام اين تحولات " كامپيوتر" است .
ما به زودي وارد قرن بيست و يكم مي شويم . نظريات گوناگوني درباره دورنماي اين قرن ابراز شده است . با وجود اين ، همگي به تحقق يافتن جامعه اطلاعاتي پيشرفته مي انديشند . تكنولوژي مختلف مربوط به كامپيوتر و ارتباطات (C&C) در سالهاي پاياني اين قرن تحقق خواهند يافت و نرم افزارهاي هوشمند و در بعد جهاني ساخته خواهند شد . سيستمهاي C&C در قرن أينده ، به صورت شبكه هاي ارتباطي اطلاعات حهاني ، و در زيربناي صنعت دگرگونيهايي به وجود خواهند آورد و شاخه هاي جديدي از صنعت پديد خواهند آمد كه در ساختار اجتماعي ، تحولات ژرفي ايجاد خواهند كرد . با چنين نگرشي ، احساس مي كنيم كه در حال گذراندن يك جابه جايي تاريخي در تمدن خود هستيم . نوآوري تكنولوژي ، از يك سو دگرگوني اقتصادي را پديد مي آورد و از سوي ديگر ، دگرگوني اجتماعي را موجب مي شود . در قرن بيست و يكم بجز سرمايه و منابع طبيعي، "اطلاعات"يكي از منابع مهم اقتصادي خواهد بود . اطلاعات ، در فعاليتهاي اقتصادي ، صنعتي ، تحقيق و توسعه ، مديريت شركتها و زندگي اجتماعي در قرن بيست و يكم ، تاثير بيشتري خواهد داشت .
بشر از همان آغاز مدنيت ، هميشه به ذخيره و بازيابي اطلاعات نياز داشته است . " داده ها " به عنوان مهمترين سرمايه محيطهاي عملياتي بزرگ ، تلقي مي شوند به همين دليل ، مسئله مهم استراتژيك انتخاب بانكهاي اطلاعاتي در محيطهاي عملياتي ، امري بسيار حياتي است . تلاشهاي انسان براي دستيابي به ابزارهاي دقيقتر ، سريعتر و كارآتر به طراحي و ساخت و توليد " كامپيوتر " منجر شد . انسان مجهز به اين ماشين ، براي ذخيره ، بازيابي ، پردازش و توليد اطلاعات و مجددا ذخيره و بازيابي آنها ، به سيستم واسط ذخيره و بازيابي اطلاعات نياز دارد .

 

شكل 1


در مديريت نوين سازمانها ، " داده " به عنوان يكي از سرمايه هاي اصلي و اساسي سازمان ، بلكه به اعتباري ، اهم آنها تلقي مي شود . در شرايط كنوني جهان ، سازماني موفق است كه براي " داده " اقلأ اهميتي هم ارز با بودجه قايل باشد و بتواند با استفاده از تكنولوژي كارآ و داده پردازي ، به اطلاعات كامل ، حامع ، دقيق و سريع الوصول دست يابد و از اين رهگذر ، بر حجم و كيفيت معرفت و دانايي مريريت تصميم گيرنده سازمان بيفزايد .
عيان است كه عصر حاضر ، عصر دانايي است و بهره برداري از تكنولوژي جديد و آينده نگر به مديريت دانا و پويا، تخصص كارآ . مهارت بالا نياز دارد تا فرا روند بسيار پيچيده توليد ، ذخيره سازي ، بازيابي و پردازش اطلاعات به روالي دقيق ، صحيح و سريع و كارآمد جريان داشته باشد . امروز به صورت مستمر مرتب ، شاهد عرضه سيستمهاي بانكهاي اطلاعاتي DBMS به بازار مصرف هستيم . عدم اطلاع كافي و فني از اين سيستمها،
اولأ فاقد ويژگيهاي اساسي و لازم يك سيستم متعارف و واقعي بانكهاي اطلاعاتي باشند ، و ثانيا با نيازهاي محيط عملياتي و با پاسخگويي جهت احتياجات اطلاعات محيط ، منطبق نباشد .تصميم گيري در مورد سيستم بانگهاي اطلاعاتي ، مسئله اساسي و استراتژيك سازمان است و اين تصميم گيري ، بايد با دانش كافي ، تخصص وافي و تحقيق و تفحص و مطالعه همه جانبه صورت پذيرد . ازاين رو ، بازشناخت ويژگيهاي چنين سيستمي بسيار ضروري و لازم است .

ويژگيهاي اساسي سيستم بانكهاي اطلاعاتي
در اينجا به چند ويژگي اساسي بانكهاي اطلاعاتي اشاره مي كنيم :
1- قابليت سيستم در تضمين جامعيت ( lntegrity ) پايگاه و مكانيسم اين كار ؛
2- قابليت سيستم در ترميم داده ها ( Recovery ) و مكانيسمهاي اين فعاليت ؛
3- قابليت سيستم در تامين رشد پايگاه ( Growth ) و درجه سهولت انجام اين كار ؛
4- قدرت سيستم در اشتراكي كردن داده ها ( Sharing ) و خصوصي كردن داده ها ؛
5- توان سيستم در پذيرش انواع كاربردها و پرس وجوهاي موازي ( Parillel Query ) ؛
6- توان سيستم در پذيرش انواع كاربردها ( Application) و پرس وجوها ؛
7- توان سيستم در ايجاد فرهنگ داده ها ( Data Dictionary ) و متا داده ها ( Meta data ) ؛
8- قدرت سيستم در جستجوي موازي ( Parallel Search ) ؛
9- زمان انجام بهينه سازي استراتژي دستيابي ؛
10- قابليت سيستم در سرويسدهي در محيط شبكه اي ؛
11- قدرت سيستم در سازماندهر مجدد محيط فيزيكي پايگاه و درجه پويايي و خودكار بودن اين فعاليت ؛
12- ميزان رعايت اصول جديد مهندسي نرم افزار در طراحي و توليد اين سيستم ؛
13- قابليت اجراي سيستم با حداقل سخت افزار .

شبكه هاي كامپيوتري
از اواسط دهه 80 ميلادي ، دو تحول مهم و اساسي درتكنولوژي ( ساخت و عرضه وسيع ريزپردازنده ها و اختراع و عرضه شبكه هاي محلي و جهاني WAN و LAN با سرعت بالا ) وضعيت جديدي را باعث شده است. هم اكنون استفاده از نتايج اين دو تحول ، به سادگي امكان در اختيار داشتن سيستمهايي را فراهم آورده است كه شامل تعداد بسيار زيادي پردازنده هستند كه تحت يك شبكه با سرعت انتقال خيلي بالا به هم وصل شده اند . سيستمهاي گسترده ( Distributed system ) در مصاف با سيستمهاي متمركز ( Centerelized system ) سنتي داراي فوايد بسياري هستند . تاكيد اصلي در حركت به سوي سيستمهاي غير متمركز ، به جهت جنبه هاي اقتصادي آن است . مزيت اين سيستمها ، افزايش نرخ كارآيي به قيمت ( Performance /Price ) نسبت به سيستمهاي متمركز است . مزيت ديگر اين سيستمها ، استفاده ار آنها در كاربردهاي ذاتا گسترده است ( مانند بانكداري ، تحقيق و توسعه ، رزرو اسيون بليط هواپيما و 000) . از مزاياي ديگر اين اين سيستمها ، قابليت اطمينان ( Reliability ) ، كارآيي ( Performance ) و انعطاف پذيري ( Flexbility) آنهاست . در انتخاب شبكه ، بايد مسائل زير به درستي مورد تجزيه ، تحليل و تحقيق قرار گيرند :
الف) نرم افزار مناسب شبكه
ب) مشكلات ناشي از شبكه ارتباطي
ج) حفاظت
در شكل 2 به صورت شماتيك يك شبكه كامپيوتري به همراه بانكهاي اطلاعاتي نمونه نشان داده شده است .

 

شكل 2



نتيجه گيري
از بحثهاي مطروحه در اين مقاله اين نتيجا اساسي به دست مي آيد كه ، در دانش اطلاع رساني تحولات بزرگي رخ داده است و بي ترديد استفاده از كامپيوتر ، به ويژه شبكه هاي كامپيوتري و بانكهاي اطلاعاتي ، تاثير زيادي بر اين دانش گذاشته است و در آينده هي نه چندان دور شبكه جهاني اطلاعات در دسترس همگان قرار خواهد گرفت . اگر امروز به فكر برنامه ريزي درست براي انتخاب بهينه در زمينه بانكهاي اطلاعاتي و شبكه هاي كامپيوتري نباشيم ، فردا نخواهيم توانست خود را حتي با شتاب زدگي ، از آن عقب ماندگي حيرت آور برهانيم . از سوي ديگر ، مد نظر گرفتي اين تئوري كه بالا رفتن سطح اطلاعات علمي و فني افراد جامعه ، از همه لحاظ داراي اهميت ويژه است ، مارا در انتخاب مهم و استراتژيك بانكهاي اطلاعاتي و شبكه هاي كامپيوتري مسئول مي دارد . اذا دانستن ويژگيها ، ضوابط و جنبه هاي سيستم متعارف ، ما را در انتخاب اصلح و درست براي توسعه و تحقيق كمك و ياري مي كند .


منابع و مآخذ
1 – سيد محمد تقي روحاني رانكوهي . سيسته و ساختار فايلها تهران : كانون انتشارات علمي ، 1369 .
2- مجموعه مقالات اولين كنفرانس آموزش ، پژوهش و كاربرد كامپيوتر در ايران ( بهمن 1371 )
3- ( ويژه نامه اطلاعات ) . دانشمند ، شماره 41 ، شهريور 1369 .
4- كوجي كوباياشي . ( انسان كامپيوتر و ارتباطات ) ، ريز پردازنده


5- Date C.G An introduction to database system 1990-5
6-Pc Magazine Vol . 10 . Sept . 1991.

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

بزرگ‌ترين بانك‌هاي اطلاعاتي جهان‌ دوشنبه سیزدهم آبان 1387 18:46
بزرگ‌ترين بانك‌هاي اطلاعاتي جهان‌

بهروز نوعي پور
ماهنامه شبکه - آبان ۱۳۸۵ شماره 70

اشاره :

حدس بزنيد بزرگ‌ترين بانك‌هاي اطلاعاتي (Database) جهان كدامند؟ ممكن است اين پرسش ذهن بعضي از برنامه‌نويسان را گاهي به خود مشغول كرده باشد. معمولاً برنامه‌نويسان دوست دارند بدانند كدام يك از نرم‌افزارهاي مديريت بانك اطلاعاتي قدرتمندتر است و كدام شركت‌ها و سازمان‌ها در جهان از همان نرم‌افزاري استفاده مي‌كنند كه آن‌ها روش كارش را مي‌دانند. براي يافتن پاسخ كافي است حضور ذهن داشته باشيد تا نام يكي دوتا از بزرگ‌ترين‌ها را به خاطر بياوريد. بله! آن‌ها گوگل و ياهو هستند. اين بانك‌هاي اطلاعاتي غول‌آسا يك نسخه از جديدترين صفحات وب اكثر سايت‌هاي اينترنتي جهان را در خود ثبت كرده‌اند. البته بحث درباره اين كه كدام يك از اين دو بانك بزرگ‌تر است، سال‌هاست جريان دارد و گويا پاياني هم براي آن متصور نيست.


مقامات مسئول هريك از دو سايت آمار متفاوتي درباره خود و ديگري ارائه مي‌دهند و البته طرفداران اين دو رقيب نيز نظرات متفاوتي دارند. با اين وجود، از شواهد چنين برمي‌آيد كه ديتابيس گوگل به مراتب بزرگ‌تر از ياهو است و اين را مي‌توان از تفاوت تعداد صفحات ثبت شده در موتور جست‌وجوي اين دو و نيز تعداد مراجعات از هر يك از آن‌ها به يك سايت مشخص حدس زد. چندي پيش كنجكاو شدم در اين مورد تحقيق كنم و تصادفاً به سايت جالبي برخورد كردم.

از سال 2001 به اين سو، يك شركت تحقيقاتي به نام وينتر (Winter) دست به ابتكار جالبي زده است. اين شركت تلاش مي‌كند هر دو سال يك‌بار فهرست بزرگ‌ترين بانك‌هاي اطلاعاتي جهان را براساس يك روش پژوهشي معين تهيه و منتشر كند. تحقيق وينتر فقط آن دسته از شركت‌هايي را شامل مي‌شود كه حجم ديتابيس مورد استفاده آن‌ها حداقل يك ترابايت (هزار گيگابايت) باشد.

با اين حال، چون هدف اين شركت از تهيه فهرست رده‌بندي مذكور، مقايسه قدرت و كارايي نرم‌افزارهاي تجاري مديريت بانك‌هاي اطلاعاتي است، متأسفانه نام گوگل در اين رده‌بندي ديده نمي‌شود؛ زيرا گوگل از يك سيستم فايلي ويژه استفاده مي‌كند و به هيچ نرم‌افزار تجاري خاص براي ايجاد بانك اطلاعاتي خود متكي نيست. بنابراين مي‌توان حدس زد كه اولين نام در فهرست ده ديتابيس بزرگ جهان در اين فهرست، همان ياهو است.

ياهو در صدر
طبق گزارش شركت وينتر در سال 2005، بانك‌اطلاعاتي ياهو بيش از صد ترابايت ( صدهزار گيگابايت) حجم دارد. جالب است بدانيد اين ديتابيس عظيم‌ روي نرم‌افزار مشهور اوراكل و سيستم‌عامل قدرتمند يونيكس بنا شده است. ياهو نرم‌افزار اوراكل را مستقيماً از شركت اوراكل خريداري كرده است، اما سرورهاي ياهو از نوع PrimePower و ساخت شركت فوجيتسو زيمنس است و سيستم ذخيره‌سازي اطلاعات اين بانك اطلاعاتي غول‌آسا را شركتEMC  به ياهو فروخته است.

مطالعه جديدترين فهرست از ده ديتابيس بزرگ جهان (فهرست 2005) حتماً براي بسياري از خوانندگان ماهنامه شبكه جالب خواهد بود. لينك فايل PDF گزارش كامل وينتر را از بخش دانلود سايت ماهنامه پيدا كنيد. در اينجا مايلم برخي از نتايج جالب اين گزارش را به اختصار برايتان بازگو كنم.

حتماً براي همه شما جالب است بدانيد رتبه دوم در اين فهرست متعلق به كيست. يك موتور جست‌وجوي ديگر؟ خير! از اينجا به بعد داستان تغيير مي‌كند و بازيگران ديگري وارد صحنه مي‌شوند. رتبه دوم بزرگ‌ترين ديتابيس جهان در فهرست وينتر متعلق به شركت AT&T است كه قديمي‌ترين شركت مخابراتي جهان و يكي از Backboneها يا ستون فقرات اينترنت است.

نرم‌افزار ديتابيسAT&T كه Daytona نام دارد را همين شركت نوشته‌است، اما بر خلاف گوگل كه از سيستم فايلي خاصي استفاده مي‌كند، Daytona روي يونيكس اجرا مي‌شود و به همين دليل وينتر توانسته است نام آن را در فهرست رده‌بندي خود بياورد و حجم آن را با ديگر بانك‌هاي اطلاعاتي بزرگ دنيا مقايسه كند.

مطابق فهرست 2005، ديتابيس اين شركت با كمي فاصله نسبت به ياهو، 93 ترابايت اطلاعات را در خود ذخيره كرده است. سرورهاي AT&T و سيستم ذخيره‌سازي آن را HP ساخته است. مقام چهارم اين جدول دوباره متعلق به همين شركت است؛ با اين تفاوت كه ديتابيس رتبه چهارم كه بيش از 26 ترابايت حجم دارد، روي سرورهاي ساخت سان مايكروسيستمز قرارگرفته‌اند.

اما مقام سوم كيست؟ اين يكي واقعاً غير منتظره است. پايگاه‌داده‌هاي شركت بزرگ مخابراتي كره‌جنوبي با نام KT با بيش از 49 ترابايت اطلاعات (لابد اطلاعات مشتركان و مشتريان و ساير اطلاعات مرتبط) اين مقام را از آن خود كرده است. ديتابيس KT از نوع DB2 و محصولي از شركت IBM است. سرورهاي اين بانك اطلاعاتي را نيز آي‌بي‌ام بهKT فروخته است، اما سيستم ذخيره‌سازي آن ساخت شركت هيتاچي است. اين پايگاه اطلاعاتي نيز روي يونيكس بنا شده است.

فناوران برتر
شركت مخابراتي Cingular Wireless، بزرگ‌ترين اپراتور بي‌سيم ايالا‌ت‌متحده كه 58 ميليون مشترك خطوط موبايل در اين كشور را تحت پوشش خود دارد، در رتبه پنجم قرار دارد و از نرم‌افزار اوراكل، سيستم‌عامل يونيكس و سرورهاي HP استفاده مي‌كند. رتبه‌هاي ششم و نهم اين جدول دوباره متعلق به يك شركت دات كام ديگر است. حدس بزنيد!

بزرگ‌ترين و موفق‌ترين سايت تجارت الكترونيكي جهان كدام است؟ بله درست حدس زديد؛ آمازون! اين سايت بزرگ از دو ديتابيس با ظرفيت‌هاي 24 و 18 ترابايت استفاده مي‌كند؛ هر دو از نوع اوراكل و روي سيستم‌عامل لينوكس. سرورها و سيستم ذخيره‌سازي دو بانك‌اطلاعاتي نيز ساخت HP است. در فهرست وينتر رتبه هفتم به نام يك شركت ناشناس ثبت شده كه احتمالاً ناشناس نيست بلكه يك سازمان نظامي يا امنيتي متعلق به ايالا‌ت متحده است كه نخواسته نامش فاش شود. اين ديتابيس از نوع DB2 و ساخت آي‌بي‌ام است و روي سرورهاي ساخت همين شركت بنا شده كه حدس نظامي بودن سازمان را تقويت مي‌كند.

در فهرست ده تاي نخست جهان، مكان هشتم متعلق به شركتي است كه از ديتابيس SQL Server ساخت مايكروسافت استفاده مي‌كند. اين ديتابيس نوزده ترابايتي كه روي سيستم‌عامل ويندوز برپا شده، متعلق به شركت Unisys Payment Services&Solutions) UPSS) است كه شاخه‌اي از شركت بزرگ Unisys است. اين شركت كه در هلند مستقر است، به تعدادي از بانك‌هاي اروپا خدمات بانكداري الكترونيكي ارائه مي‌دهد.

آخرين رتبه نيز متعلق به شركت تحقيقاتي Nielsen Media Research است كه گزارش‌هاي پژوهشيش درباره وضعيت فناوري اطلاعات در زمينه‌هاي مختلف را بارها در همين مجله و ديگر رسانه‌ها و سايت‌هاي ايراني مرتبط با فناوري اطلاعات خوانده‌ايد. نيلسن از Sybase روي يونيكس استفاده مي‌كند و سرورهاي آن ساخت سان‌مايكروسيستمز  هستند.

گزارش كامل وينتر آمار جالب ديگري هم دارد. مثلاً مي‌توانيد تحقيق كنيد كه فهرست ده بانك اطلاعاتي بزرگي كه از‌SQL Server مايكروسافت استفاده مي‌كنند، شامل اسامي چه شركت‌هايي است. آمار مشابهي را به تفكيك ديگر نرم‌افزارهاي بانك اطلاعاتي مانند اوراكل مي‌توانيد در اين گزارش ببينيد.

ديگر نتايج جالب اين تحقيق به شرح زير است:
 بزرگ‌ترين Processing System On line Transactional) OLTP) دنيا، يك بانك‌اطلاعاتي سازمان املاك انگلستان و ولز است كه در حقيقت در ميان تمام سازمان‌هاي ثبت اسناد و املاك دنيا پيشرفته‌ترين است و 23 ترابايت حجم دارد. ديگري متعلق به شركت مالي UPS است كه 29 ترابايت است. هر دو بانك اطلاعاتي روي DB2 بنا شده‌اند و از سرورهاي مدل IBM eServerz990 استفاده مي‌كنند.

 سازمان ثبت اختراعات ايالا‌ت متحده (اوراكل)، شركت مخابراتي SQL Server) Verizon)، اداره گمرك ايالا‌ت‌متحده
(CADatacom)، شركت تركسل (اوراكل)، مايكروسافت (SQL Server)، دل (اوراكل)، هيولت پكارد (اوركل)، TSystems وابسته به دوچ تله كوم آلمان (اوراكل) و شركت‌هاي مخابراتي Sage Telecom ايالا‌ت‌متحده (SQL Server) و Bharti  هند (اوراكل) از ديگر رتبه‌داران اين فهرست هستند.

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

نصب و پیکربندی IIS در کامپیوتر شخصی یکشنبه دوازدهم آبان 1387 22:49
  • نکته ای که قبل از هر چیز باید بهش اشاره کنم اینه که IIS باید قبل از Visual Studio.NET نصب بشه وگرنه مشکلاتی رو برای شما به همراه خواهد داشت.
  • دومین نکته اینه که به هنگام نصب باید سی دی همان ویندوزی که روی کامپیوتر شما در حال حاضر نصب هست رو درون درایو قرار داده باشید.

 چگونگی نصب IIS و اجرای ASP روی ويندوز 2000
۱- از دگمه Start به Settings و بعد به Control Panel برويد.
۲- در پنجره Control Panel ، Add/Remove Programs را انتخاب كنيد.
۳-در پنجره Add/Remove Programs گزينه Add/Remove Windows Components را انتخاب كنيد.
۴- در پنجره Wizard ، Internet Information Services را انتخاب كرده و روی OK كليك كنيد.
۵- يك فلدر به اسم Inetpub در هارد درايو شما ايجاد خواهد شد.
۶- Inetpub را باز كنيد و فلدر wwwroot را پيدا كنيد.
۷- يك فلدر جديد مثلMyWeb در wwwroot ايجاد كنيد.
۸- - فايل ASP خود را مانند test.asp در MyWeb كپی كنيد.
۹- مطمئن بشويد كه وب سرور شما در حال اجرا است.(البته به صورت معمول خود در اين حالت قرار دارد)
۱۰- جستجوگر خود را باز كرده و آدرس http://localhost/test.asp را وارد كنيد تا اولين صفحه ASP خود را ببينيد.

 چگونگی نصب IIS و اجرای ASP روی ویندوز XP Professional 
توجه: شما نمی توانيد ASP را روی نگارش خانگی XP اجرا كنيد.
۱- از دگمه Start به Settings و بعد به Control Panel برويد.
۲- در پنجره Control Panel ، Add/Remove Programs را انتخاب كنيد.
۳-در پنجره Add/Remove Programs گزينه Add/Remove Windows Components را انتخاب كنيد.
۴- در پنجره Wizard ، Internet Information Services را انتخاب كرده و روی OK كليك كنيد.
۵- يك فلدر به اسم Inetpub در هارد درايو شما ايجاد خواهد شد.
۶- Inetpub را باز كنيد و فلدر wwwroot را پيدا كنيد.
۷- يك فلدر جديد مثلMyWeb در wwwroot ايجاد كنيد.
۸- فايل ASP خود را مانند test1.asp در MyWeb كپی كنيد.
۹- مطمئن بشويد كه وب سرور شما در حال اجرا است.(البته به صورت معمول خود در اين حالت قرار دارد)
۱۰- جستجوگر خود را باز كرده و آدرس http://localhost/test.asp را وارد كنيد تا اولين صفحه ASP خود را ببينيد.

 واژه جدید: آدرس فیزیکی ریشه، تعیین کننده آدرس فیزیکی شروع دایرکتوری می باشد. برای مثال اگر شما آدرس فیزیکی ریشه را به صورت X:\inetpub\wwwroot تعیین کرده باشید، آدرسهای مجازی(URL مرورگر) به صورت زیر می باشد:

 http://localhost/index.asp

 http://localhost/default.asp

 آدرسهای فیزیکی(دایرکتوری دیسک سخت) به صورت زیر ترجمه می گردد:

 X:\inetpub\wwwRoot\index.asp

 X:\inetpub\wwwRoot\default.asp

 برای اجرای اسکریپتهای ASP باید فایل مورد نظر را در شاخه X:\inetpub\wwwRoot\FileName.ASP قرار بدهید و سپس در مرورگرتان آدرس http://localhost/FileName.asp را وارد نمایید که به سایت وب کامپیوترتان  دسترسی پیدا نمایید.

 نکته: ASP 3.0  ، IIS 4.0 را پشتیبانی نمی کند. اگر از ویندوز NT استفاده می کنید، شما IIS 4.0 را خواهید داشت. اگر IIS 4.0 را نصب کرده اید، ASP 2.0 به صورت خود کار اجرا خواهید نمود. نصب کردن IIS 4.0 به سادگی نصب کردن IIS 5.0 می باشد. هر دو دارای یک ویزارد ساده می باشند که به شما در طی مراحل نصب کمک می نمایند.

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

یادگیری Asp.Net را چگونه و از کجا شروع کنیم؟ یکشنبه دوازدهم آبان 1387 22:48

روش های شروع یادگیری

1- بنده در این سایت دسته بندی از بخش های مختلف رو قرار دادم و هر روز یک مقاله در هر زمینه ارسال خواهم کرد افرادی که این مقالات رو به همراه یک کتاب مرجع  که پیشنهاد بنده برای شروع به کار کتاب Asp.Net مهندس جعفر نژاد قمی است ( البته این کتاب نقاط ضعف بسیار زیادی داره ولی برای تازه کار ها به عنوان کتاب کمکی بد نیست ) دنبال کنند مطمئنآ به سرعت پیشرفت خواهند نمود .
2- در  کنار مقالاتی که بنده اینجا قرار میدم یک سری کتاب و E-Book به صورت PDF قرار خواهم داد که امیدوارم بتونه کمکتون کنه.
3- قصد دارم یک سری آموزش تصویری به زبان اصلی که یکی از ابزار واقعی پیشرفت خودم بوده رو در این سایت قرار بدم البته ممکنه دانلودشون کمی طول بکشه ولی مطمئن باشید به نحو باور نکردنی به شما کمک خواهد کرد.
4- استفاده از تالار های گفتگو سوال و جواب و FAQ های متنوع میتونه بهترین استاد خصوصی شما باشه ; خیلی وقتهای اتفاق می افته که شما مبحثی رو مطالعه کردید پروژه ای رو انجام داده اید ولی با خطا مواجه شدید یا اینکه توانایی ادامه پروژه رو ندارید وبا مشکل مواجه هستید ، در این موارد سایت های تالارگفتگو میتونن بسیار مفید واقع شوند .
قصد دارم بخش تالار گفتگوی این سایت رو بزودی راه اندازی کنم در ضمن سایت هایی رو که در زیر معرفی میکنم بسیار مفید هستند :
نکته - در آخر باید این نکته رو ذکر کنم که هر چقدر هم که امکانات و ابزار لازم و حتی کلاس های آموزشی یا استاد خصوصی در کنار شما باشه اگه تلاش و کوشش خودتون نباشه مطمئنآ موثر نخواهد بود .
  • پیش نیاز های یادگیری :

1- Html : شما باید کمی تا حدودی به این زبان ساده تسلط داشته باشید تا بتونید از پس طراحی و برنامه نویسی وب بوسیله Asp.net  بر بیاید . برای شروع میتونید مقالات بنده رو در بخش Html ملاحظه کنید.
در ضمن آشنایی با زبان جاوا اسکریپت در این راه خیلی مفید خواهد بود.

2- Language : شما باید یکی از سه زبان Delphi.Net, J# , c#, Vb.Net رو برای برنامه نویسی Asp.net انتخاب کنید .
می دونم در ابتدا در انتخاب این سه مردد خواهید شد سعی میکنم شما رو در انتخاب زبان مورد نظرتون راهنمایی کنم :
- اگر تا به حال با خانواده C برنامه نوشته باشید و به اون آشنایی دارید بهتره که گزینه #c رو انتخاب کنید چون ازخانواده بزرگ C هست .
- اگر با QBasic یا خانواده Basic یا visual basic کار کرده اید و با اون آشنایی دارید یادگیری Vb.Net برایتان سخت نخواهد بود .
- کسانی که با زبان دلفی کار کرده اند میتونن نسخه دات نت اونو تهیه کنند و با اون کار کنند .
- برای کسانی که تا به حال برنامه نویسی نکرده اند به علت ساده بودن و کارایی Vb.Net رو پیشنهاد میکنم .
- مسملا کسانی که به یکی از زبان های برنامه نویسی آشنایی دارند یادگیری برایشان خیلی راحت تر خواهد بود .

4 - Database :شما باید کار حد اقل یکی از دیتابیس ها رو مانند Microsoft Access , Microsoft SQL Server , Oracle ,... رو در حد متوسط بیاموزید تا بتونید اعمال بانک های اطلاعاتی و Ado.Net رو بخوبی فرا بگیرید.
مقالاتی در این زمینه در بخش بانک های اطلاعاتی قرار خواهم داد.

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

Client-Side: اسکریپت Client-Side هرگز توسط سرویس دهنده وب پردازش نمیشه، بلکه تنها توسط سرویس گیرنده (مرورگر  یا explorer خود شما ) پردازش می شن.
این به این معنیه که وقتی شما یک صفحه client side مانند صفحات html یا صفحاتی که در آن از جاوا اسکریپت استفاده شده  رو در مرورگر درخواست می کنید سرور برای شما هیچ عملی انجام نمیده و این مرور گر شماست که کد ها رو خط به خط خونده و به شما نمایش میده .

 Server-Side: اسکریپتهای Server-Side تماما بر روی سرویس دهنده وب پردازش می شن. سرویس گیرنده(مرورگر شما) هیچ کدی را از اسکریپتهای Server-Side دریافت نمی کنه و نمی شناسه، بلکه تنها خروجی اسکریپتهای Server-Side را می گیره.

ببینید دوستان شاید مفهومش یکم گیج کننده باشه بهتره اینجوری بگم که وقتی شما یه صفحه به زبان های server-side می نویسید این صفحه وب تنها شامل کد های html نیست بلکه شامل کد های برنامه نویسی به زبانی دیگر هست( مانند php ,vb script , asp, asp.net ) که مرور گر شما قادر نیست اونارو درک کنه مثلا وقتی دارید asp.net  کار  می کنید و زبان برنامه نویسیتونو vb.net انتخاب کردید ( در این مورد مقاله نوشتم ) کد های vb.net شما برای مرورگرتون قابل درک نیست پس یک کامپایلر یا مترجم نیاز هست که اونارو برای مرورگر شما قابل درک کنه در نهایت این کامپایلر کد های نوشته شده به زبان vb.net شما رو به همان کد های html که برای مرور گر قابل فهم هست تبدیل میکنه تا بتونید صفحه وب رو مشاهده کنید.

شما باید بدونید که با مرورگرتون نمیتونید کد های دیگران server side نوشته شده دیگران رو ببینید  امتحانش مجانیه می تونید صفحه server side رو که باز شده save کنید و ببینید که یک مشت کد html تحویل شما خواهد شد چرا این اتفاق می افته؟

همونطور که گفتم مرور گر ها قابل به فهم کد های طرف سرور ( server side ) نیستند بنابراین سرویس دهنده iis (که روی هاستی که سایت مورد نظرتون روش قرار داره )صفحه مورد نظر  رو خونده و به زبان html ترجمه میکنه بعد اونو به مرورگر شما میفرسته  پس میتونیم نتیجه گیری کنیم که iis واسط بین مرور گر شما و کد های طرف سروره .

اسکریپتهای Server-Side و Client-Side هیچ فعل و انفعالی بر روی یکدیگر ندارند، زیرا اسکریپتهای Client-Side بعد از اینکه اسکریپتهای Server-Side پردازش خود را به طور کامل انجام دادند، بر روی سرویس گیرنده اجرا می شوند.

امید وارم خیلی گیج نشده باشید .

نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |

Stored Procedure چیست ؟ یکشنبه دوازدهم آبان 1387 22:43
Stored Procedure یا Sp یا به زبان فارسی " رویه های ذخیره شده "  اشیایی اجرا پذیر در بانک اطلاعاتی   SQL Server هستند که شامل یک یا چندین دستور SQL می شود ، این رویه ها میتوانند پارامتر های ورودی و خروجی داشته باشند .
همچنین میتوان داخل این رویه ها به زبان SQL برنامه نویسی کرد .
مهم ترین کاربر این رویه ها ذخیره کردن دستورات Select , Insert , Update , Delete هست یا ترکیبی از اینها .
نحوه ساخت این رویه ها به صورت زیر می باشد :
    • وارد بانک اطلاعاتی SQL Server شده ، پس از باز کردن بانک مورد نظر در قسمت Programmability وارد بخش Stored Procedure شوید .
    • بر روی Stored Procedure  کلیک راست کرده و New Stored Procedure را انتخاب نمایید .
    • احتمالا کد های پیشفرضی را در این صفحه مشاهده می کنید ، همه این کد هارا پا کرده و به صورت زیر کد نویسی کنید :

       

      Create Procedure YourProcedureName(@FirstParamete DataType,@SecondParameter DataType,...)

       

      As

      Begin

       

      SQLStatement

       

      End

       

      کد فوق شکل کلی ساخت رویه های ذخیره شده می باشد .

      به جای YourProcedureName یک نام برای برای رویه انتخاب کنید . سعی کنید نامی که انتخاب می نمایید مفهوم رویه شما را برساند مثلا برای درج یک رکورد جدید در جدول Members من نام AddNewMember را انتخاب می کنم و یا برای دریافت تمام رکورد های این جدول نام GetAllMembers نام با مفهومی است .

      در پرانتز مقابل نام رویه پارامتر های رویه به همراه نوع پارامتر تعیین میشود ، اگر تعداد پارامتر ها بیشتر از یکی بود با ویرگول آنها را جدا می کنیم .

      به جای SQLStatement  دستورات  SQl  را که بین Begin   و End  نوشته می شوند تایپ کنید .

      دستوراتی مانند Select , Insert , Update , Delete   و....

      به عنوان مثال Sp زیر اطلاعات کاربر را با دریافت پارامتر نام کاربری (@ID)  از جدول TBL_Members دریافت می کند :

       

      create procedure GetMemberbyID(@ID nvarchar(100))

      as

      begin

       

      select * from TBL_Members where ID=@ID

       

      end

       

       

      سپس بر روی دکمه Execute کلیک کرده تا رویه شما ساخته و ذخیره گردد .

       

      برخی از قابلیت های رویه های ذخیره شده یا Stored Procedure  عبارت است از :

       

        1. Precompiled بودن آنها به این معنی که به زبان ماشین بسیار نزدیک شده و به طور کامل از اول ترجمه نمیشود ، این امر باعث افزایش سرعت بارگزاری می گردد .
        2. قابلیت ذخیره داشته و میتوان از یک رویه چندین بار در کد نویسی استفاده کرد .
        3. دارای ویرایشگر Query می باشد (میتوانید به سادگی یک Query حرفه ای ایجاد کنید)
        4. دارای Syntax Parser هست و از خطاهای SQL جلوگیری می کند .
        5. دارای امنیت بالایی است و از هک شدن سایت شما توسط SQL Injection در بسیاری موارد جلوگیری می کند .
        6. قابلیت درج چندین دستور SQL را پشت سرهم داراست .
        7. قابلیت ارسال ورودی و خروجی دارد .
        8. قابلیت برنامه نویسی ( شرط ، حلقه و...) به زبان TransactSQL دارد .

          و.....

           

           

           

          حال که با قابلیت ها ونحوه ساخت Stored Procedure آشنا شدید بد نیست که به نحوه استفاده از این ابزار جالب در Asp.NET بپردازیم .

          استفاده از این ابزار بسیار ساده هست .  اگر از SQL Datasource  یا ObjectDatasource استفاده می کنید یک ویزارد برای ساخت و استفاده از Stored Procedure ها قرار داده شده که به راحتی آن را مدیریت کنید .

          اگر از کد نویسی برای کار با بانک های اطلاعاتی استفاده می کنید کافیه بعد از تعریف SQLCommand به جای دستورات SQL نام SP را وارد نموده و بعد از آن کد زیر را اضافه نمایید :

           

          Cmd.CommandType = CommandType.StoredProcedure;

           

           

          این کد به برنامه می گوید که دستورات نوشته شده از نوع Stored Procedure هستند و نیازی به ترجمه آن ها نیست .

          در نهایت کد های اتصال ما به شکل زیر خواهد بود :

           

           

          SqlConnection Con=new SqlConnection("YourConnectionString");

          SqlCommand Cmd = new SqlCommand("YourProcedureName", Con);

           

          Cmd.CommandType = CommandType.StoredProcedure;

           

          Con.Open();

           

          // Some Code...

           

          Con.Close();

           

           امیدوارم این مقاله برای شما مفید باشد .

           بلند شده از آدرس:

           http://www.how2learnasp.net/article.aspx?code=26b376f2-9a53-4bd6-b79e-4dc2366e3f4e

          نوشته شده توسط برنامه نویس ASP.NET  | لینک ثابت |