PDA

توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مقايسه فني مهم‌ترين بانك‌هاي اطلاعاتي جهان؛ Oracle و SQL Server



Borna66
05-16-2011, 11:21 PM
شركت مايكروسافت مدعي است كه ابزارهاي جديدي براي مديران بانك‌هاي اطلاعاتي يا همان DBAها در نسخه جديد SQL Server 2005 قرار داده است كه بسيار خوب توانسته است مشكلات نسخه قبلي آن را مرتفع نمايد، اما جالب اينجا است كه همه امكاناتي كه SQL Server 2005 به تازگي براي DBAها فراهم كرده است، از نسخه Oracle 8i در نرم‌افزار اوراكل موجود بوده است.
درباره نصب اين دو نرم‌افزار بايد گفت كه نصب اوراكل از SQL Server هنوز بسيار مشكل‌تر است و كار كردن با آن سخت‌تر؛ و شايد اين دلايل باعث مي‌گردد برخي از برنامه‌نويسان به سمت SQL Server بروند. DBA شدن در بانك‌اطلاعاتي SQL Server كار سختي نيست. كافي است مدتي با آن نرم‌افزار كار كرده باشيد، و چند ماهي تجربه داشته باشيد. ولي DBA شدن حرفه‌اي در اوراكل كار بسيار دشواري است.

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

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

Borna66
05-16-2011, 11:21 PM
مقدمه
بدون‌شك مي‌توان گفت كه بانك‌هاي اطلاعاتي اوراكل و SQL Server، از مهم‌ترين بانك‌هاي اطلاعاتي امروز به شمار ميآيند. اين سؤال كه كدام يك از اين دو از ديگري بهتر است، ممكن است فكر بسياري از برنامه‌نويسان و شركت‌هاي توليد كننده نرم‌افزار را مشغول كرده باشد.

از طرفي مايكروسافت، به عنوان غول نرم‌افزاري ادعا مي‌كند كه SQL Server از اوراكل‌ ساده‌تر و بهتر است. اوراكل هم از سوي ديگر مي‌گويد محصول او از خيلي جهات بر SQL Server برتري دارد.

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

در اين مقاله امكانات مرتبط با كارايي پايگاه‌هاي اطلاعاتي‌ (Performance)، ابزار (Utility) و Replication در بانك‌هاي اطلاعاتي بسيار بزرگ يا همان VLDB يا Very Large Data Bases و OLTP يا Online Transaction Processing مورد بررسي قرار خواهند گرفت و ابزارهاي جديد SQL Server 2005 كه در حقيقت سعي دارد با اوراكل رقابت كند، مورد بررسي قرار خواهند گرفت‌.‌

Borna66
05-16-2011, 11:22 PM
معماري بانك اطلاعاتي

در اوراكل هر ديتابيس شامل تمامي امكانات پايگاه رابطه Relational Database ،Instance (پروسه‌هاي پايگاه داده‌هاي اوراكل و بافرها، فايل‌هاي تنظيمي مانند config.ora و init.ora، لوگ‌هاي بازگشت به حالت قبلي يا Redo Logs؛ SYSTEM Teblespace و ديگر انتخاب‌هاي دلخواه است.

در نسخه جديد SQLServer، ديتابيس در واقع به گروهي از اسكيما (Schema)هاي پايگاه داده گفته مي‌شود كه به صورت فيزيكي در فايل‌ها ذخيره مي‌شوند. ديتابيس‌ها به دو صورت تعريف شده از طرف كاربر (user defined) و تعريف شده از طرف سيستم (system defined) تقسيم مي‌شوند.

در SQL Server يك نمونه يا Instance مي‌تواند چندين ديتابيس را پشتيباني نمايد و در هر كامپيوتر چندين Instance مي‌تواند با هم كار كند.

وقتي SQL Server را راه‌اندازي مي‌كنيد، ديتابيس‌هايي همچون MD يا Msdb database، Model Database (براي پشتيباني كردن Agentها) و Tempdb Database (پايگاه اطلاعات موقت مانند پايگاه موقت اوراكل OracleTemp Tablespace؛ البته با اين تفاوت كه در SQL Server خود كاربران مي‌توانند اين پايگاه‌ها را درست كنند، ولي در اوراكل اين امكان وجود ندارد)، به صورت پيش‌فرض ساخته مي‌شوند.

در SQL Server براي اين‌كه بتوانيم اطلاعات خود را به صورت فيزيكي غيرمتمركز (Distribute) نگه‌داريم، هر ديتابيس مي‌تواند از چندين Filegroup پشتيباني نمايد. با اين كار مي‌توان به راحتي از اطلاعات كپي پشتيبان گرفت. همان‌طور كه در شكل 1 مشاهده مي‌كنيد، در SQL Server، ديتابيس‌ها در واقع همان كار tabalespaceها در اوراكل را دارند.


http://pnu-club.com/imported/2011/05/509.jpg (http://shabakeh-mag.com/img.aspx?l=/data/gallery/s73_sql01.jpg)
شکل 1
اگر به شكل 1 نگاه كنيد، مي‌بينيد كه در هر دو بانك‌ اطلاعاتي، كاتالوگ سيستم وجود دارد. هر پايگاه اطلاعاتي يا ديتابيس در اوراكل يك سيستم كاتالوگ مركزي يا ديكشنري داده ‌‌(Data Dictionary) را در قسمت SYSTEM Tablespace اجرا مي‌كند، ولي در SQL Server 2005 هر ديتابيس سيستم كاتالوگ خود را درست مي‌كند.

اين سيستم كاتالوگ اطلاعاتي همچون اشياي پايگاه داده (مانندTable ،View و Procedure)، اطلاعات كاربران و دسترسي‌هاي آن‌ها، Constraintsها، User-Defined data type و Snapshot definition را شامل مي‌شود.

البته اطلاعاتي همچون اسامي ديتابيس‌ها، اطلاعات سرور، مديريت پيغام‌ها و Stored Proceduresهاي سيستم درMaster Database وجود دارند.

نكته اينجاست كه SQL Server 2005 ،objectهاي سيستم در اين Master Database قرار نمي‌گيرند. اين آبجكت‌ها در ديتابيس‌هاي مخفي سيستم به نام resource database يا پايگاه اطلاعات منابع سيستم ذخيره مي‌گردند.

در واقع‌ سيستم كاتالوگ‌ها در SQL Server 2005 منابعي هستند براي استخراج اطلاعات ديتابيس‌ها و اين كاتالوگ‌ها را كاربران نيز مي‌توانند مشاهده كنند.

براي حصول اطمينان از كارايي و سلامت سرور در DMV، SQL Server 2005 يا Dynamic Management Views استفاده مي‌شوند؛ درست شبيه اوراكل كه از viewهاي $ V براي كنترل كارايي استفاده مي كند.

Borna66
05-16-2011, 11:22 PM
اجزاي تنظيم كننده شبكه


http://pnu-club.com/imported/2011/05/510.jpg (http://shabakeh-mag.com/img.aspx?l=/data/gallery/s73_sql02.jpg)
شکل 2
شكل 2 ساختار اجزاي تنظيم كننده شبكه در اين بانك‌هاي اطلاعاتي را نشان مي‌دهد. در اوراكل كامپوننتي به نام Oracle Net Service وجود دارد كه عامل ارتباطي سرور اوراكل با كلاينت‌هاي آن است.

اوراكل اين كار را با استفاده از پروتوكل TNS يا Transparent Network Substare انجام مي‌دهد، اما در SQL Server اين كار توسط پروتكل‌هاي شبكه موجود در كلاينت و سرور انجام مي‌گيرد.

البته در SQL Server 2005 فناوري جديدي به نام SNAC يا SQL Server Native Client، معرفي گرديده كه در واقع تركيبي است از ODBC و OLEDB در يك تابع كتابخانه‌اي. SNAC توانايي پشتيباني TDS يا Tabular Data Stream و Net Lib را براي پروتكل‌هاي گوناگون در SQL Server دارد.

Borna66
05-16-2011, 11:22 PM
ساختار فيزيكي و منظقي ذخيره اطلاعات

شكل 3 نگاهي مقايسه‌اي دارد به دو بانك اطلاعاتي اوراكل و SQL Server از لحاظ ساختار اطلاعاتي. همان طور كه در اين شكل مي‌بينيد، در SQL Server اندازه صفحات (8kb، (page size است كه واحد پايه ورودي/ خروجي به شمار مي‌رود.

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


http://pnu-club.com/imported/2011/05/511.jpg (http://shabakeh-mag.com/img.aspx?l=/data/gallery/s73_sql03.jpg)

شکل 3
هر Extent كه تمام صفحاتش آبجكت‌هاي مانند هم داشته باشد Uniform ناميده مي‌شود و به Extentهايي كه آبجكت‌هاي يكساني ندارند، Mixed مي‌گويند.

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

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

برخلاف SQL Server، بانك اطلاعات اوراكل از Tablespaceهايي تشكيل شده است كه خود از Data File تشكيل شده‌اند. اين Data Fileها در واحدهايي به نام Block طبقه‌بندي مي‌شوند كه مدير بانك اطلاعاتي (DBA) مي‌تواند اندازه آن را وقتي كه در حال ساخت ديتابيس است تعيين كند. برخلاف SQL Server، در اوراكل وقتي يك شيء در Tablespace توليد مي‌شود، كاربر مي‌تواند فضاي آن را مشخص كند.

Borna66
05-16-2011, 11:23 PM
مقايسه SQL Server 2005 و Oracle 10g

اگر چه SQL Server 2000 يكي از قوي‌ترين بانك‌هاي اطلاعاتي است و خيلي از شركت‌ها و سازمان‌هاي بزرگ امروزه از آن به عنوان پايگاه داده‌هاي خود استفاده مي‌كنند، چند محدوديت هم دارد. يكي از محدوديت‌هاي SQL Server 2000 در طريقه قفل كردن يا Locking Strategy است.

در MS SQL 2000 مانند اوراكل مي‌توان دسترسي همزمان به پايگاه را محدود كرد و آن را به اصطلاح قفل نمود. ولي در MS SQL 2000 امكان Deadlock خيلي زياد است؛ مخصوصاً در CTF يا Correct Transactional Flows.

از طرف ديگر، اعمال تغيير در بانك‌هاي اطلاعاتي به صورت آنلاين يكي ديگر از محدوديت‌هاي آن است. البته با استفاده از DBCC INDEXDEFRAG در SQL Server 2000 مي‌توان قسمتي از ايندكس‌ها را به صورت آنلاين تغيير داد، ولي نه به صورت كامل.

(البته اين مشكل در SQL Server 2005 تا حدي حل شده است). در اوراكل از نسخه 1/8 تا به حال، امكان تغيير و جابه‌جايي جداول و ايندكس‌ها وجود دارد؛ بدون اين‌كه به exclusive lock نياز داشته باشيم. البته ناگفته نماند كه نسخه‌هاي 2/9 اوراكل در اين قسمت داراي اشكالات و باگ‌هايي نيز بوده‌اند، ولي اين اشكالات در نسخه آخر اواركل برطرف شده است.

در ادامه، ساختار و امكانات هر دو بانك‌اطلاعاتي Oracle 10g و SQL Server 2005 با يكديگر مقايسه مي‌گردند.

Borna66
05-16-2011, 11:24 PM
سيستم LOCKING

يكي از قابليت‌هايي كه در نسخه جديد SQL Server به آن اضافه شده است، قابليت SI يا Snapshot Isolation است كه در حقيقت قابليت نسخه‌برداري از رديف (row)هاي جداول است. با اين كار در موقع بروزآوري جداول، امكان انتخاب همزمان اطلاعات آن جدول نيز وجود دارد.

در اوراكل چيزي شبيه اين مكانيزم وجود دارد كه به آن Oracle Flashback Query مي‌گويند. البته بين اين دو مكانيزم تفاوت‌هايي نيز وجود دارد: اوراكل از Undo Segment براي برگشت به ركورد قبلي استفاده مي‌كند. در صورتي كه SQL Server 2005 از TempDB استفاده مي‌كند.

MetaData در اوراكل مانند جداول مديريت مي‌گردد. در نتيجه در زمان اجراي درخواست‌ها چند DDL يا Data Definition language مي‌توانند به صورت همزمان به فعاليت مشغول باشند، ولي در SQL Server 2005، فعاليت DLLها مستقيماً روي جداول انجام مي‌پذيرد.

در اوراكل عمليات Locking در DB Block انجام مي‌پذيرد، ولي در SQL Server اين كار در هر رديف جدول انجام مي‌شود. البته مايكروسافت ادعا مي‌كند كه اين كار باعث افزايش سرعت و كارايي جداول مي‌گردد، ولي وقتي سرعت و كارايي آن را با اواركل مقايسه مي‌كنيم، مي‌بينيم كه هر دو از كارايي يكساني برخوردارند.

Borna66
05-16-2011, 11:24 PM
سيستم LOCKING

يكي از قابليت‌هايي كه در نسخه جديد SQL Server به آن اضافه شده است، قابليت SI يا Snapshot Isolation است كه در حقيقت قابليت نسخه‌برداري از رديف (row)هاي جداول است. با اين كار در موقع بروزآوري جداول، امكان انتخاب همزمان اطلاعات آن جدول نيز وجود دارد.

در اوراكل چيزي شبيه اين مكانيزم وجود دارد كه به آن Oracle Flashback Query مي‌گويند. البته بين اين دو مكانيزم تفاوت‌هايي نيز وجود دارد: اوراكل از Undo Segment براي برگشت به ركورد قبلي استفاده مي‌كند. در صورتي كه SQL Server 2005 از TempDB استفاده مي‌كند.

MetaData در اوراكل مانند جداول مديريت مي‌گردد. در نتيجه در زمان اجراي درخواست‌ها چند DDL يا Data Definition language مي‌توانند به صورت همزمان به فعاليت مشغول باشند، ولي در SQL Server 2005، فعاليت DLLها مستقيماً روي جداول انجام مي‌پذيرد.

در اوراكل عمليات Locking در DB Block انجام مي‌پذيرد، ولي در SQL Server اين كار در هر رديف جدول انجام مي‌شود. البته مايكروسافت ادعا مي‌كند كه اين كار باعث افزايش سرعت و كارايي جداول مي‌گردد، ولي وقتي سرعت و كارايي آن را با اواركل مقايسه مي‌كنيم، مي‌بينيم كه هر دو از كارايي يكساني برخوردارند.

Borna66
05-16-2011, 11:24 PM
تغيير ساختاري آنلاين

همان‌طور كه قبلاً بحث شد، قبل از نسخه جديد SQL Server 2005 تنها از طريق DBCC Indexdefrag مي‌توانستيم مثلاً ايندكس را عوض كنيم (البته بايد ازExclusive lock استفاده مي‌كرديم)، ولي اكنون اين مشكل حل شده است و مي‌توان همزمان با بازسازي چند ‌DDL را نيز اجرا نمود.

در اوراكل مي‌توان حتي تمام ساختار جداول و ايندكس‌ها را بدون Exclusive lock تغييرداد. البته براي اتمام عمليات بايد از Momentary lock استفاده شود.

Borna66
05-16-2011, 11:24 PM
Partitioning و Clustering

نسخه جديد SQL Server به تازگي قابليت جداسازي فيزيكي جداول و ايندكس‌ها را پيدا كرده است. در اوراكل قابليت Partitioning به چند صورت امكانپذير است و DBA مي‌تواند بر اساس range ،list و hash اين كار را انجام دهد.

حتي مي‌توان اين كار را در دو رده انجام داد. مثلاً مي‌توانيم جدولي را به دو قسمت براساس list جداسازي كنيم و هر كدام از قسمت‌ها را بر اساس hash دوباره جداسازي نماييم. اين قابليت اوراكل را مي‌توان در جداولي كه ركوردهاي زيادي دارند، به كار برد. البته اين قابليت در SQL Server 2005 وجود ندارد، ولي مي‌توان آن را شبيه‌سازي نمود.

SQL Server 2005 در Partitioning از قابليتي مانند اوراكل برخوردار نيست. با اين حال راه‌حل ساده‌تري را ارائه مي‌كند. در SQL Server 2005 مي‌توان با استفاده از UDF يا User Defined function اين كار را انجام داد.

در مورد Clustering ،SQL Server 2005 پشتيباني خوبي دارد، ولي طراحي و مديريت اين كار سخت است و كارايي زيادي نيز ندارد. از طرف ديگر اواركل RAC/GRID را در نسخه 10g ارائه كرده است كه مي‌توان از آن به عنوان امتيازي مسلم در مقابل SQL Server 2005 نام برد. اوراكل همچنين از سيستمي جديد به نام ASM يا Automatic Storage Management استفاده مي‌كند كه در Clustering مورد استفاده قرار مي‌گيرد

Borna66
05-16-2011, 11:25 PM
ايندكس و Tuning

ساختار مرتب‌سازي و ايندكس در SQL Server 2005 هنوز بر اساس BTree است و در مقابل indexing قدرتمند در اوراكل ساختاري نسبتاً دارد. اوراكل هم از BTree استفاده مي‌كند، ولي از سيستم indexing به نام Bitmap نيز هم استفاده مي‌كند كه در جست‌وجوي ستون‌هايي با انتخاب كم بسيار خوب عمل مي‌كند.

اضافه بر اين اوراكل از Oracle key based cluster نيز در ايندكس استفاده مي‌كند كه كارايي بانك‌اطلاعاتي در انتخاب ركوردهايي انتخابي از چند جدول مرتبط با هم با ستون‌هاي مشابه را بالا مي‌برد.

در اواكل و SQL Server هر دو مي‌توان براي Functionهايي كه روي ستون‌هاي جدول است، ايندكس درست كرد و در هر دوي آن‌ها مي‌توان MV يا Materialized view تهيه نمود. MVها در حقيقت viewهاي آماده هستند كه مي‌توان از آن به جاي متصل كردن چند جدول استفاده كرد.

SQL Server 2005 در مقايسه با اوراكل 10g، در aggregation و functionها محدوديت‌هايي دارد. مثلاً در index view نمي‌توانيم از Distinct ،NOT و ... استفاده كنيم و امكان مثلاً Sum كردن نيست.

Borna66
05-16-2011, 11:25 PM
كپي پشتيبان و بازيابي اطلاعات

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

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

البته اوراكل داراي ابزار بازيابي اطلاعات كاملي است و مي‌تواند با كمك گرفتن از Redo logها اين كار را آسان كند.
اوراكل با استفاده از logical dump‌هايي كه مي‌سازد، مي‌تواند مشكلي كه باعث نياز به بازيابي مي‌شود را شناسايي كند. البته SQL Server هم ابزارهايي مانند DBCC PAGE و DBCC LOG دارد كه مانند ابزارهاي اوراكل عمل مي‌كند.

Borna66
05-16-2011, 11:25 PM
انتقال و‌ ورود اطلاعات (Export and Import)

يكي از امكانات جديد Oracle 10 g براي انتقال يا صادر كردن اطلاعات به data pump معروف است. data pump ساختاري binary دارد. اوراكل اين كار را توسط دو گزينه كه براي صادر و دو گزينه براي وارد كردن اطلاعات دارد، انجام مي دهد. اين دو گزينه exp/data و imp/data هستند.

اضافه بر اين، در اوراكل ابزار sqlldr نيز وجود دارد كه اختصاصاً براي import كردن اطلاعات متني به كار مي‌رود. از طرف ديگر SQL Server2005 داراي دو گزينه براي export و import است؛ به نام‌هاي bcp و Bcp .DTS مي‌تواند اطلاعات را (به صورت متني) import يا export كند و حتي مي‌تواند اطلاعات را به فرمتي ذخيره كند كه بانك‌هاي اطلاعاتي ديگر نيز بتوانند از آن استفاده كنند.

DTS نيز يكي از پر سرعت‌ترين ابزارهاي انتقال اطلاعات در SQL Server است كه در مقايسه با اوراكل بسيار سريع‌تر و كار با آن آسان‌تر مي‌باشد. اوراكل نيز در نسخه جديد خود از ابزار ‌WisdomForce FastReader استفاده مي‌كند كه مي‌تواند با سرعت زياد كار export و import را انجام دهد و اطلاعات را با فرمت متني آماده سازد. از اين ابزار مي‌توان براي انتقال اطلاعات بين اوراكل و بانك‌هاي اطلاعاتي ديگر مانند MS SQL ،2DB ،Sybase استفاده نمود.

Borna66
05-16-2011, 11:26 PM
امكانات موجود براي برنامه‌نويس‌ها
يكي از امكاناتي كه اوراكل در اختيار برنامه‌نويسان قرار مي‌دهد، امكان استفاده از Exception Handling است كه توسط PL/SQL قابل دسترسي است. در SQL Server 2005 نيز اين امكان توسط Transcat-SQL مهيا شده است.

در مبحث Queuing ،SQL Server 2005 ابزاري به نام Server Broker دارد كه مي‌تواند امكان استفاده از Queing را براي برنامه‌نويسان فراهم سازد، اما در اوراكل ابزاري قوي به نام Oracle Advanced Queuing وجود دارد كه كار Queing را به صورت كامل انجام مي‌دهد.

SQL Server 2005 مي‌تواند كمك بيشتري به برنامه‌نويسان بكند؛ زيرا از NET. استفاده مي‌كند، ولي بر خلاف آن، هسته اوراكل از جاوا درست شده است و مستقيماً فقط مي‌تواند توسط PL/SQL اجرا شود. در نتيجه در SQL Server 2005 مي‌توانيم به صورت مستقل از دستورات NET. استفاده كنيم.

از طرف ديگر از آنجا كه جاوا هسته اوراكل را تشكيل مي‌دهد، نگهداري آبجكت‌هاي جاواي درون اوراكل درست مانند نگهداري يك سرور جاوا مي‌باشد، ولي SQL Server 2005 تنها در برخي قسمت‌ها مانند اشكال‌يابي از NET trigger. استفاده مي‌كند و حجم سنگيني ندارد.

Borna66
05-16-2011, 11:27 PM
امكانات ويژه SQL Server 2005

- ‌SQL Server 2005 :Replication ابزار Replication بسيار قدرتمندي دارد كه مي‌تواند از اوراكل به SQL Server يا بلعكس Replication انجام دهد.

- Notification: در SQL Server 2005 سرويس Notification يكي از سرويس‌هايي است كه مي‌توان با آن در ‌Alertهايي مانند Stock Market استفاده نمود.

- Reporting Services: يكي از امتيازات SQL Server 2005 در مقايسه با اوراكل، داشتن سرويس گزارش‌هاي داخلي است كه با استفاده از آن مي‌توان انواع گزارش‌ها را استخراج نمود. البته اوراكل هم داراي Oracle IAS است كه كار گزارش‌گيري را حتي قوي‌تر از SQL Server انجام مي‌دهد، ولي مانند SQL Server 2005 در داخل بانك اطلاعاتي نيست و به صورت خارجي عمل مي‌كند. همچنين خريد آن نيز هزينه زيادي خواهد داشت.

- Identity: در اوراكل نمي‌توان به صورت خودكار كليد اصلي يا Primary key را تعريف كرد. در صورتي در SQL Server2005 اين امكان وجود دارد. البته اوراكل داراي Sequence است، ولي نگهداري اين Sequenceها توسط مدير سيستم كار آساني نيست.

Borna66
05-16-2011, 11:27 PM
امكانات ويژه ‌Oracle 10g

- Auditing: در اوراكل اين كار با استفاده از پارامتر جديد audit_trail=db_extended, init.ora انجام مي‌پذيرد كه مي‌توان از تمامي جست‌وجوها به همراه مقادير ورودي هر يك از آن‌ها اطلاعات ذخيره كرد. اين كار در SQL Server2005 تنها با استفاده از Trace امكانپذير است. آن هم نمي‌تواند مقادير Bind شده اطلاعات را نشان دهد و استفاده از آن نيز مي‌تواند كارايي سرور را تا حد زيادي پايين بياورد.

- Logminer: در‌ اوراكل ابزاري به نام Logminer وجود دارد كه مي‌تواند تاريخچه تمامي DML يا DDLهاي كل پايگاه اطلاعاتي را به ما بدهد. SQL Server2005 اين ابزار را ندارد، ولي مي‌توان از Lumigent Log Explorer براي مشاهده برخي از اين تاريخچه استفاده كرد.

- Flashback Query: اين امكان در نسخه جديد Oracle 10g عرضه گرديد و با كمك آن مي‌توان اطلاعات از دست رفته را بازيابي كرد.

- Rollback Statistics: در اوراكل اگر عملياتي سنگين در وسط كار انجام نپذيرد، مي‌توان آن را Rollback كرد. Rollback statistics مي تواند به شما بگويد چه زماني طول خواهد كشيد كه Rollback انجام شود و عمليات پايان پذيرد. كافي است جست‌وجوي زير را به كار ببريد:
V$FAST_START_TRANSACTIONS
اين قابليت در SQL Server2005 وجود ندارد.

- AWR يا Automatic Workload Repository تصور كنيد كه بانك اطلاعاتي شما بسيار حجيم است، ترافيك زيادي دارد و جوابگويي آن به كلا‌ينت‌ها كُند شده است. با استفاده از AWR در Oracle 10g مي‌توانيم مشكل را بررسي كنيم و تشخيص دهيم چه مشكلي در سيستم وجود دارد. اوراكل اين كار را با استفاده از درست كردن Viewهاي زير انجام مي‌دهد.
v$sysmetric_history for v$sysmetric
v$active_session_history for v$active_session
v$waitclassmetric_history for v$waitclassmetric
v$session_wait_history for v$session_wait
v$servicemetric_history for v$servicemetric

- پشتيباني از OO يا Oracle :Object Oriented قابليت‌هاي شيءگرا (object oriented) دارد. براي همين، اين بانك اطلاعاتي را مي‌توان بانك اطلاعاتي رابطه‌اي شيءگرا نيز ناميد. با استفاده از اين قابليت، برنامه‌نويسان مي‌توانند Class و Objectهاي برنامه شيء‌‌گراي خود را مستقيماً به جداول بانك اطلاعاتي Map كنند.
منابع
www.microsoft.com/sql/editions/enterprise/default.mspx (http://shabakeh-mag.com/links.aspx?l=http://www.microsoft.com/sql/editions/enterprise/default.mspx)
http://blogs.ittoolbox.com/visualbasic/operating/archives/oracle-vs-sql-server-whats-different-11054 (http://shabakeh-mag.com/links.aspx?l=http://blogs.ittoolbox.com/visualbasic/operating/archives/oracle-vs-sql-server-whats-different-11054)
www.oracle.qassociates.co.uk/oracle-10g-features.htm (http://shabakeh-mag.com/links.aspx?l=http://www.oracle.qassociates.co.uk/oracle-10g-features.htm)