اگر در زمینه برنامه نویسی و مدیریت پایگاههای داده فعالیت میکنید، حتما تا به حال است nosql به گوشتان خورده است و در حال حاضر قصد دارید تا با این مفهوم بیشتر آشنا شوید. به صورت کلی در دنیای برنامه نویسی نیازهای جدیدی برای ذخیره سازی اطلاعات و دادهها به وجود آمدهاند؛ به گونهای که با ظهور انواع دیتابیسهای nosql که قدرتمندتر و انعطاف پذیر تر بودند، دیتابیسهای قدیمی SQL دیگر محبوبیت قبل خود را از دست دادند.
فهرست موضوعات در این آموزش
Nosql چیست و چیکار می کند ؟
در ابتدا بهتر است به سراغ معرفی واژه nosql برویم؛ در حقیقت دیتابیسهای nosql غیر جدولی هستند و نحوه ذخیره اطلاعات در آنها متفاوتتر از جداول رابطهای میباشد. این مدل از پایگاههای داده بر اساس مدل داده، طبقه بندی میشوند و عملکرد اصلی آنها نیز، ارائه مکانیزمی برای ذخیره و بازیابی اطلاعات است.
در حقیقت در این نوع پایگاههای داده سیستم ذخیره سازی اطلاعات و دادهها به جای جدول، از سند هایی برای ذخیره سازی استفاده میکنند که ساختار مشخصی ندارند! این نکته را نیز باید اضافه کرد که nosql در ساختار خود از Schema پویا بهره برده است که باعث میشود تا بتواند راحتتر در ساختار دادهها و اطلاعات مختلف تغییر ایجاد کرده و در نتیجه انعطاف پذیری بیشتری نسبت به دیگر پایگاههای داده داشته باشد.
اصلیترین مشکلی که پایگاههای داده مبتنی بر SQL ناشی از ساختار آنها است. ولی شاید این سوال در ذهن شما ایجاد شده باشد که پایگاههای داده SQL چه نوع ساختاری دارند؟ برای آشنایی بیشتر با ساختار دیتابیسهای SQL به شما پیشنهاد میکنیم که در ادامه با ما همراه باشید.
همچنین بخوانید : cdn چیست
معرفی ساختار پایگاههای داده SQL
اگر تا به حال تجربه استفاده از پایگاههای داده SQL را داشته باشید، حتما از این موضوع مطلع هستید که استفاده از این پایگاههای داده همیشه تابع قوانین خاصی است. به این معنی که شما باید در این پایگاههای داده، یک سری اطلاعات مشخص و یکسان را در جداول مربوط ذخیره سازی کنید. به صورت کلی در زمان ذخیره سازی اطلاعات در پایگاههای داده مبتنی بر SQL باید به سوالات زیر در خصوص هر داده پاسخ دهید:
- چه موجودیتی دارند؟ قصد دارید اطلاعات مورد نظر را در قالب چه دسته بندیهایی ذخیره سازی کنید؟ از جمله برخی از نمونههای موجودیت میتوان به دستههای کاربر، خبر، کامنت و.. اشاره کرد. معمولا هر یک از این دسته بندیها در قالب یک جدول تعریف میشود.
- هر جدول دارای چه ویژگیهایی است؟ چه نوع از اطلاعات مشخصی را میخواهید در پایگاه داده ذخیره سازی کنید؟ این موضوع را به یاد داشته باشید که این ویژگیها نباید متغیر باشند. هر کدام از این ویژگیها و خواص به معنی یک ستون از جدول هستند. برای مثال جدول کاربرد میتواند شامل ستونهای نام، نام خانوادگی، سن، شماره تماس و… باشد و همچنین قرار نیست که تعداد ستونها برای هر کاربری متفاوت باشد!
- هر داده شما شامل چه اطلاعاتی میشود؟ هر کدام از دادههای جدید در قالب یک سطر جدید در جدول مورد نظر ذخیره سازی میشوند. برای مثال به ازای هر کاربر جدید، یک سطر به ستونها اضافه میشود و جدول کاربران تکمیلتر میشود.
- هر جدول شما چه ارتباطی با جدولهای دیگر دارد؟ به عنوان مثال هر کسی میتواند عضوی از یک یا چند کلاس درس باشد و هر کلاس درس نیز میتواند شامل چند مجموعه از کاربران باشد.
تمامی این اطلاعات پایگاه داده شما در SQL با ساختاری به اسم Schema ذخیره سازی میشود. Schema در واقع یک ساختار ثابت است و دقیقا مثل اسکلت اولیه یک ساختمان ساخته شده عمل میکند. هر چیزی که روی این ساختار سوار میشود، بر پایه آن تکمیل میشود. شاید تا به حال پی برده باشید که مشکل اصلی پایگاههای داده SQL در ذخیره سازی اطلاعات بدون ساختار کجاست! در زمان ذخیره سازی این نوع از اطلاعات، ویژگیهای هر داده متغیر است و این موضوع باعث ناکارآمدی و همچنین غیر قابل استفاده شدن SQL خواهد شد.
معرفی پایگاه داده NoSQL
دیتابیسهای NoSQL برعکس نوع SQL از ساختارهای متغیر و غیر ثابت Dynamic Schema بهره میبرند. همین موضوع باعث میشود تا برنامه نویسان دیگری نیازی به ساختاربندی سخت گیرانه اطلاعات پیش از ایجاد پایگاههای داده نداشته باشند! این پایگاههای داده انواع مختلفی دارند و برعکس SQL برای ذخیره سازی دادههایی از XML یا JSON اکثرا مورد استفاده قرار میگیرند. در ادامه با ما همراه باشید تا با انواع دیتابیسهای NoSQL آشنا شوید:
- پایگاههای داده کلید-مقدار (Key-Value Database): در این مدل از پایگاههای داده، اطلاعات مورد نظر در قالب جفتهای کلید-مقدار ذخیره سازی میشوند. کلیدها در واقع همان شناسه هر داده محسوب میشوند. به این معنی که میتوانید با استفاده از این کلیدها، مقادیر مختلفی از اطلاعات را ذخیره سازی کنید. پایگاههای داده کلید-مقدار، به دلیل سادگی بالا، از جمله محبوبترین نوع دیتابیسهای NoSQL به حساب میآیند.
- پایگاههای داده ستونی (Wide-Column Database): شاید فکر کنید که دیتابیسهای ستونی در واقع همان پایگاههای داده رابطهای هستند. ولی این نوع پایگاههای داده فقط ظاهرا با نوع رابطهای شباهت دارند. همان طور که گفته شد در پایگاههای داده رابطهای، تعداد و نوع خصوصیات هر موجودیت و مقدار داخل آن مشخص و کاملا ثابت است. در حالی که در دیتابیسهای ستونی، هر ستون میتواند شامل دادههایی با ساختار و انواع مختلف باشد.
- پایگاه داده سندی (Document Database): در این مدل از دیتابیسها در زمان ذخیره سازی اطلاعات از اسناد JSON یا XML استفاده میشود. پایگاههای داده سندی اکثرا برای ذخیره سازی و همچنین استفاده از دادههای پراکنده و بدون ساختار مورد استفاده قرار میگیرد.
- پایگاههای داده گرافی (Graph Database): در این دیتابیسها برای ذخیره سازی موجودیتها و روابط بین هر کدام از گراف ها استفاده میکنند. پایگاههای داده گرافی در مواردی مورد استفاده قرار میگیرند که نیاز به ایجاد ارتباط بین جداول وجود دارد.
پایگاه داده NoSQL چه مزایایی دارند؟
این مدل از پایگاههای داده مزایای زیادی دارند که آنها برای سیستمهای عظیم و توزیع شده به گزینهای مناسب و منحصر به فرد تبدیل کرده است. به صورت کلی از جمله اصلیترین مزایای استفاده از NoSQL میتوان به موارد زیر اشاره کرد:
- بالا بودن میزان مقیاس پذیری: پایگاههای داده NoSQL به راحتی با روش مقیاس پذیری افقی میتوانند گسترش یابند. این موضوع باعث کاهش میزان پیچیدگی شده و هزینه مقیاس دادن به نرم افزار را کاهش میدهد.
- افزایش کارایی: در سیستمهای بزرگ توزیع شده NoSQL با تکثیر به صورت خودکار اطلاعات NoSQL در تمامی سرورهای دنیا، میزان تأثیر در ارسال پاسخ از طرف سرور را تا حد زیادی کاهش میدهد.
- دسترسی بهتر: در سیستمهای عظیم NoSQL به دلیل کپی شدن به صورت خودکار اطلاعات در سرورهای مختلف، با از دسترس خارج شدن یکی از سرورها، پایگاه داده همچنان قابل دسترس است.
سخن پایانی
در این مطلب سعی کردیم تا پایگاههای داده مبتنی بر SQL و مزایا و ساختار آنها را به شما معرفی کنیم. ولی با این وجود این نوع دیتابیسها معایبی نیز دارند و میتوانند مشکلات و موانعی برای شما ایجاد کنند. برای حل این مشکلات، دیتابیسهای NoSQL وارد عرصه شدند. این نوع از پایگاههای داده میتوانند به راحتی در سیستمهای توزیع مورد استفاده قرار بگیرند و عملکرد آنها را بهبود ببخشند. نظر شما در خصوص استفاده از این دیتابیسهای چیست؟ در بخش نظرات با ما در میان بگذارید.
1 Comment
کاش nosql رو با mysql هم مقایسه میکردی