Database

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

داده چیست؟

پیش از هر چیز پاسخ به این سؤال ضروری به نظر می رسد که اساساً دیتا چه چیزی است و نگهداری و ذخیره آن چه ضرورتی دارد.

در دنیای تکنولوژی واژۀ داده یا دیتا به بوده های خامی اطلاق می شود که معنای اندکی دارند مگر اینکه به شکلی منطقی ساماندهی شوند. این بوده ها می توانند اعداد، حروف، کلمات یا علائم و نشانه باشند. هنگامی که دیتاها پردازش شوند می توان به اطلاعات(information)  دست پیدا کرد. پس یکی از دلایلی که نگهداری و ذخیره دیتا را به امری مهم بدل می سازد همین دستیابی به اطلاعات است.

تعریف Database

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

  • پایگاه داده عبارت است از مجموعه داده های به هم مرتبط و ساخت یافته.
  • به مجموعه ای از داده هایی که از لحاظ منطقی به هم مرتبط هستند و برای پاسخگویی به نیازهای اطلاعاتی یک سازمان به کار گرفته می شوند.
  • مجموعه ای از داده ها که توسط سیستم مدیریت پایگاه داده (DBMS) ، مدیریت می شود.

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

تاریخچه Database

تاریخچه Database

1960

عوامل زیادی دست در دست هم دادند تا database به شکلی که امروزه مورد استفاده قرار می گیرد در بیاید. در دهۀ 1960 میلادی بود که مشکلات فراوان طراحی، ساخت و نگهداری سامانه های اطلاعاتی (IS) دانشمندان را بر آن داشت تا به دنبال راه حلی برای این مسئله باشند.

شرکت System Development Corporation با اجرای طرحی به نام: «توسعه و مدیریت محاسباتی یک پایگاه داده ای مرکزی» نخستین قدم را در این زمینه برداشت. واژۀ Database در اوایل دهۀ هفتاد در اروپا و در اواخر این دهه در خبرنامه های معتبر آمریکایی به کار رفت.

از دانشمندان پیشگام در این زمینه می توان چارلز بکمن را نام برد که در این راه برنده جایزه تورینگ نیز شد. فرضیات این دانشمند بود که کاربرد بسیار مؤثری برای دسترسی به وسایل ذخیره سازی مهیا کرد.

1990

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

ورود پایگاه XML در سال 2000 نوآوری تازه ای را به وجود آورد. این مدل با هدف از بین بردن تفاوت میان مستندات و داده ها ایجاد شد و کمک کرد منابع اطلاعاتی (چه ساخت یافته و چه غیر ساخت یافته) در کنار هم قرار بگیرند. 

اصطلاحات Database

آشنایی با اصطلاحات تخصصی و پرتکرار پایگاه داده به شما کمک می کند تا مطالب مربوط به برنامه نویسی و مدیریت پایگاه داده را بهتر درک کنید. برخی از این اصطلاحات را در ادامه خواهیم آورد و توضیح مختصری را درباره هرکدام خواهید خواند.

موجودیت (Entity):

موجودیت یا (Entity) هر چیزی است که راجع به آن اطلاعاتی را ذخیره می کنیم. به عنوان مثال در یک کتابفروشی، کتاب یک موجودیت و مشتری یک موجودیت دیگر است.

صفت:

هر موجودیت می تواند صفت یا مجموعه ای از صفات را دارا باشد. صفت ها خصیصه یا ویژگی یک موجودیت هستند. در مثال کتابفروشی، نویسنده یکی از صفات موجودیت کتاب است یا شماره تلفن که از صفت های مشتری به شمار می آید.

نمودار ER:

نمودار ER

قبل از ذخیره سازی، ابتدا دیتاها با یک دید از سطح بالا از لحاظ معنایی و مفهومی مدلسازی می شوند. نتیجه این مدلسازی ساختار منطقی Database و شمای ادراکی آن است. یکی از روش های مدلسازی مدل موجودیت - رابطه یا همان ER است که موجودیت، صفت و ارتباط را به صورت شماتیک نشان می دهد.

رابطه:

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

کلید:

در Database کلید را به صفتی اطلاق می کنند که یکتایی مقدار داشته باشد. در واقع مقدار این صفت بین نمونه های مختلف تکرار نمی شود. برای کتاب، شابک می تواند یک صفت کلید باشد.

حال که تا حدودی با عبارات و اصطلاحات مرتبط با Database آشنا شده اید بهتر است کمی وارد مسائل تخصصی تر شده و نگاهی به انواع پایگاه داده بیندازیم و سپس به این بپردازیم که یک دیتابیس چگونه عمل می کند.

انواع Database

پس از اینکه روش های متفاوتی برای مدیریت Database پیشنهاد شد طبیعتاً راهکارهای مختلفی هم رواج پیدا کرد که نسبت به رقبا موفق تر عمل می کردند. برخی از آنها را در این بخش به شما معرفی خواهیم کرد.

دیتابیس رابطه ای:

دیتابیس رابطه ای

در این نوع Database روابط به صورت جدول تعریف می شوند. از معروف ترین نوع آنها می توان به Oracle ، MySQL ، Microsoft SQL Server ، DB2 و Microsoft Access اشاره کرد. اوراکل حاصل زبان های برنامه نویسی C و SQL است که از قدرتمندترین دیتابیس های رابطه به حساب می آید.

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

MySQL به عنوان یک دیتابیس Open Source از نظر کارایی بسیار ساده و دارای سرعت بالایی است و توانایی ذخیره، جستجو، فراخوانی و... را بر روی اطلاعات و دیتاها دارد.

DB2 محصول شرکت IBM یک دیتابیس چند سکویی است و قابلیت ذخیره سازی، پردازش و استخراج دیتاهای سنگین و دسترسی پذیری آسان را در اختیار توسعه دهندگان می گذارد.

کاربران (اعم از حرفه ای و مبتدی) بی شک با اکسس آشنا هستند چرا که این Database به عنوان یکی از زیرشاخه های Office شناخته می شود. این دیتابیس شامل فرم ها، Queryها و ماژول های متفاوت است.

دیتابیس NoSQL:

پایگاه داده NoSQL

از این نوع database برای مجموعه گسترده ای از دیتاهای توزیع شده استفاده می شود. این نوع از دیتابیس برای تجزیه و تحلیل دیتاهای بدون ساختار بسیار کارآمد هستند. نام آشنا ترین آنها شامل موارد زیر است:

محبوب ترین دیتابیس NoSQL را می شود MongoDB دانست که در عین حال برخی خواص اس کیو ال را نیز مانند Query و ایندکس حفظ می کند. طیف گسترده ای از زبان های برنامه نویسی مانند Java ، Groovy، Scala و Clojure از آن استفاده می کنند.

Cassandra با دسترسی پذیری بالای خود، ذخیره سازی مجموعه دیتاهای بسیار بزرگ با رابط کاربری سازنده را ممکن می سازد و از این دیتابیس NoSQL در بانکداری، امور مالی و ثبت بیش از دیگر جاها استفاده می شود.

دیتابیس شی گرا:

نوع دیگری از دیتابیس است که در آن ذخیره انواع دیتاها پشتیبانی می شود. در این نوع دیتابیس، دیتاها به صورت اشیا ذخیره می شوند که هر شی دارای ویژگی ها و روش هایی است و مشخص می کند که با دیتاها چه کاری انجام شود. PostgreSQL یکی از این نوع دیتابیس ها است.

دیتابیس مدارک یا جیسون (JSON):

این پایگاه را از عبارت JavaScript Object Notation گرفته شده است. با استفاده از قالب های JSON ، XML و BSON یک رکورد را می توانید به همان اندازه که می خواهید در هر نوع دیتای دیگر ذخیره کنید.

نگاهی کوتاه به دستورات دیتابیس

در زبان SQL دستورات ساده ای وجود دارد که یادگیری آنها بسیار آسان است و برای شروع فرایند آموختن SQL یک نقطه آغاز به شمار می رود.

دستور SELECT:

این دستور برای انتخاب به کار می رود و با استفاده از آن می توان دیتاها را در دیتابیس انتخاب کرد. مانند مثال زیر:

   SELECT name FROM students;

با این کوئری ستون name از جدول students بازگردانده می شود.

دستور WHERE:

این دستور را زمانی به کار می بریم که بخواهیم فیلتر بیشتری اعمال کنیم؛ چیزی مانند مورد زیر:

SELECT name FROM students WHERE age>20;

به این ترتیب نام دانش آموزانی که سن آنها بیش از 20 سال است را در اختیار خواهیم داشت.

دستور INSERT:

با این دستور می توان دیتاها را در دیتابیس درج کرد. درست مانند این مثال:

INSERT INTO students(name, age) VALUES(Ali,18);

توجه داشته باشید که نام جدول و ستون هایی که مقادیر باید در آن درج شوند حتما مشخص شود.

دستور DELETE:

همانطور که از نامش پیداست، از این دستور برای حذف رکوردها استفاده می شود. یک مثال برای این دستور به شرح زیر است:

DELETE FROM students WHERE name=’Ali’;

ذکر این نکته لازم است که اگر این دستور به درستی استفاده نشود می تواند مشکلات جدی در Database به وجود آورد و برای افراد مبتدی بهتر است که روش «soft delete» انجام شود تا از خطرات بالقوه جلوگیری به عمل آید.

دستور ORDER:

برای مرتب سازی دیتاها از دستور ORDER کمک می گیریم. به عنوان مثال اگر بخواهیم رکوردهای جدول دانشجویان ما از نظر سن به شکل نزولی مرتب سازی شوند کدهای خود را به شکل زیر خواهیم نوشت:

SELECT name, age FROM students ORDER BY age DESC;

به این ترتیب یک لیست خواهیم داشت که در آن نام دانشجویان از لحاظ سن به شکل نزولی مرتب شده است.

دستورات SQL به این موارد محدود نمی شود و روش های بسیاری برای مدیریت دیتاهای درون دیتابیس وجود دارد که توضیح همها آنها خارج از موضوع این مقاله است؛ اما صرفا به جهت آشنایی، ذکر همین موارد اندک کفایت خواهد کرد. پیشنهاد می شود در صورتی که به دنیای برنامه نویسی علاقه مند هستید یک دوره آموزشی مربوط به Database را حتماً بگذرانید.

سیستم مدیریت دیتابیس:

DBMS

منظور از سیستم مدیریت دیتابیس (DBMS) در اکثر اوقات نرم افزاری است که در آن مجموعه ای از ابزارها و بخش های مرتبط به هم ایجاد شده است تا امکان مدیریت کامل اطلاعات ذخیره شده در Database فراهم شود. در واقع DBMS پلی است ارتباطی میان دیتابیس، کاربر و برنامه که ارتباط و تعامل میان این سه را آسان تر می کند.

استفاده از DBMS مزایا و قابلیت های زیادی در اختیار کاربران برای ذخیره سازی اطلاعات قرار می دهد که بعضی از آنها عبارت‌اند از:

دسترسی سریع به اطلاعات:

به دلیل ایندکس شدن دیتاها قابلیت دسترسی سریع به صورت Random Access در DBMSها میسر می شود.

استاندارد سازی اطلاعات:

قابلیت استاندارد سازی اطلاعات یا (Data Normalization) از آن جهت استفاده می شود تا بهینه سازی دیتابیس به خوبی صورت بگیرد. اعمالی نظیر حذف اطلاعات تکراری، فشردی سازی اطلاعات و... جزو کارهایی است که به بهینه سازی کمک می کند.

امنیت:

در این نوع سیستم ها می توان دسترسی به قسمت های مختلف دیتا یا بخش های مختلف نرم افزار را برای کاربران محدود کرد که چنین قابلیتی در مسائل مربوط به امنیت می تواند تأثیر گذار باشد.

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

هزینه های اضافی که صرف تهیه سیستم ها و سخت افزارهای جداگانه می شود تا بتوان DBMSها را به کار گرفت نیز عیب دیگری است که نمی توان از آن چشم پوشی کرد.

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