امروزه سیستم های مدیریت پایگاه داده (RDBMS) مختلفی وجود دارد. احتمالا تا به حال در مورد اکسس، سی بیس، و مای اس کیو ال شنیده اید. اما دو پایگاه داده بسیار معروفی که به صورت گسترده مورد استفاده قرار می گیرند اوراکل و اس کیو ال سرور می باشند. اگرچه شباهت های زیادی بین این دو پلاتفورم موجود می باشد، اما اختلافات اساسی نیز بین آنها وجود دارد. در این مقاله به بررسی زبان مورد استفاده این دو پلاتفورم، چگونگی انجام تراکنش های کنترلی و سازماندهی اشیای پایگاه داده توسط آن دو می پردازیم.
زبان
احتمالا مهمترین تفاوت بین این دو سیستم مدیریت پایگاه داده زبان مورد استفاده آن دو است. اگرچه هر دوی آنها از نسخه ای از زبان ساختیافته پرس و جو (SQL) استفاده می کنند، اما پایگاه داده اس کیو ال سرور از زبان T SQL استفاده می کند که زبان اس کیو ال توسعه یافته توسط سی بیس است و مورد استفاده مایکروسافت قرار می گیرد. اوراکل از PL/SQL یا زبان پروسیژری اس کیو ال استفاده می کند. هر دوی این زبان ها گونه ای از زبان اس کیو ال می باشند و البته از سینتکس و قابلیت های متفاوتی بهره می برند. مهمترین تفاوت این دو زبان نحوه برخورد آنها با متغیرها، Stored Procedure ها ، و توابع می باشند. در اوراکل می توانیم پروسیژرها را در داخل پکیج ها بسته بندی کرده و مورد استفاده قرار دهیم در حالیکه چنین قابلیتی در اس کیو ال سرور وجود ندارد. بعضی بر این عقیده اند که PL SQL بسیار پیچیده تر و قدرتمند تر است در حالیکه T SQL بسیار ساده تر بوده و یادگیری آن آسان تر است.
کنترل تراکنش
دیگر تفاوت عمده بین اوراکل و اس کیو ال سرور مبحث کنترل تراکنش است. در این مقاله منظور از تراکنش عبارت است از گروهی از عملیات یا وظایف که به عنوان یک واحد منفرد در نظر گرفته می شود. به عنوان مثال مجموعه ای از پرس و جوهای اس کیو ال که به ویرایش رکوردهایی می پردازد که باید همزمان اصلاح شوند یک تراکنش نامیده می شود به گونه ایکه اگر یکی از به روزرسانی ها به درستی انجام نگردد کل عملیات با شکست روبرو می گردد. اس کیو ال سرور هر دستور را به صورت جدا اجرا می کند و بسیار بعید است که دستورات به حالت ابتدای خود رول بک داشته باشد حتی اگر اشتباهی نیز در سیستم به وجود بیاید. برای این که بتوانیم به صورت مناسبی دستورات را دسته بندی نماییم، از دستور Begin Transaction برای شروع تراکنش استفاده می کنیم و از دستور Commit برای پایان آن. دستور Commit داده های تغییر یافته را بر روی دیسک می نویسد و به تراکنش پایان می دهد. در داخل یک تراکنش دستور Rollback به معنای نادیده گرفتن تمام تغییرات انجام شده در بلوک تراکنش است. اگر از این دستور در کنار مبحث مدیریت خطاها به خوبی استفاده گردد، حفاظت مناسبی در مقابل خرابی داده ها ایجاد خواهد شد. بعد از ایکه یک دستور Commit اجرا گردد، دیگر نمی توان تغییرات انجام شده را نادیده گرفت.
در اوراکل هر اتصال جدید به پایگاه داده به عنوان یک تراکنش جدید در نظر گرفته می شود. هنگامیکه پرس و جو ها اجرا گردند و دستورات نوشته شوند، تغییرات تنها در حافظه صورت می پذیرد و هیچ چیز اجرا نمی گردد تا این که به صورت واضحی دستور Commit اجرا گردد. بعد از اینکه دستور Commit اجرا گردید اولین دستوری که بعد از آن ظاهر می گردد شروع تراکنش جدید می باشد و فرآیند جدید شروع می گردد. در نتیجه انعطاف پذیری بیشتری به وجود می آید و کنترل خطا ساده تر سورت می پذیرد. دو اورکل هیچ تغییری به صورت واضح بر روی دیسک نوشته نمی شود مگر اینکه به صورت مشخصی دستور Commit توسط مدیر پایگاه داده اجرا گردد.
سازمان دهی اشیای پایگاه داده
دیگر تفاوتی که در اینجا در مورد آن به بررسی خواهیم پرداخت، نحوه سازماندهی اشیای پایگاه داده توسط سیستم مدیریت پایگاه داده است. اس کیو ال سرور اشیایی نظیر جداول، ویوها، و پروسیژرها را با نام پایگاه داده دسته بندی می کند. این قابلیت به یک کاربر داده می شود تا به یک پایگاه داده و اشیای آن دسترسی داشته باشد. همچنین در اس کیو ال سرور هر پایگاه داده یک فضای فایل خصوصی و غیر اشتراکی بر روی دیسک سخت دارد. در اوراکل، تمام اشیای پایگاه داده به وسیله اسکیماها دسته بندی می گردند. اگرچه این اشیا به صورت اشتراکی مورد استفاده قرار می گیرد اما هر کاربر می تواند به صورت محدود و با توجه به حق دسترسی داده شده به اسکیماها و جداول دسترسی داشته باشد.
اگر بخواهیم به صورت خلاصه بگوییم، اوراکل و اس کیو ال سرور هر دو سیستم مدیریت پایگاه داده قدرتمندی می باشند. اگر چه تفاوتهایی دارند اما هر کدام به روش مناسبی می توانند مورد استفاده قرار بگیرند. هیچکدام بهتر از دیگری نیست، بلکه در هر موقعیتی یکی از آنها کاربرد مناسبتری دارد.