معرفی سیستم فایلینگ در پایگاه داده و مقایسه آن با سیستم مدیریت
جلسات دوره
مهدی عباسی
مهدی عباسی هستم، مسلط به حداقل ۲۰ زبان مطرح برنامه نویسی به صورت پیشرفته، مدیر عامل شرکت آریا نرم افزار و بنیانگذار آکادمی درسمن، مسلط به تدریس دروس تخصصی کاردانی و کارشناسی کامپیوتر، پایگاه داده ها، برنامه نویسی پیشرفته، مبانی برنامه نویسی، مباحث ویژه طراحی وب و .... مشاهده رزومه
سیستم فایلینگ در پایگاه داده در برابر سیستم مدیریت پایگاه داده
در درس گذشته سری زدیم به مقدمه sql server2019. در این جلسه میخواهیم درباره سیستم فایلینگ در پایگاه داده صحبت کنیم.
همانطور که میدانید اصطلاح پایگاه داده در علوم کامپیوتر یکی از رایجترین مفاهیم است. اما معنی این واژه چیست؟ به بیان ساده پایگاه داده محلی است برای نگهداری داده و علم پایگاه داده. اما ممکن است سوالی که ذهنتان را مشغول کند این باشد که منظور از نگهداری داده چیست؟ این نگهداری یک ذخیره پایدار مانند فایل است یا مانند آرایه و بسیاری از موارد دیگر یک ذخیره موقت در حافظه است؟
بله اگر دقت کرده باشید ما هم در ابتدا به این موضوع اشاره کردیم. در واقع در این درس میخواهیم به جواب سوال شما و معرفی سیستم فایلینگ در پایگاه داده و همچنین مهمترین سوالی که مطرح میشود یعنی تفاوت سیستم فایلینگ نسبت به پایگاه داده، بپردازیم.
اما بهتر است قبل از شروع، با یکسری از مفاهیم که در ادامه به آنها اشاره میکنیم آشنا شوید.
مفاهیم:
-
سیستم ذخیره و بازیابی اطلاعات
به سیستمی میگویند که به برنامهنویس یا کاربر امکان ذخیره، بازیابی و پردازش اطلاعات را میدهد.
-
داده
برای این مفهوم تعاریفی بسیاری وجود دارد مانند مجموعهای از دانستنیها یا نمایش اشیا فیزیکی، رویدادها یا هر چیز قابل مشاهدهای که در تصمیمسازی کاربرد دارد.
اما بهترین تعریف از دادهها مربوط به دیدگاه ANSI میباشد. چراکه این دیدگاه داده را، به نمایش گذاشتن پدیدهها، مفاهیم یا شناختهها به صورت صوری و مناسب برای برقراری ارتباط، تفسیر یا پردازش توسط انسان یا به طور خودکار میداند.
-
اطلاعات
اطلاعات یعنی داده پردازش شدهای که شناختی را منتقل و در تصمیمگیری کاربرد دارد؛ درست برخلاف داده خام.
معرفی سیستم فایلینگ در پایگاه داده
خب بعد از آشنایی با این مفاهیم، باید به معنی علمی پایگاه داده و همچنین تعریف سیستم فایلینگ پی ببریم.
همان طور که گفتیم در سیستمهای اولیه فقط محاسبات ارزشمند بود، اما بعد از مدتی نگهداری دادهها ارزش بیشتری از محاسبات پیدا کرد. چراکه همه متوجه شدند که با هر وسیلهای میشود محاسبات را انجام داد اما نگهداری دادهها را خیر. نگهداری دادهها یعنی اینکه بتوانیم دادههای فعلی خود را ذخیره کنیم تا در یک روز و زمان خاص آن را بازیابی کنیم. در اینجا بود که مبحثی به نام ذخیره و بازیابی اطلاعات بهوجود آمد که در تعاریف بالا آن را توضیح دادیم.
اما در گذشته، دادهها را به کمک سیستمهای فایلینگ ذخیره میکردند. مانند تصاویر و فایلهای صوتی که ذخیره میکنیم. این سیستم فایلینگ در تمام سیستم عاملها کمک میداد تا بتوانیم دادههای خود را ذخیره کنیم. در گذشته وقتی اطلاعات موجودیتها ذخیره میشد، مدیر فایل مستقیما دادههایی را که حاوی اطلاعات موجودیتها بود دریافت و در یک فایل ذخیره میکرد.
اما از لحاظ علمی پایگاه داده یعنی مجموعهای از دادههای ذخیره شده که درباره موجودیتهای یک محیط عملیاتی و ارتباطات میان آنها به صورت مجتمع و مبتنی بر یک ساختار تعریف شده، به صورت صوری با حداقل افزونگی تحت کنترل متمرکز، مورد استفاده یک یا چند کاربر قرار بگیرد آن هم به صورت اشتراکی و همزمان.
نحوه کار در سیستم فایلینگ و سیستم پایگاه داده:
برای ایجاد یک برنامه کاربردی دو روش وجود دارد. روش اول همان روش سنتی یا اصطلاحا فایلینگ است. در این روش، با استفاده از دستورات موجود در یک زبان برنامهنویسی، عملیات ایجاد فایل، خواندن و نوشتن اطلاعات در فایل، حذف فایل و … انجام میشود. در واقع در یک برنامه، ساختاری توسط برنامهنویس تعریف میشود، فایلی با آن ساختار بر روی دیسک ایجاد شده و این فایل جهت عملیات ذخیره و بازیابی اطلاعات مورد استفاده قرار می گیرد. مدیریت و کنترل اجرای عملیات روی فایل بر عهده بخشی از سیستمعامل به نام سیستم فایل است. سیستم فایل تنها بخش مدیریتی است که در این روش بر روی عملیات کنترل دارد. اما این کنترل یک کنترل ضعیف است و همچنین محدودیتهایی را برای استفاده همزمان کاربران ایجاد میکند که در ادامه به آنها اشاره خواهیم کرد.
اما روش دوم روش پایگاهی است. در این روش از پایگاه دادهها جهت ذخیره و بازیابی دادهها استفاده میکنیم و عملیات خود را تحت کنترل یک سیستم مدیریتی قدرتمند به نام سیستم مدیریت بانک اطلاعات (DBMS) انجام میدهیم.
بالاخره سیستم فایلینگ یا سیستم پایگاه داده؟
در این قسمت دقیقا میخواهیم به تفاوت سیستم فایلینگ و پایگاه داده بپردازیم. درست است که همه اطلاعات ذخیره شده به صورت فایل ذخیره میگردد ولی در روش فایلینگ، ما مستقیما با فایل کار میکنیم و این درحالیست که در سیستم مدیریت پایگاه داده(DBMS) اینکار توسط یک واسط انجام میشود؛ یعنی از طریق این واسط، ساختار دادههای خود را تعریف میکنیم. پس در سیستم مدیریت بانک اطلاعات بعد از نوشتن دادهها، آنها در فایلهایی ذخیره میشوند که استفاده از محتوا فایلها فقط از طریق خود DBMS امکانپذیر است.
حالا بهتر است کمی با واژه DBMS آشنا شوید:
در بالا صحبت از DBMS یا سیستم مدیریت پایگاه داده شد. حالا سیستم مدیریت بانک اطلاعاتی یا سیستم مدیریت پایگاه داده (DBMS) یعنی چی؟
به نرمافزاری میگویند که واسط بین یک محیط ذخیره و بازیابی اطلاعات و محیط منطقی برنامه در یک سیستم پایگاه داده است. این نرمافزار هرگونه ارتباط بین کاربر و داده را کاملا کنترل و مدیریت میکند و به کاربران این امکان را میدهد تا پایگاه داده خود را ایجاد کنند، عملیات انجام دهند و تا حدی بر پایگاه داده خود کنترل داشته باشند.
معایب روش فایلینگ در برابر سیستم پایگاهی:
-
وجود نداشتن یک ساختار یکپارچه و مجتمع
با توجه به توضیحاتی که دادیم، نتیجه میگیریم که در روش پایگاهی، اطلاعات به صورت یکپارچه ذخیره میشوند ولی در سیستم فایلینگ فایلهای تعریف شده به صورت مجزا بر روی دیسک ذخیره شده و یک ساختار یکپارچه برای ذخیره آنها وجود ندارد.
-
وجود نداشتن یک سیستم مدیریتی قدرتمند، متمرکز و یکپارچه برای کنترل عملیات
با نبود یک ساختار یکپارچه برای ذخیره اطلاعات، کنترل عملیات قدرتمندی نیز برای سیستمهای فایلینگ وجود ندارد و تنها مرجع کنترل، سیستم فایل از سیستم عامل است که این مورد در سیستم مدیریت پایگاه داده برعکس است.
همچنین بخاطر ممکن نبود استفاده همزمان چندین کاربر از یک فایل در بعضی موارد مجبور هستیم در سیستمهای فایلینگ یک فایل را در چندین محل مختلف ذخیره کنیم و این یعنی افزونگی دادهها که علاوه بر مصرف فضای اضافی بر روی دیسک، مشکلات دیگری هم بهوجود میآید.
مساله دیگری که باعث افزونگی دادهها میشود مجزا بودن ساختار فایلهاست که نمیتوان بین آنها ارتباط برقرار کرد به همین خاطر اگر نیاز به استفاده از یک بخش فایل نسبت به بخش دیگر باشیم، مجبوریم آنها را در بخش مورد استفاده دوباره داشته باشیم.
-
عدم امنیت دادهها و امکان استفاده افراد غیر مجاز از دادهها
مهمترین مساله در هر حوزه کاری بحث امنیت آن است که دنیای پایگاه داده نیز از این قاعده مستثنی نیست. یکی دیگر از ضعفهای سیستم فایلینگ عدم امنیت اطلاعات کاربر در آنها میباشد. در صورتی که این عامل در سیستمهای مدیریت بانک اطلاعاتی به خوبی مدیریت میشود.
کارهایی که یک سیستم اطلاعات بانکی برای این منظور به کار میبرد عبارت است از:
-
استفاده از روشهای رمزگذاری پیشرفته بر روی اطلاعات و امکان سطوح دسترسی مختلف برای کاربران
-
دارا بودن امکانات ویژه برای پشتیبانگیری دادهها
-
دارا بودن عملیات پشتیبانگیری خودکار برای در اختیار داشتن نسخههای پشتیبان در صورت بروز حادثه
-
اقدام به ترمیم دادهها با استفاده از دادههای پشتیبان و فایل گزارش تراکنشهای صورت گرفته شده بر روی دادهها
-
وجود نداشتن مدیریت تراکنشها
برای مدیریت تراکنشها چهار ویژگی اصلی تراکنش از قبیل: یکپارچگی، همخوانی، انزوا و مانایی باید حفظ شود که سیستمهای فایلیلنگ قادر به انجام آنها نیستند. اما سیستم مدیریت پایگاه داده دارای یک سیستم قوی برای مدیریت تراکنشهاست.
-
وجود نداشتن امکان اشتراکی شدن دادهها
با تعاریفی که تا الان داشتیم معنی این عبارت به خوبی درک میشود که سیستمهای فایلینگ بخاطر عدم استفاده چندین کاربر از فایلها، اشتراکی شدن دادهها بین کاربران مختلف وجود ندارد در صورتی که سیستم DBMS با استفاده از روشهای قفلگذاری پیشرفته، امکان استفاده همزمان کاربران متعدد از دادهها به صورت کاملا کنترلشده فراهم شده است.
-
حجم بالای کدنویسی
مورد بعدی که درباره ضعف سیستمهای فایلینگ وجود دارد کدنویسی برای حتی سادهترین عملیات است. این مورد در سیستم مدیریت پایگاه داده با وجود دستوراتی که دارد، حل شده است.
کلام آخر:
خب دوستان درباره مباحث مهم سیستم فایلینگ در پایگاه داده صحبت کردیم و در انتها به تفاوت این سیستم نسبت به سیستم پایگاه داده پرداختیم. امیدواریم که این مطلب مورد پسند شما دوستان درسمنی قرار گرفته باشد. اما اگر میخواهید توضیحات بیشتری درباره مطلب گفته شده بدانید، پیشنهاد میکنیم که حتما ویدئو ما درباره این موضوع مشاهده و در صورت سوال یا مشکل میتوانید به انجمن پرسش و پاسخ درسمن مراجعه کنید. پیشنهادات و انتقادات خود را در بخش نظرات برای ما ارسال کنید. امید آنکه بیش از پیش موفق و مؤید باشید.
نظرات دانشجویان
با سلام و عرض ارادت خیلی زیاد خدمت استاد پرتلاش آقای عباسی عزیز , و تیم پرقدرت و با انرژی یک پیشنهادی داشتم , اگر ممکن باشه sql server , مفاهیم مربوط به زبان های پرطرفدار مثل python , c# ,c++ javascript و ... رو هم در این آموزش قرار بدید و یک تکنولوژی جذاب به نام container, Docker رو هم قرار بدید که به نظرم خیلی جذاب و کاربردی میشه.
سلام عبدالله جان خیلی از کامنت پر انرژی شما ممنون هستیم، حتما نظر شما رو به استاد عباسی انتقال خواهم داد، از شما بابت ایده و نظر خوبتون ممنونیم.
نظر شما در تصمیم دیگران اثرگذار است.
لطفا برای همراهان درسمن و بهتر شدن دوره نظر خود را بنویسید.