پایگاه داده چیست؟ انواع پایگاه داده SQL و NoSQL

پایگاه داده چیست؟

پایگاه داده یا بانک اطلاعاتی یا دیتابیس به مجموعه ای از اطلاعات با ساختار منظم و سازماندهی شده  گفته می شود. این پایگاه های اطلاعاتی معمولاً در قالبی که برای دستگاه ها و رایانه ها قابل خواندن و قابل دسترسی باشند ذخیره می شوند. هر پایگاه داده یک یا چندین موجودیت را توصیف می کند. به عبارت دیگر هر پایگاه داده از یک یا چند جدول برای توصیف موجودیت ها و یا روابط بین موجودیت ها تشکیل شده است. ارتباط بین مدیر پایگاه داده و پایگاه داده از طریق DBMS مخفف Database Management System یا سیستم مدیریت پایگاه داده برقرار می شود. DBMS دستورات را از طریق Structured Query Language مانند SQL دریافت کرده و آن ها را در پایگاه داده اجرا می کند. پایگاه داده نسخه های مختلفی دارد، نسخه ای که برای وب مورد استفاده قرار می گیرد معمولا MySql است. نسخه مورد استفاده در موبایل ها Sqlite و ... که از این طریق می توان اپلیکیشن موبایل و یا وب سایت داینامیک ایجاد کرد.

هر پایگاه داده از قسمت های مختلفی تشکیل شده است که برای درک بهتر مفهوم پایگاه داده، آنها را شرح خواهیم داد.

  • بیت: کوچکترین واحد حافظه است که می توان یکی از ارقام دو دویی را در آن ذخیره کرد.
  • بایت:  به مجموعه بیت ها بایت گفته می شود. هر بایت از هشت بیت تشکیل می شود که معرف یک کاراکتر است.
  •  کاراکتر: اساسی ترین واحد منطقی داده کاراکتر است که می تواند مشاهده و دستکاری شود و شامل حروف الفبا، اعداد یا علائم خاص است.
  • فیلد: به مجموعه ای از چند فیلد به هم مرتبط که یک فقره اطلاع راجع به فرد، موضوع یا کالایی را ارائه کند، فیلد گفته می شود.
  • رکورد: از ترکیب چند فیلد مرتبط به هم یک رکورد یا سابقه اطلاعاتی تشکیل می شود.
  • فایل: مجموعه ای از رکورد های بهم مرتبط، یک فایل یا پرونده اطلاعاتی را به وجود می آورد که می تواند مربوط به یک برنامه کاربردی خاص باشد.
  • جدول: جداول مهمترين عناصر سيستم های پايگاه داده هستند، که برای ذخيره و نگهداری سازمان يافته اطلاعات مورد استفاده قرار می گيرند .هر دیتابیس میتواند شامل چندین جدول باشد، داده ها در دیتابیس داخل Table ها ذخیره میشوند . هر جدول دارای سطر و ستون هایی است. برای هر ستون با توجه به کارکرد آن ،نوع تعیین میشود.

شاید این سوال برای ما هم پیش بیاید که در پروژه های بسیار بزرگ از چه پایگاه داده ای برای ذخیره و بازیابی اطلاعات استفاده می کنند؟

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

انواع پایگاه داده

پایگاه های داده SQL

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

در واقع SQL بسیار پایدار و مناسب برای داده های ساختاریافته میباشد. اما در مورد ذخیره سازی داده های بسیار بزرگ و بدون ساختار (non-structure), ناگهان نقاط قوت آن به نقاط ضعف تبدیل میشوند و کار با این داده ها در SQL باعث محدود شدن قابلیت ذخیره سازی اطلاعات و کاهش چشمگیر سرعت و عملکرد میگردد.

پایگاه های داده NoSQL

با پیشرفت تکنولوژی طی سالیان اخیر نیاز به پردازش و ذخیره سازی بهینه تر , سرعت بالا و عدم امکان استفاده از جداول (Table) در بسیاری از پروژه های بزرگ احساس میشد. از طرفی ذخیره سازی حجم بالایی از داده های بدون ساختار (non-structured data) در دیتابیس های SQL باعث افت شدید سرعت و کارایی پایگاه داده میگردد. از این رو تکنولوژی جدیدی به نام NoSQL با اهدافی متفاوت ارائه شد. هدف اصلی NoSQL ذخیره سازی و کار با داده های بدون ساختار و حجیم میباشد.

  • خلاء ایجاد شده توسط نقاط ضعف SQL در کار با داده های حجیم باعث ایجاد و توسعه NoSQL شد.

NoSQL قابلیت مدیریت و کار با داده های بسیار حجیم را داراست. نکته ایکه در مورد NoSQL اهمیت دارد این است که در این نوع از پایگاه داده، برای کار با داده ها به جای استفاده از زبان SQL، از XML یا JSON استفاده میگردد.

از آنجایی که NoSQL باید بتواند انواع مختلف داده های بدون ساختار مشخص را ذخیره کند، در ساختار داخلی آن از Schema پویا و قابل تغییر  یا  Dynamic Schema استفاده شده است. این خصوصیت امکان تغییر در ساختار ذخیره سازی داده ها را فراهم کرده و انعطاف فراوانی به دیتابیس در کار با داده های گوناگون و حجیم میدهد.

با این حال از نقاط ضعف NoSQL میتوان به عدم امکان کار با کوئری های پیچیده اشاره کرد. همچنین به نسبت دقت بالای SQL در NoSQL امکان بروز خطاهایی با احتمال بسیار پایین در موقع ثبت و تغییر داده ها وجود دارد.

انواع مختلف NoSQL

دیتابیس های NoSQL کلید و مقدار

در اینگونه دیتابیس ها از یک کلید (Key) که نقش شناسه هر داده را بازی میکند به منظور دریافت و ذخیره سازی داده (Value) استفاده میشود که به علت سادگی عملکرد، پر استفاده ترین نوع دیتابیس های NoSQL میباشد.

دیتابیس های NoSQL اسناد

اینگونه دیتابیس ها به منظور ذخیره سازی و کار با اسنادی با فرمت های XML, JSON , … به کار میروند. از دیتابیس های اسنادی NoSQL به منظور ذخیره سازی داده های بدون ساختار مشخص با پراکندگی بالا استفاده میشود.

دیتابیس های NoSQL چند ستونه

دیتابیس های چند ستونه در نگاه اول همانند دیتابیس های SQL از جدول و ستون و سطر استفاده میکنند. اما عملکرد آن های ارتباطی به جداول SQL ندارد! فقط ظاهر جداول آن ها تا حدی شبیه ساختار جداول SQL میباشد. بر خلاف SQL هر ستون میتواند شامل داده هایی با فرمت و ساختار متفاوت باشد. به عبارتی دیگر نوع تعریف و فرمت یک ستون میتواند در هر سطر متفاوت باشد. این دیتابیس ها انعطاف بسیار بالایی در ثبت و کار با داده های بسیار عظیم و متفاوت دارند.

دیتابیس های NoSQL گرافی

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

graph - گراف

دیتابیس های NoSQL متغیر یا چند مدله

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

NoSQL جایگزین کامل SQL نیست!

باید دقت داشت که NoSQL و SQL هر کدام کاربردهای متفاوتی دارند. همانطور که گفته شد SQL دقت بالاتری در هنگام کار با داده های کوچک دارد و برای کار با داده های ساختاریافته طراحی شده است. در حالی که NoSQL برای کار با داده های کلان و بدون ساختار مشخص طراحی شده است.

مزایای استفاده از NoSQL

اولین و مهم‌ترین مزیت، عدم طراحی شمای (الگو) خاص برای داده هاست و در این سیستم داده‌های ورودی می‌تواند هر موقع تغییر نوع پیدا کرده و سیستم باید خودش را با آن تطابق دهد. دومین مزیت قابلیت چند بخشی شدن خودکار و تشخیص هوشمند یکپارچگی بوده که در SQL طراح باید چند سرور بودن را در طراحی خود حتماً لحاظ می‌کرد و بر طبق آن شمای پایگاه داده را پیاده‌سازی می‌کرد ولی در سیستم NoSQL چند سرور بودن بخاطر هوشمندی و بالا بودن سطح سیستم هیچ مانعی برای ادامه کار ندارد. سومین مزیت هم که در سیستم قبلی حرفی از آن زده نشده بود وجود Cache برای افزایش سرعت بازیابی اطلاعات می‌باشد که همانند پردازنده در مواجه شدن با منابع مشابه و یکسان که آن‌ها را در Cache نگهداری می‌کرد در سیستم NoSQL هم داده‌های پراستفاده در Cache نگهداری می‌شوند. پس استفاده از NoSQL باعث افزایش سرعت در طراحی و اجرای پایگاه داده شده و همچنین محدودیت‌های قالب قدیمی را از میان برمی‌دارد که بیشتر مورد نیاز دنیای امروز و آینده اطلاعات و داده‌ها می‌باشد.

شرکتهای بزرگ اینترنت از جمله گوگل (BigTable)، آمازون (Dynamo)، لینکدین (Project Voldemort)، فیس بوک (Cassandra و HBase) سورس فورژ (MongoDB)، اوبونتو (CouchDB) طراحی و راه اندازی گروه پایگاه‌های داده NoSQL را بر عهده دارند. 

چرا سازمان ها نیاز به مهاجرت به NoSQL دارند؟

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

چنین امری سازمان ها را ملزم به بروزرسانی سیستم های سنتی مدیریت دیتابیس (DBMS) به سیستم های نوینی میکند, که امکان بررسی و آنالیز داده هایی عظیم که هر لحظه افزوده میشوند را داشته باشد.

همچنین بسیاری از داده هایی که سازمان ها با آن سر و کار دارند داده های بدون ساختار مشخص هستند و امکان تعریف تعداد بسیار زیادی جدول و فیلد در دیتابیس های SQL غیر منطقی به نظر میرسد. در نتیجه استفاده از تکنولوژی های پیشرفته ای مانند NoSQL باعث از بین رفتن محدودیت های فنی ذخیره سازی داده ها و اطلاعات میشود.

مهاجرت از SQL به NoSQL گرچه فرایندی سخت و هزینه بر میباشد, اما با تشخیص صحیح مدیر دیتابیس باعث بهینه تر شدن عملکرد چشمگیر سیستم های اطلاعاتی میشود. قابلیت توسعه و پایداری بالای NoSQL در کار کردن با حجم داده های بالا, با SQL قابل قیاس نیست.

معرفی برخی از دیتابیس های NoSQL

  • Aerospikeاگر به دنبال دیتابیس Key-value بسیار قدرتمند برای کلاسترینگ میگردید aerospike گزینه مناسبی میباشد. این دیتابیس از لحاظ حجم پردازش داده  و سرعت بالاترین رتبه را در Benchmark بدست آورده است. ذخیره سازی اطلاعات در این دیتابیس به صورت ادغامی از Ram و SSD صورت میگیرد.
     
  • Redis: یک دیتابیس Key-value که برای حجم کار کوچکتر به نسبت aerospike مناسب میباشد. تمامی اطلاعات این دیتابیس در Ram ذخیره میشوند. این دیتابیس قابلیت کلاستر شدن ندارد!
     
  • MongoDB: مونگو معروف ترین دیتابیس NoSQL است و برای ذخیره سازی اسناد (Documents) استفاده میشود. اگر نیار به ذخیره سازی حجم بالایی از داده های مختلف و پراکنده را دارید مونگو گزینه مناسبی برای شماست. کار کردن با مونگو به نسبت ساده است و اگر قصد شروع کار و آشنایی با NoSQL ها را دارید شخصا آن را پیشنهاد میکنم.
     
  • Cassandra: این دیتابیس از قوی ترین دیتابیس های NoSQL میباشد و توسط Apache ارائه شده است. دیتابیس Cassandra در دسته Wide-column قرار دارد. قابلیت های بسیار خاص و بالا, Cassandra را از بسیاری از NoSQLهای دیگر برتر میکند. گرچه سرعت پردازش Aerospike از Cassandra بیشتر است اما قابلیت های فراوان و انعطاف بالای Cassandra به عقیده بسیاری آن را قدرتمندترین NoSQL کرده است.
     
  • Neo4j: دیتابیسی بر پایه گراف (Graph) که برای ذخیره سازی ساختمان داده های مختلف شبکه ای و داده های ارتباطی بسیار مناسب میباشد.
     
  1. sanaz
    ممنون از مطلب خوبتون . این مطلب هم راجع به محبوب ترین DataBaseها در جهان است. بد نیست با دوستان به اشتراک بگذارید. http://ably.ir/Post/3799/what-is-the-most-popular-database-in-the-world/-1
  2. majid
    خیلی خوب بود مطالب مفیدی بود ممنون

ثبت نظر جدید