پایگاه داده یا Database مجموعه ای از اطلاعات سامان یافته است که بر اساس ترتیب و قوائدی مشخص در کنار یکدیگر نگهداری میشوند. مدیریت اطلاعات ذخیره شده در دیتابیس توسط کاربران معمولا از طریق سیستم مدیریت پایگاه داده یا Database Management System صورت میگیرد. DBMSها ابزارها و مکانیزمهای مختلفی را برای ایجاد و مدیریت دیتابیسها در اختیار ما قرار میدهند.
DBMS چیست؟
سیستم مدیریت پایگاه داده یا DBMS نرم افزاری است که از مجموعه ای از ابزارها و بخشهای مرتبط با هم به منظور فراهم آوردن امکان مدیریت کامل اطلاعات ذخیره شده در پایگاه داده تشکیل شده است. DBMS پل ارتباطی میان پایگاه داده، کاربر و اپلیکیشن است که وظیفه دارد ارتباط و تعامل میان این اجزا را آسان سازد.
انواع سیستمهای مدیریت پایگاه داده
انواع مختلفی از سیستمهای مدیریت پایگاه داده از نظر ساختار و قوائد ذخیره اطلاعات توسعه داده شده است. هر یک از آنها برای هدف خاصی ایجاد شده اند که نسبت به یکدیگر برتریها و معایبی نسبی دارند. هر یک از انواع DBMSها باید با توجه به هدف و نیازی که وجود دارد، به کار گرفته شوند.
Hierarchical DBMS : ساختار این سیستم به صورت درختی است.
Network DBMS : این سیستم از ساختار شبکه ای برای ذخیره اطلاعات استفاده میکند.
Relational DBMS : این سیستم یکی از پرکاربردترین سیستمهای مدیریت پایگاه داده است که ساختار دادهها را به صورت رابطه ای در نظر میگیرد.
Object Oriented DBMS : در این سیستم دادهها به صورت شی در نظر گرفته میشوند.
NoSQL : این سیستم جدیدترین سیستم مدیریت پایگاه داده است که برای زمانی کاربرد دارد که دادهها به صورت جدولی نباشند.
سیستمهای مدیریت پایگاه داده به منظور رفع محدودیتهای موجود در سیستمهای ذخیره و نگهداری اطلاعات در فایلها ایجاد شده اند. البته این DBMS ها نسبت به سیستمهای نگهداری اطلاعات در فایلها دارای مزایا و معایبی هستند.
مزایا استفاده از DBMS ها:
سیستمهای مدیریت پایگاه داده مزایا و قابلیتهای بسیار زیادی نسبت به سایر روشهای ذخیره سازی اطلاعات در اختیار کاربران قرار میدهند. برخی از مهمترین مزایای آنها عبارتند از:
امکان دسترسی سریع به اطلاعات : دسترسی سریع به اطلاعات (Fast Query Access) ذخیره شده در فایلها به دلیل Index نشدن اطلاعات، امکان پذیر نبود. زیرا در فایلها دسترسی به دادهها به صورت ترتیبی است، اما در مقابل آن دسترسی به اطلاعات در DBMSها به دلیل Index شدن دادهها به صورت Random Access صورت میگیرد.
اطمینان از صحت دادهها و اتصال همزمان : یکی از مشکلات اصلی سیستم ذخیره اطلاعات در فایل ها، نبود اطمینان از ذخیره صحیح اطلاعات و نبود امکان اتصال همزمان (concurrent access) به محل ذخیره آنها بود. اما در DBMSها به راحتی از اتصال چندین کاربر و نرم افزار به پایگاه داده پشتیبانی میشود.
پشتیبانی از قابلیت تراکنش : این قابلیت که در سیستم ذخیره فایلی وجود نداشت، این امکان را فراهم میسازد که اگر مجموعه ای از پردازشها به صورت کامل انجام نشدند، اطلاعات به حالت قبلی بازگردند. برای مثال زمانی که خرید اینترنتی انجام میدهید، تا زمانی که تمام پردازشها صورت نگیرند و هزینه خرید به حساب مقصد به صورت صحیح منتقل نشده باشد، کالای مورد نظر به مالکیت شما در نخواهد آمد و مبلغ کالا به حساب شما باز خواهد گشت.
استاندارد سازی اطلاعات : قابلیت استاندارد سازی اطلاعات (Data Normalization) از DBMSها به منظور بهینه سازی پایگاه داده میباشد. DBMSها امکاناتی مانند حذف اطلاعات تکراری، فشرده سازی اطلاعات و... در اختیار ما قرار میدهند.
مقیاس پذیر، منعطف و قابل توسعه : یکی از بزرگترین مشکلات استفاده از سیستم ذخیره فایلی، عدم توسعه پذیری و انعطاف پایین آنها بود. اما DBMSها برای افزایش حجم اطلاعات و دادهها راهکارهای فراوانی دارند.
قائده پذیری و استاندارد سازی : در سیستمهای مدیریت پایگاه داده، حتما باید استانداردها رعایت شوند (Standards Enforcement) تا از ایجاد هرگونه نابسامانی و اختلال در دیتابیس در آینده جلوگیری شود.
پردازش و بررسی دادهها : در پایگاه داده با استفاده از زبان Sql میتوانیم اطلاعات مورد نظر را مورد پردازش و بررسی قرار دهیم و سپس نتیجه نهایی را توسط Queryها از پایگاه داده درخواست کنیم.
امنیت بالا : در سیستمهای مدیریت پایگاه داده میتوان برای دسترسی به بخشهای مختلف داده را برای کاربران و بخشهای نرم افزاری مختلف محدودیت در نظر گرفت.
در فایل چیت شیت Sql server به بررسی مجموعه دستورات این نرم افزار مدیریت پایگاه داده پرداختیم
معایب استفاده از DBMS ها:
در کنار تمام مزیت هایی که سیستمهای مدیریت پایگاه داده در اختیار ما قرار میدهند، معایبی نیز وجود دارند. این معایب که باید حتما در نظر گرفته شوند، عبارتند از :
پیچیدگی در طراحی پايگاه داده : طراحی و ایجاد پایگاه داده با استفاده از سیستمهای مدیریت پایگاه داده پيچيده و زمانبر است. بنابراین به کارگیری این سیستم ها، نیازمند تخصص و تجربه میباشد.
نیاز به تهیه سخت افزار و نصب نرم افزار: برای استفاده از سیستمهای مدیریت پایگاه داده نیازمند تهیه سیستمها و سخت افزارهای جداگانه داریم که این کار هزینه بر است.
متمرکز بودن اطلاعات ذخیره شده : به دلیل متمرکز بودن اطلاعات ذخیره شده، اگر هر گونه خطا یا مشکلی برای سیستم پایگاه داده به وجود آید، تمام اطلاعات در معرض خطر از دست رفتن قرار میگیرند. همچنین بر اساس رخ دادن این اتفاق، تمام نرم افزارهای متصل به پایگاه داده با مشکل رو به رو خواهند شد. یکی از راههای پیشگیری از این نوع مشکلات تهیه پشتیبانی از اطلاعات ذخیره شده است.
وابستگی نرم افزارها : با بکارگیری سیستمهای مدیریت پایگاه داده، نرم افزارهای طراحی شده به پایگاه داده وابسته خواهند شد.
یکی از معروفترین پایگاه داده ها، دیتابیس MySQL است که در مقاله مای اس کیو ال چیست به معرفی آن پرداختیم.
مدیریت اطلاعات پایگاه داده
یکی از کاربردهای DBMS انجام عملیاتهای چهارگانه ساختن (Create)، بروزرسانی (Update)، خواندن (Read) و حذف (Delete) اطلاعات است. این عملیاتها به اختصار CRUD نامیده میشوند. DBMSهای مختلفی برای مدیریت اطلاعات دیتابیسها وجود دارند که هر یک از آنها دارای مزایا و معایب خاص خود است. از جمله DBMSهای پرکاربرد میتوان به لیست زیر اشاره کرد:
MySQL
PostgreSQL
SQLite
SQL Server
IBM Db2
Microsoft SQL Server
Oracle Database
MariaDB
Microsoft Access
LibreOffice Base
SQL یا Structured Query Language زبان درخواست به پایگاههای داده و به عبارتی دیگر زبان مشترک در میان DBMSها است.
نتیجه گیری
همانطور که دیدید، سيستمهای مديريت پايگاه داده مانند یک راه ارتباطی بين پايگاه داده، كاربر و نرم افزارهای کاربردی عمل مي کنند. امروزه تقریبا استفاده از DBMSها برای همه برنامه نویسها و توسعه دهندگان امری غیرقابل اجتناب است. به همین دلیل هر برنامه نویسی باید نحوه کار با این سیستمها را به خوبی یاد بگیرد تا بتواند با بکارگیری آنها به راحتی دادهها و اطلاعات نرم افزارهای خود را مدیریت کند.
ممنون بابت مقاله ی خوب و کاربردیتون
بنده دانشجوی ارشد در رشته ی نرم افزار میباشم و در درس پایگاه داده ی پیشرفته به این موضوع برخورد کردم که شما خیلی خوب توضیح دادینش ....
حالا باید یه مقاله ی تخصصی در رابطه با concurrent آماده کنم که امیدوارم از پسش بر بیام
نازنین کریمی مقدم۱۳ اسفند ۱۳۹۹، ۰۰:۱۳
درود.
خوشحالیم که مقاله براتون مفید بوده :)
رمضان حبيبي۲۳ بهمن ۱۳۹۹، ۰۹:۴۵
سلام من پروژه ايي در سي شارپ تحت ويندوز با sql server نوشتم مي خوام به جاي sql server از mysql استفاده كنم يا همزمان بر روي يك سيستم كلاينت از هر دو با كانكشن هاي مربوط به خودشون وصل بشم لطفا راهنماييم كنين چه جوري تو پروژه اين مورد رو تنظيم كنم
نازنین کریمی مقدم۲۹ بهمن ۱۳۹۹، ۱۷:۱۸
درود.
شما احتمالا یک کلاس در پروژه تون تعریف کردید برای ست کردن sql و پارامترهایی که داره. حالا کاری که باید بکنید اینه که یک <a href="https://www.codeproject.com/Articles/43438/Connect-C-to-MySQL" target="_blank" rel="noopener nofollow ugc">کلاس جدید برای mysql</a> در پروژه تعریف کنید و اتصالات لازم را ست کنید.
بعد هرجا که نیاز داشتید از هرکدوم با use استفاده کنید. سایر کدهای گت و یا سلکت و... مشابه با sql هست.
مهدیه۰۶ آذر ۱۳۹۹، ۱۴:۱۸
آیا میشه توی DBMSنفوذ کرد؟
نازنین کریمی مقدم۰۷ آذر ۱۳۹۹، ۰۳:۲۴
سلام.
بله یکی از رایجترین راههای نفوذ استفاده از sql injection هست که از دستوراتی مثل select و... کمک میگیره تا اطلاعات رو به صورت غیرمجاز دریافت کنه یا داده رو خراب کنه.
حسین۲۳ مهر ۱۳۹۹، ۱۳:۳۲
عالی بود
yaghout۰۳ اسفند ۱۳۹۸، ۱۳:۳۹
با سلام
مطالب خوبی رو گردآوری کردید ولی ای کاش منبع یا منابع رو هم ذکر میکردید.
با تشکر
رویا منافی۱۵ تیر ۱۳۹۸، ۰۵:۵۲
خیلی خوبه اگه وبسایت 7learn در زمینه پایگاه داده دورههای آموزشی داشته باشه . در سایتهای ایرانی بیشتر sqlserver را اموزش داده اند و در زمینه mysql اموزشهای کمی وجود داره . مثلا در ارتباط با index گذاریهای پیشرفته یا پارتیشن بندی و کلا مدیریت دیتابیسهای خیلی حجیم در mysql در وب فارسی مطالب کمی هست و اکثر اموزشها فقط موارد معمولی را میگن و هیچ اموزش پایه ای وجود نداره . چون کلا خود طراحی پایگاه داده هم یک بحث خیلی مهم است .
مهدی علامه۱۵ تیر ۱۳۹۸، ۰۶:۳۵
سلام خانم منافی
بیشتر نکات حرفه ای و پایه ای در مورد پایگاه داده mysql در دوره متخصص php به صورت کامل آموزش داده میشوند.
انشالله به زودی مطالب بیشتری در این زمینه منتشر میکنیم.
مرسی از نظرتون
علیرضا۱۲ تیر ۱۳۹۸، ۱۱:۰۵
با سلام . با توجه به مطلب این مقاله در مورد پایگاه داده ، جای یک دوره اموزشی در این زمینه که یکی از پایگاههای داده مثل mysql را به صورت تخصصی اموزش بده در سایت شما خالیه . من چند تا از دورههای شما را دارم و خیلی عالی هستند . در اکثر دورههای اموزشی mysql را در کنار php اموزش میدن و خیلی خلاصه از کنار این مبحث مهم میگذرند . اگر میشد یک دوره اموزشی داشته باشید که از مفاهیم پایه ای مبحث پایگاه داده شروع کنه و mysql را به صورت کاربردی و تخصصی آموزش بده خیلی عالی میشه . یا در زمینه پایگاه دادههای غیر رابطه ای مثل mongodb . تشکر
مهدی علامه۱۳ تیر ۱۳۹۸، ۱۸:۱۴
سلام علیرضای عزیز
مرسی از پیشنهادت، حتما در آینده مطالب و دورههای آموزشی تخصصی در این زمینه منتشر خواهیم کرد.
با تشکر