یکی از ستونهای اصلی در دنیای برنامهنویسی Database است. به حدی که برای توسعه دهندگان (چه برای طراحی سایت و چه برنامههای ویندوز و اندروید) لازم و ضروری است که دروس مرتبط با Database را یاد بگیرند. آنچه در این مقاله خواهید خواند مباحث مرتبط با معرفی انواع دیتابیس، تفاوتهای میان آنها، مزایا و معایب استفاده از هرکدام و اهمیت آنها در دنیای کامپیوتر را در برمیگیرد؛ پس با ما همراه باشید.
پیش از هر چیز پاسخ به این سؤال ضروری به نظر میرسد که اساساً دیتا چه چیزی است و نگهداری و ذخیره آن چه ضرورتی دارد.
در دنیای تکنولوژی واژۀ داده یا دیتا به بوده های خامی اطلاق میشود که معنای اندکی دارند مگر اینکه به شکلی منطقی ساماندهی شوند. این بوده ها میتوانند اعداد، حروف، کلمات یا علائم و نشانه باشند. هنگامی که دیتاها پردازش شوند میتوان به اطلاعات (information) دست پیدا کرد. پس یکی از دلایلی که نگهداری و ذخیره دیتا را به امری مهم بدل میسازد همین دستیابی به اطلاعات است.
متخصصان کامپیوتر پایگاه داده را به شکلهای مختلفی تعریف میکنند. البته هرکدام از این تعاریف بهنوعی صحیح و درست به شمار میرود از جمله:
فرقی نمیکند که کدام تعریف را به کار ببریم چرا که هرکدام توصیف دقیقی از database ارائه میدهند. امروزه نرمافزارهای بسیاری در دسترس است که جهت تجزیهوتحلیل و ذخیرهسازی دیتاها مورد استفاده قرار میگیرد. در جایی که با یک پایگاه داده پیچیده طرف هستیم توسعه پایگاه داده با تکنیکهای طراحی رسمی و مدلسازی انجام میشود.
عوامل زیادی دست در دست هم دادند تا database به شکلی که امروزه مورد استفاده قرار میگیرد در بیاید. در دهۀ 1960 میلادی بود که مشکلات فراوان طراحی، ساخت و نگهداری سامانههای اطلاعاتی (IS) دانشمندان را بر آن داشت تا به دنبال راه حلی برای این مسئله باشند.
شرکت System Development Corporation با اجرای طرحی به نام: «توسعه و مدیریت محاسباتی یک پایگاه دادهٔ مرکزی» نخستین قدم را در این زمینه برداشت. واژۀ Database در اوایل دهۀ هفتاد در اروپا و در اواخر این دهه در خبرنامههای معتبر آمریکایی به کار رفت.
از دانشمندان پیشگام در این زمینه میتوان چارلز بکمن را نام برد که در این راه برنده جایزه تورینگ نیز شد. فرضیات این دانشمند بود که کاربرد بسیار مؤثری برای دسترسی به وسایل ذخیرهسازی مهیا کرد.
مدل رابطهای بعدها معرفی شد و تا مدتی توانست در مجامع علمی جایگاه بالایی کسب کند. اما در سال 1990 توجهها به سمت مدل شی گرا جلب شد. شیءگرایی به این خاطر توانست بر مدل رابطهای برتری پیدا کند که میتوانست بر روی پایگاه دادههای خاص، دادههای چندرسانهای و مهندسی داده کار کند.
ورود پایگاه XML در سال 2000 نوآوری تازه ای را به وجود آورد. این مدل با هدف از بین بردن تفاوت بین مستندات و داده ها ایجاد شد و کمک کرد منابع اطلاعاتی (چه ساخت یافته و چه غیر ساخت یافته) در کنار هم قرار بگیرند.
آشنایی با اصطلاحات تخصصی و پرتکرار پایگاه داده به شما کمک میکند تا مطالب مربوط به برنامهنویسی و مدیریت پایگاهداده را بهتر درک کنید. برخی از این اصطلاحات را در ادامه خواهیم آورد و توضیح مختصری را درباره هرکدام خواهید خواند.
موجودیت یا (Entity) هر چیزی است که راجع به آن اطلاعاتی را ذخیره میکنیم. بهعنوان مثال در یک کتابفروشی، کتاب یک موجودیت و مشتری یک موجودیت دیگر است.
هر موجودیت میتواند صفت یا مجموعهای از صفات را دارا باشد. صفتها خصیصه یا ویژگی یک موجودیت هستند. در مثال کتابفروشی، نویسنده یکی از صفات موجودیت کتاب است یا شمارهتلفن که از صفتهای مشتری به شمار میآید.
قبل از ذخیرهسازی، ابتدا دیتاها با یک دید از سطح بالا از لحاظ معنایی و مفهومی مدلسازی میشوند. نتیجه این مدلسازی ساختار منطقی Database و شمای ادراکی آن است. یکی از روشهای مدلسازی مدل موجودیت - رابطه یا همان ER است که موجودیت، صفت و ارتباط را بهصورت شماتیک نشان میدهد.
عبارت است از تعامل و وابستگی بین دو یا بیش از دو نوع موجودیت. هر رابطهای دارای یک عنوان و یک مفهوم مشخص است. مشتری میتواند کتاب مورد نظر خود را "انتخاب" کند پس بین این دو نوع موجودیت رابطه انتخاب برقرار است.
در Database کلید را به صفتی اطلاق میکنند که یکتایی مقدار داشته باشد. در واقع مقدار این صفت بین نمونههای مختلف تکرار نمیشود. برای کتاب، شابک میتواند یک صفت کلید باشد.
حال که تا حدودی با عبارات و اصطلاحات مرتبط با Database آشنا شدهاید بهتر است کمی وارد مسائل تخصصیتر شده و نگاهی به انواع پایگاه داده بیندازیم و سپس به این بپردازیم که یک دیتابیس چگونه عمل میکند.
پس از اینکه روشهای متفاوتی برای مدیریت Database پیشنهاد شد طبیعتاً راهکارهای مختلفی هم رواج پیدا کرد که نسبت به رقبا موفقتر عمل میکردند. برخی از آنها را در این بخش به شما معرفی خواهیم کرد.
در این نوع Database روابط بهصورت جدول تعریف میشوند. از معروفترین نوع آنها میتوان به Oracle ، MySQL ، Microsoft SQL Server ، DB2 و Microsoft Access اشاره کرد. اوراکل حاصل زبانهای برنامهنویسی C و SQL است که از قدرتمندترین دیتابیسهای رابطهای بهحساب میآید.
مایکروسافت اس کیو ال همانطور که از نامش پیداست از محصولات شرکت مایکروسافت است و آن را در رده یکی از مهمترین بانکهای اطلاعاتی رابطهای قرار میدهند.
MySQL بهعنوان یک دیتابیس Open Source از نظر کارایی بسیار ساده و دارای سرعت بالایی است و توانایی ذخیره، جستجو، فراخوانی و... را بر روی اطلاعات و دیتاها دارد.
DB2 محصول شرکت IBM یک دیتابیس چند سکویی است و قابلیت ذخیرهسازی، پردازش و استخراج دیتاهای سنگین و دسترسیپذیری آسان را در اختیار توسعه دهندگان میگذارد.
کاربران (اعم از حرفهای و مبتدی) بی شک با اکسس آشنا هستند چرا که این Database بهعنوان یکی از زیرشاخههای Office شناخته میشود. این دیتابیس شامل فرمها، Queryها و ماژولهای متفاوت است.
از این نوع database برای مجموعه گستردهای از دیتاهای توزیع شده استفاده میشود. این نوع از دیتابیس برای تجزیهوتحلیل دیتاهای بدون ساختار بسیار کارآمد هستند. نام آشناترین آنها شامل موارد زیر است:
محبوبترین دیتابیس NoSQL را میشود MongoDB دانست که درعینحال برخی خواص اس کیو ال را نیز مانند Query و ایندکس حفظ میکند. طیف گستردهای از زبانهای برنامهنویسی مانند Java ، Groovy، Scala و Clojure از آن استفاده میکنند.
Cassandra با دسترسیپذیری بالای خود، ذخیرهسازی مجموعه دیتاهای بسیار بزرگ با رابط کاربری سازنده را ممکن میسازد و از این دیتابیس NoSQL در بانکداری، امور مالی و ثبت بیش از دیگر جاها استفاده میشود.
نوع دیگری از دیتابیس است که در آن ذخیره انواع دیتاها پشتیبانی میشود. در این نوع دیتابیس، دیتاها بهصورت اشیا ذخیره میشوند که هر شی دارای ویژگیها و روشهایی است و مشخص میکند که با دیتاها چه کاری انجام شود. PostgreSQL یکی از این نوع دیتابیسها است.
نام این پایگاه از عبارت JavaScript Object Notation گرفته شده است. با استفاده از قالبهای JSON ، XML و BSON یک رکورد را میتوانید به همان اندازه که میخواهید در هر نوع دیتای دیگر ذخیره کنید.
در زبان SQL دستورات سادهای وجود دارد که یادگیری آنها بسیار آسان است و برای شروع فرایند آموختن SQL یک نقطه شروع به شمار میرود.
این دستور برای انتخاب به کار میرود و با استفاده از آن میتوان دیتاها را در دیتابیس انتخاب کرد. مانند مثال زیر:
SELECT name FROM students;
با این کوئری ستون name از جدول students بازگردانده میشود.
این دستور را زمانی به کار میبریم که بخواهیم فیلتر بیشتری اعمال کنیم؛ چیزی مانند مورد زیر:
SELECT name FROM students WHERE age>20;
بهاینترتیب نام دانشآموزانی که سن آنها بیشتر از 20 سال است را در اختیار خواهیم داشت.
با این دستور میتوان دیتاها را در دیتابیس درج کرد. درست مانند این مثال:
INSERT INTO students(name, age) VALUES(Ali,18);
توجه داشته باشید که نام جدول و ستونهایی که مقادیر باید در آن درج شوند باید مشخص شود.
همانطور که از نامش پیداست، از این دستور برای حذف رکوردها استفاده میشود. یک مثال برای این دستور به شرح زیر است:
DELETE FROM students WHERE name=’Ali’;
ذکر این نکته لازم است که اگر این دستور بهدرستی استفاده نشود میتواند مشکلات جدی در Database به وجود آورد و برای افراد مبتدی بهتر است که روش «soft delete» انجام شود تا از خطرات بالقوه جلوگیری به عمل آید.
برای مرتبسازی دیتاها از دستور ORDER کمک میگیریم. بهعنوان مثال اگر بخواهیم رکوردهای جدول دانشجویان ما از نظر سن به شکل نزولی مرتبسازی شوند کدهای خود را به شکل زیر خواهیم نوشت:
SELECT name, age FROM students ORDER BY age DESC;
بهاینترتیب یک لیست خواهیم داشت که در آن نام دانشجویان از لحاظ سن به شکل نزولی مرتب شده است.
دستورات SQL به این موارد محدود نمیشود و روشهای بسیاری برای مدیریت دیتاهای درون دیتابیس وجود دارد که توضیح همه آنها خارجازموضوع این مقاله است؛ اما صرفاً به جهت آشنایی، ذکر همین موارد اندک کفایت خواهد کرد. پیشنهاد میشود درصورتیکه به دنیای برنامهنویسی علاقهمند هستید یک دوره آموزشی مربوط به Database را حتماً بگذرانید.
منظور از سیستم مدیریت دیتابیس (DBMS) در اکثر اوقات نرمافزاری است که در آن مجموعهای از ابزارها و بخشهای مرتبط به هم ایجاد شده است تا امکان مدیریت کامل اطلاعات ذخیره شده در Database فراهم شود. در واقع DBMS پلی است ارتباطی میان دیتابیس، کاربر و برنامه که ارتباط و تعامل میان این سه را آسانتر میکند.
استفاده از DBMS مزایا و قابلیتهای زیادی در اختیار کاربران برای ذخیرهسازی اطلاعات قرار میدهد که بعضی از آنها عبارتاند از:
به دلیل ایندکس شدن دیتاها قابلیت دسترسی سریع بهصورت Random Access در DBMSها میسر میشود.
قابلیت استانداردسازی اطلاعات یا (Data Normalization) ازآنجهت استفاده میشود تا بهینهسازی دیتابیس بهخوبی صورت بگیرد. اعمالی نظیر حذف اطلاعات تکراری، فشردی سازی اطلاعات و... جزو کارهایی است که به بهینهسازی کمک میکند.
در این نوع سیستمها میتوان دسترسی به قسمتهای مختلف دیتا یا بخشهای مختلف نرمافزار را برای کاربران محدود کرد که چنین قابلیتی در مسائل مربوط به امنیت میتواند تأثیرگذار باشد.
در کنار مزیتها، طبیعتاً معایبی نیز به چشم میخورد که اطلاع داشتن از آنها بد نیست. معایبی مانند پیچیدگی در طراحی دیتابیس وجود دارد چرا که ایجاد دیتابیس با استفاده از DBMS دشوار و زمانبر است و بدون دانش و تجربه کافی نمیتوان از آنها بهخوبی استفاده کرد.
هزینههای اضافی که صرف تهیه سیستمها و سختافزارهای جداگانه میشود تا بتوان DBMSها را به کار گرفت نیز عیب دیگری است که نمیتوان از آن چشمپوشی کرد.
از طرفی متمرکز بودن اطلاعات ذخیره شده این نگرانی را به وجود میآورد که در صورت بروز هرگونه خطا و یا مشکل برای DBMS تمام اطلاعات در معرض خطر قرار خواهند گرفت. به دنبال این اتفاق، تمام نرمافزارهای متصل به پایگاهداده دچار مشکل خواهند شد. برای پیشگیری از وقوع چنین اتفاقی برنامهنویسان معمولاً اقدام به تهیه نسخه پشتیبان (backup) از اطلاعات ذخیره شده میکنند.