یکی از اساسیترین بخشهای هر نرم افزار کاربردی، دیتابیس یا Database است، در واقع شما نمیتوانید هیچ نرمافزار امروزی را بدون استفاده کردن از یک دیتابیس در نظر بگیرید.
اگر بخواهیم واضحتر بگوییم باید این را در نظر داشته باشید که آنچه بر دنیا حکمرانی میکند دادهها هستند و در نتیجه شما برای مدیریت کردن دادههایتان نیاز به یک فضای متمرکز دارید که دیتابیس (Database) دقیقا چنین نقشی را ایفا میکند.
دیتابیس به ما کمک میکند تا دادههای یک اپلیکیشن را مدیریت، ذخیره و ویرایش بکنیم.
اگر نرم افزار شما دادهپذیر نباشد و نتواند دادههای مختلف را به اصطلاح هندل بکند، نخواهد توانست به کاربران سرویس ارائه دهد و در نتیجه کارایی چندانی نخواهد داشت.
اما قبل از اینکه به نقش و اهمیت دیتابیس (Database) بپردازیم، بیایید به اینکه دیتابیس چیست نگاهی بیاندازیم و سپس با انواع مختلف دیتابیس، معماری آن و مسائلی از این دست آشنا شویم.
پس در نهایت هدفی که ما در این مقاله دنبال میکنیم آشنا کردن شما به صورت عمیق با چیستی دیتابیس و چگونگی کار کردن آن و در نهایت انواع دیتابیس است.
دیتابیس چیست؟
قبل از اینکه بهصورت تخصصی وارد مرحله آشنا کردن شما با دیتابیس شویم نیاز است که ما با مفهوم Data یا همان داده آشنایی پیدا کنیم. اینکه داده چیست و در نهایت داده چه نقشی در نرمافزارها و اپلیکیشنها دارد.
داده یا Data چیست؟
داده چیزی جز یکسری اطلاعات که در حالتهای مختلف به ما نشان داده میشود نیست.
متون، اعداد، تصاویر و… همگی شکلهای مختلفی از داده هستند که ما روزانه با آنها سر و کار داریم و در وبسایتها و اپلیکیشنهای مختلف آنها را مشاهده میکنیم.
اما در دنیای علوم کامپیوتر، دادهها در واقع یکسری اعداد باینری هستند که بعد از ترجمه و تفسیر شدن، برای انسانها قابلیت استفادهپذیری را پیدا خواهند کرد.
در دنیای کامپیوتر آنچه که ما روزانه با آن سر و کار داریم، دادهها هستند و بدون آنها تقریبا هیچ چیزی وجود منطقی ندارند.
همچنین این قضیه را در نظر داشته باشید که در هر ثانیه حجم دادهای بسیار بزرگی در دنیا ایجاد میشود و تمام این دادهها از طریق اینترنت به تمام کاربران جهان ارسال میشود.
از این جهت هر کسب و کاری در نهایت به دادههایی که تولید میکند متکی است و یکی از اصلیترین موتورهای پیشران جامعه بشری نیز به حساب میآید.
حال که با مفهوم داده آشنا شدیم مطمئنا یک سوال برایتان پیش خواهد آمد و آن این است که این حجم عظیم از دادهها را چطوری میتوانیم مدیریت کنیم؟
آیا این حجم از دادهها میتوانند یک پیوند منطقی داشته باشند و در نهایت قابل استفاده باشند؟ جواب این سوال در استفاده کردن از دیتابیس است.
تعریف و آشنایی با دیتابیس
به زبان ساده، دیتابیس یک فضای ذخیرهسازی برای مدیریت کردن دادههای مرتبط به همدیگر است.
هدف استفاده از دیتابیس این است که حجم عظیمی از دادههای مختلف را قابل دسترس و مدیریتپذیر بکند.
شما در یک دیتابیس میتوانید دادههای جدید را اضافه کرده، دادههای قبلی را ویرایش نمایید و همچنین دادههایی که از قبل در چنین سیستمی موجود هستند را فراخوانی کنید.
برای اینکه یک تصور اولیه از چیستی دیتابیس داشته باشید میتوانید به یک دفترچه شماره تلفن که در آن دادههای مختلفی وجود دارند فکر کنید.
بنابراین در دیتابیس شما با مجموعهای از دادههای سازماندهی شده روبهرو هستید که ارتباط منطقی با همدیگر دارند.
در یک دیتابیس برای اینکه بتوانید دادههای ذخیره شده را به راحتی پیدا کنید، با شیوههای ذخیرهسازی مختلفی روبهرو هستید.
یکی از مرسومترین این روشها، ذخیرهسازی دادهها در مجموعهای از سطرها و ستونهاست که در نهایت به ایجاد جداول مختلف ختم میشود. زمانی که شما جداول مختلف در اختیار داشته باشید، در واقع یک دیتابیس را ایجاد کردهاید.
از جمله محبوبترین دیتابیسهایی که اکنون در دنیا مورد استفاده قرار میگیرد میتوان به MySQL، SQL Server، PostgreSQL و MongoDB اشاره کرد.
همچنین این نکته حائز اهمیت است که دیتابیسهای مدرن توسط سیستمی تحت عنوان DBMS یا Database Management System مدیریت میشوند که در ادامه مقاله با این مفهوم نیز آشنا خواهیم شد.
از ۱۹۶۸ که برای اولین بار مفهوم دیتابیس (Database) ارائه شد تا به اکنون، شکلهای بسیار متفاوتی از دیتابیس ارائه شده که هر کدام با هدف ارائه راهکاری متفاوت برای مدیریت دادهها ایجاد شده است.
در ادامه مقاله به این حالتهای مختلف از دیتابیس خواهیم پرداخت.
بررسی تاریخچه و انواع تحولات در دنیای دیتابیسها
اولین دیتابیسهایی (با مفهومی که ما میشناسیم) که به دنیا معرفی شدند تاریخی به قدمت ۵۰ سال دارند.
در آن زمان اولین مدل دیتابیس که با نام Flat-Based Database شناخته میشد به دنیا عرضه گشت و از آن زمان تا به اکنون مدلهای بسیار متنوعی از دیتابیس ارائه شده که هر کدام براساس نیازمندیهای مختلف توسعه یافتهاند.
اگر بخواهیم به صورت کلی ۴ دوره دیتابیسها را در نظر بگیریم میتوانیم به صورت زیر آنها را معرفی کنیم:
- در سال ۱۹۶۸ اولین ساختار دیتابیس با نام Flat-Based Database عرضه شد.
- بعد از آن IBM اولین دیتابیسی که مبتنی بر ساختار سلسلهای بود را معرفی کرد و تا سال ۱۹۸۰ این دیتابیس پر استفادهترین گزینه ممکن بود. نام این دیتابیس IMS یا Information Management System بود.
- برای اولین بار نوع جدیدی از دیتابیس در سال ۱۹۷۱ توسط چارلز باخمن معرفی شد که براساس مدل داده شبکهای کار میکرد و به آن IDS مخفف Integrated Data Store یا فضای دادهای یکپارچه میگفتند.
- در ۱۹۷۰ برای اولین بار دیتابیس رابطهای معرفی شد که امروزه نیز از کانسپت اولیه آن استفاده میشود. البته این مدل بسیار پایهای بود و تا اواخر قرن ۲۰ به تکامل بالا دست پیدا نکرد.
- حال در قرن ۲۱ ما جدای از دیتابیسهای رابطهای با شکل جدیدی از دیتابیس به نام دیتابیس NoSQL روبرو هستیم که در در بخشهای بعدی مقاله آن را نیز بررسی خواهیم کرد. همچنین یکی دیگر از موضوعات عصر جدید پدید آمدن DBMS است که با آنها نیز آشنا خواهیم شد.
انواع دیتابیس
به صورت کلی چندین دسته از دیتابیس وجود دارد که البته دو الی سه مورد از این دیتابیسها بیشترین استفاده را داشته و بقیه موارد در سازمانهای بزرگ و در مواجه با چالشهای پیچیده مورد استفاده قرار میگیرند.
بیایید با ۳ نوع از پر استفادهترین دیتابیسها آشنا شویم:
1. دیتابیس رابطهای: پر استفادهترین نوع از دیتابیس که توسط شرکتها و افراد مختلف استفاده میشود دیتابیس رابطهای یا Relational Database است. این نوع از دیتابیس، دادههای خود را در مجموعهای از جداول که از سطرها و ستونهای مختلف تشکیل میشود ذخیره میکند. MySQL، SQL Server و PostgreSQL از جمله محبوبترین این دیتابیسها هستند.
2. دیتابیس NoSQL: دیتابیس NoSQL یک ساختار غیر رابطهای در دنیای دیتابیسهاست و برای ذخیرهسازی دادههایی مورد استفاده قرار میگیرد که نظم و ساختار یکپارچهای ندارند. از زمانی که دنیای وب اپلیکیشنها تغییرات بسیار زیادی به خود دید و حجم و نوع دادهها در این وب اپلیکیشنها به صورت متفاوتی عرضه شد، دیتابیسهای NoSQL نقشی بسیار حیاتی در پیادهسازی این دست از اپلیکیشنها ایفا کردند.
MongoDB، Neo4j و Redis از مشهورترین دیتابیسهای NoSQL هستند. البته خود دیتابیسهای NoSQL نیز به چند دسته تقسیم میشوند که در مقالهای دیگر به صورت جامع در ارتباط با آنها صحبت خواهیم کرد.
3. دیتابیس ابری یا Cloud Database: این نوع از دیتابیسها روی یک پلتفرم پردازش ابری اجرا میشوند و به عنوان یک PaaS یا Platform as a Service عرضه خواهند شد. Amazon RDS و DynamoDB از مشهورترین دیتابیسهای ابری هستند.
سیستمهای مدیریت دیتابیس یا DBMS چیست؟
DBMS یا سیستم مدیریت دیتابیس به زبان ساده یک نرم افزار سازمانی یا غیر سازمانیست که برای مدیریت دیتابیس به ما کمک میکند.
در لایهها و کامپوننتهای دیتابیس که با آن آشنا خواهیم شد، DBMS را به عنوان یک لایهی نرمافزاری معرفی خواهیم کرد.
یشتر مواردی که تا به اکنون معرفی شدند نمونههایی از DBMS هستند. با استفاده از این دسته نرمافزارها شما میتوانید دیتابیسهای جدیدی را ایجاد کنید، آنها را مدیریت نموده و در نهایت به صورت کامل آنها را کنترل کنید.
در واقع هر کاری که بتوانید روی یک دیتابیس (Database) انجام دهید را میتوانید از طریق یک DBMS به انجام برسانید.
MySQL، MariaDB، SQL Server و Oracle Database جزو مهمترین نرم افزارهایی هستند که به عنوان DBMS یا RDBMS شناخته میشوند.
منظور از عبارت RDBMS همان سیستمهای مدیریت دیتابیس رابطهای هستند. از زمانی که دیتابیسهای NoSQL عرضه شدند، تفکیک کردن DBMS و RDBMS اهمیت پیدا کرد.
آشنایی با اجزا یا کامپوننتهای یک دیتابیس (معماری دیتابیس)
به صورت کلی هر سیستم دیتابیس شامل ۵ قسمت میشود که البته این تقسیمبندی یک تقسیم استاندارد است و ممکن است برای برخی حالتها، یکسری تقسیمات سفارشی نیز وجود داشته باشد. در ادامه قصد داریم با این ۵ کامپوننت آشنا شویم:
سخت افزار یا Hardware
سخت افزار به بخش فیزیکی و الکترونیکی دستگاه گفته میشود که شامل بخشهای I/O، دیسکهای ذخیرهسازی و… میشود. یکی از مهمترین بخشهای یک سخت افزار، دستگاههای ذخیرهسازیست که باعث میشود دادههای داخل یک دیتابیس روی آنها قرار بگیرد.
نرم افزار یا Software
بخش نرم افزار در هر دیتابیس وظیفه کنترل و مدیریت آن را در سطح نرم افزار دارد.
DBMS که با آن آشنا شدیم در واقع یک نرم افزار برای مدیریت و استفاده از دیتابیسها هستند.
نرمافزارهای مدیریت دیتابیس با منابع سخت افزاری که دیتابیس روی آن قرار دارد ارتباط برقرار کرده و به این شیوه استفاده از سخت افزار دیتابیس را برای کاربران ممکن میسازد.
داده یا Data
داده مجموعهای از اطلاعات است که به عنوان پایهایترین بخش یک دیتابیس در نظر گرفته میشود. هر دیتابیس حاوی مجموعهای بزرگ از دادههای مختلف است که شامل متون، اعداد و… میشود.
رویهها یا Procedures
رویهها مجموعهای از دستورالعملها و قواعد برای استفاده از دیتابیس است که به راهاندازی و طراحی DBMS کمک میکند.
این رویهها به صورت کلی برای سهولت کاربران بوده و در نهایت منجر میشود که بتوانند کارهای مرتبط با دیتابیس را با راحتی بیشتر انجام داده و آن را مدیریت کنند.
زبان دسترسی به دیتابیس یا Database Access Language
برای استخراج داده و ارتباط برقرار کردن با دیتابیس ما به یک زبان میانجی نیاز دارید.
این زبان DAL نام دارد و با استفاده از آن میتوان دادههای جدید به دیتابیس اضافه کرد، دادههای قبلی را آپدیت نمود و همچنین دادههایی را از دیتابیس حذف کرد.
SQL اصلیترین و پر استفادهترین زبان دسترسی به دیتابیس است.
جمعبندی
یادگیری و استفاده از دیتابیس یکی از اجتناب ناپذیرترین مراحلیست که توسعه دهندگان و متخصصین باید با آن روبرو شوند.
در واقع نمیتوان هیچگونه نرم افزاری مدرنی را بدون استفاده از دیتابیس در نظر گرفت.
همانطور که در مقاله بالا به آن اشاره کردیم با استفاده از دیتابیس شما میتوانید حجم عظیمی از دادهها را مدیریت کرده و در نهایت به صورت منطقی از اطلاعات مربوط به کاربران و نرمافزارتان استفاده کنید.