-
مقايسه فني مهمترين بانكهاي اطلاعاتي جهان؛ Oracle و SQL Server
شركت مايكروسافت مدعي است كه ابزارهاي جديدي براي مديران بانكهاي اطلاعاتي يا همان 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 را ميتوان در صورت لزوم خريداري نمود، ولي اوراكل تقريباً شما را از تمام چيزهايي كه در بانكهاي اطلاعاتي ميخواهيد، بينيازمينمايد؛ البته بهاي آن گران است.
-
مقدمه
بدونشك ميتوان گفت كه بانكهاي اطلاعاتي اوراكل و SQL Server، از مهمترين بانكهاي اطلاعاتي امروز به شمار ميآيند. اين سؤال كه كدام يك از اين دو از ديگري بهتر است، ممكن است فكر بسياري از برنامهنويسان و شركتهاي توليد كننده نرمافزار را مشغول كرده باشد.
از طرفي مايكروسافت، به عنوان غول نرمافزاري ادعا ميكند كه SQL Server از اوراكل سادهتر و بهتر است. اوراكل هم از سوي ديگر ميگويد محصول او از خيلي جهات بر SQL Server برتري دارد.
اين مقاله سعي دارد به سؤالات شما در مورد تفاوتهاي فني اين دو بانك اطلاعاتي تا حدي جواب دهد. در ابتداي اين مقاله معماري اين دو بانك اطلاعاتي با هم مقايسه ميگردد، سپس كامپوننتهاي شبكه هر دو بانك اطلاعاتي با يكديگر مقايسه ميشوند.
در اين مقاله امكانات مرتبط با كارايي پايگاههاي اطلاعاتي (Performance)، ابزار (Utility) و Replication در بانكهاي اطلاعاتي بسيار بزرگ يا همان VLDB يا Very Large Data Bases و OLTP يا Online Transaction Processing مورد بررسي قرار خواهند گرفت و ابزارهاي جديد SQL Server 2005 كه در حقيقت سعي دارد با اوراكل رقابت كند، مورد بررسي قرار خواهند گرفت.
-
معماري بانك اطلاعاتي
در اوراكل هر ديتابيس شامل تمامي امكانات پايگاه رابطه 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ها در اوراكل را دارند.
شکل 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 براي كنترل كارايي استفاده مي كند.
-
اجزاي تنظيم كننده شبكه
شکل 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 دارد.
-
ساختار فيزيكي و منظقي ذخيره اطلاعات
شكل 3 نگاهي مقايسهاي دارد به دو بانك اطلاعاتي اوراكل و SQL Server از لحاظ ساختار اطلاعاتي. همان طور كه در اين شكل ميبينيد، در SQL Server اندازه صفحات (8kb، (page size است كه واحد پايه ورودي/ خروجي به شمار ميرود.
هر صفحه فقط متعلق به يك آبجكت، مانند data ،index ،GAM و.. است. SQL Server براي افزايش كارايي اين صفحات آنها را در دستههاي هشتتايي قرار ميدهد كه به آن Extent ميگوييم. اين Extentها ميتوانند به چند آبجكت متفاوت تعلق داشته باشند.
شکل 3
هر Extent كه تمام صفحاتش آبجكتهاي مانند هم داشته باشد Uniform ناميده ميشود و به Extentهايي كه آبجكتهاي يكساني ندارند، Mixed ميگويند.
SQL Server در ديتابيسهاي خود از Filegroupها استفاده ميكند تا كنترل فضاهاي فيزيكي جداول و ايندكسها را در اختيار كامل داشته باشد. اين Filegroupها از يك يا چند فايل تشكيل شدهاند و اطلاعات موجود در آن ميتواند در تمام فايلهاي آن Filegroup ذخيره شود.
با استفاده از Filegroup ميتوان جداول بزرگ را در چند فايل ذخيره نمود و از اين طريق كارايي ورودي/ خروجي را بالا برد، ميتوان عمليات كپي پشتيبان و بازآوري جداول را انجام داد و دادههايي مانند تصويرو فايلهاي متني بزرگ را در فايلهاي جدا ذخيره نمود.
برخلاف SQL Server، بانك اطلاعات اوراكل از Tablespaceهايي تشكيل شده است كه خود از Data File تشكيل شدهاند. اين Data Fileها در واحدهايي به نام Block طبقهبندي ميشوند كه مدير بانك اطلاعاتي (DBA) ميتواند اندازه آن را وقتي كه در حال ساخت ديتابيس است تعيين كند. برخلاف SQL Server، در اوراكل وقتي يك شيء در Tablespace توليد ميشود، كاربر ميتواند فضاي آن را مشخص كند.
-
مقايسه 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 با يكديگر مقايسه ميگردند.
-
سيستم 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 اين كار در هر رديف جدول انجام ميشود. البته مايكروسافت ادعا ميكند كه اين كار باعث افزايش سرعت و كارايي جداول ميگردد، ولي وقتي سرعت و كارايي آن را با اواركل مقايسه ميكنيم، ميبينيم كه هر دو از كارايي يكساني برخوردارند.
-
سيستم 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 اين كار در هر رديف جدول انجام ميشود. البته مايكروسافت ادعا ميكند كه اين كار باعث افزايش سرعت و كارايي جداول ميگردد، ولي وقتي سرعت و كارايي آن را با اواركل مقايسه ميكنيم، ميبينيم كه هر دو از كارايي يكساني برخوردارند.
-
تغيير ساختاري آنلاين
همانطور كه قبلاً بحث شد، قبل از نسخه جديد SQL Server 2005 تنها از طريق DBCC Indexdefrag ميتوانستيم مثلاً ايندكس را عوض كنيم (البته بايد ازExclusive lock استفاده ميكرديم)، ولي اكنون اين مشكل حل شده است و ميتوان همزمان با بازسازي چند DDL را نيز اجرا نمود.
در اوراكل ميتوان حتي تمام ساختار جداول و ايندكسها را بدون Exclusive lock تغييرداد. البته براي اتمام عمليات بايد از Momentary lock استفاده شود.
-
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 مورد استفاده قرار ميگيرد
برچسب برای این موضوع
مجوز های ارسال و ویرایش
- شما نمی توانید موضوع جدید ارسال کنید
- شما نمی توانید به پست ها پاسخ دهید
- شما strong>نمی توانید فایل پیوست ضمیمه کنید
- شما نمی توانید پست های خود را ویرایش کنید
-
قوانین انجمن