امروزه بسیاری از وبسایتها و محیطهای نرمافزاری از پایگاه داده های غیر رابطه ای یا Non-relational database بهجای پایگاه داده های رابطه ای یا Relational database استفاده میکنند. به این پایگاه دادهها بهاصطلاح NoSQL یا Not only SQL نیز گفته میشود.
بهطورکلی از پایگاه دادهپایگاه داده چیست؟ – انواع، مفاهیم و کاربردهاپایگاه داده چیست؟ این مقاله به بررسی این موضوع و همچنین انواع پایگاه داده، کاربردهای پایگاه داده، محبوب ترین پایگاه های داده و اجزای اصلی پایگاه داده پرداخته برای ذخیره دادهها و دسترسی به آنها استفاده میشود. اما خصوصیات بسیار زیادی وجود دارد که پایگاه دادهها را از یکدیگر متمایز میکند. بهعنوانمثال ممکن است یک سازمان اولویتش سرعت دسترسی به دادهها باشد و سازمانی دیگر به دلیل حجم بسیار بالای دادههایی که روزانه ثبت میکند، بهینه سازیالگوریتم های بهینه سازی از سیر تا پیازالگوریتم های بهینه سازی چیست؟ این صفحه عالی توضیح داده که الگوریتم های بهینه سازی چگونه کار می کنند و مهمترین الگوریتم های بهینه سازی را معرفی کرده حجمی پایگاه داده برایش مهمتر باشد، بنابراین باتوجهبه نیازهای ارگانها و شرکتها، یکی از انواع دیتابیسها انتخاب میشود.
انواع پایگاه داده های NoSQL
پایگاه داده های NoSQL به آن دسته از پایگاه دادهها گفته میشود که از فرمهای غیر جدولی برای ذخیره دادهها استفاده میکنند. نحوه ذخیره دادهها در پایگاه داده های NoSQL یکسان نیستند و میتوانند خیلی متفاوت باشند. در لیست زیر 4 تا از مهمترین پایگاه داده های غیر رابطه ای معرفی شدهاند. در ادامه به بررسی هرکدام از این نوعها میپردازیم.
- مخزنهای کلید مقدار (Key-value stores)
- پایگاه داده های مبتنی بر سند (Document-based databases)
- پایگاه داده های مبتنی بر جدول (Column-oriented databases)
- پایگاه داده های مبتنی بر گراف (Graph-Based databases)
پایگاه داده های کلید – مقدار
پایگاه داده های کلید مقدار یکی از سادهترین انواع پایگاه داده های غیر رابطه ای محسوب میشود. هر عنصر درون این پایگاه داده بهصورت یک جفت کلید مقدار ذخیره شده است. تمامی عناصر دارای یک کلید منحصربهفرد هستند که بر اساس آنها میتوان از این پایگاه داده، عناصر را دریافت کرد. دادهها یا همان مقادیر (Values) میتوانند تایپهای ساده مانند رشتهرشته یا String چیست ⚡️ نحوه کار با استرینگ در برنامه نویسیاین مقاله به معرفی رشته (String) یا استرینگ در برنامه نویسی، رشته در پایتون، رشته در C++ و همین طور الگوریتمهای معروف مربوط به رشته ها در برنامه نویسی پرداخته ها (Strings) و اعداد (Numbers) باشند و یا مقادیر پیچیدهتر مثل آرایهآموزش آرایه در ساختمان داده به زبان ساده و از 0 تا 100در این مقاله موارد زیر بررسی شده است : 1- آرایه چیست 2- انواع اندیس گذاری در آرایه 3- انواع آرایه 4- محاسبه آدرس در آرایه 5- محاسبه شماره در آرایه 6- آرایه در برنامه نویسی 7- مزایای استفاده از آرایه و یا ساختمان دادهآموزش ساختمان داده و الگوریتمهر ساختمان داده یک نوع فرمت ذخیرهسازی و مدیریت دادهها در کامپیوتر است، که امکان دسترسی و اصلاح کارآمد آن دادهها را برای یکسری از الگوریتمها و کاربردها فراهم میکند، در این صفحه به بررسی و آموزش ساختمان داده و الگوریتم پرداخته شده است های دیگری باشند. پایگاه دادههای کلید مقدار را میتوان همانند پایگاه داده های رابطه ای (SQL) مانند MySQLmysql چیست؟ بررسی تفاوت مای اس کی یو ال با اس کی یو ال-sqlاین مقاله عالی به معرفی mysql میپردازد، همچنین ویژگی های MySQL، تفاوت MySQL با SQL و سازگاری این پایگاه داده به سایر سرویس ها را مورد بررسی قرار میدهد دید با این تفاوت که تنها از دو ستون کلید و مقدار تشکیل شدهاند. از ویژگیهای این پایگاه داده میتوان به موارد زیر اشاره کرد:
- سادگی: باتوجهبه داشتن تنها یک نوع ساختار کلید مقدار، این نوع پایگاه داده بسیار ساده است و کار با آن آسان است.
- پرفورمنس بالا: پایگاه دادههای کلید مقدار برای ذخیره و دریافت سریع داده بهینه شدهاند.
- مقیاسپذیری: با استفاده از تکنیکهای Sharding و Partitioning، این پایگاه دادهها مقیاسپذیر شدهاند و میتوانند در چند سرور توزیع شوند.
از محبوبترین پایگاه داده های کلید مقدار میتوان به Redis، Riak و Dynamo اشاره کرد.
پایگاه داده های مبتنی بر سند
یکی از انواع بسیار محبوب پایگاه داده های NoSQL که بسیاری از برنامه نویسان جاوا اسکریپتجاوا اسکریپت چیست؟ معرفی زبان برنامه نویسی java scriptزبان برنامه نویسی جاوا اسکریپت چیست و چه کاربردی دارد؟ این صفحه عالی به بررسی مزایای JavaScript پرداخته و مبانی برنامه نویسی جاوا اسکریپت را آموزش داده از آن استفاده میکنند، پایگاه دادههای مبتنی بر سند یا مبتنی بر داکیومنت هستند. در این نوع پایگاه داده ها، دادهها بهجای ذخیرهشدن در ستونها (درون جدول) از Documentها استفاده میکنند. یک سند میتواند JSON باشد، میتواند BSON و یا XMLXML یا زبان نشانه گذاری توسعه پذیر چیست؟ فایل xml چیست؟XML مخفف Extensible Markup Language به معنای زبان نشانه گذاری توسعه پذیر است، در این مقاله عالی سولاتی نظیر فایل xml چیست و کاربرد فایل xml چیست پاسخ داده شده و... باشد. انتخاب داکیومنتها میتواند به نحوی صورت بگیرد که دریافت دادهها متناسب با نوع اپلیکیشن باشد. این کار باعث میشود که تبدیلات کمتری صورت بپذیرد. بهعنوانمثال اگر سند دریافتی از وبها مبتنی بر JSON باشد، استفاده از داکیومنت JSON مناسبترین گزینه خواهد بود.
در پایگاه داده های مبتنی بر سند، گروههایی از سندهای مشابه، درون یک کلکسیون یا Collection قرار میگیرند؛ درست شبیه به جدولها داخل پایگاه دادههای رابطهای؛ بااینحال که این نوع پایگاه دادهها از اسکیما یا شما (Schema) برای ذخیره دادهها استفاده میکنند، اما باتوجهبه ماهیت بدون ساختار بودن پایگاه داده های NoSQL، نیازی نیست که حتماً دادهها را بر طبق اسکیمای ایجاد شده وارد پایگاه کنیم. ویژگیهای پایگاه داده مبتنی بر سند:
- اسکیمای منعطف: اسکیمای سندهای پایگاه داده های مبتنی بر سند، منعطف است؛ به این معنا که قابلتغییر بوده و نیاز به پیروی صددرصدی از آن وجود ندارد.
- ایجاد و دستکاری سریع دادهها: ایجاد داکیومنت بسیار سریع انجام میشود و دستکاری و ایجاد تغییرات در آن بعد از ساختهشدن سند نیاز به فرایندهای بسیار کمی دارد.
- عدم نیاز به کلید خارجی: در این پایگاه داده ها هیچ روابطی بین دو سند یا اسناد وجود ندارد و هر سند بهصورت مستقل فعالیت میکند؛ بنابراین هیچ احتیاجی به کلید خارجی (Foreign key) نداریم.
- فرمتهای گوناگون: پایگاه داده های مبتنی بر سند از انواع مختلفی از فرمتها مانند JSON، XML و... استفاده میکنند.
پایگاه داده های زیادی وجود دارند که مبتنی بر سند هستند. از محبوبترین آنها میتوان به MongoDB، OrintDB، Apache CouchDB و... اشاره کرد.
پایگاه داده های مبتنی بر جدول
پایگاه داده های مبتنی بر جدول یا Column-oriented، از جمله پایگاه داده های غیر رابطه ای هستند که دادهها را درون جدول ذخیره میکنند؛ منتها رکوردها بهجای ذخیره در سطرها، در ستونها ذخیره میشوند؛ بنابراین برای تحلیل تعداد کوچکی از ستونها میتوانید مستقیماً به ستونها دسترسی داشته باشید تا حافظهحافظه در کامپیوتر، همه چیز در مورد حافظه در معماری کامپیوتردر این مقاله به بررسی کامل حافظه در کامپیوتر، انواع حافظه در کامپیوتر، کش، روشهای آدرس دهی کش، نگاشت آدرس و موارد دیگر میپردازیم زیادی بر روی دادههای ناخواسته صرف نشود. پایگاه داده های مبتنی بر ستون برای این امر ایجاد شدهاند که دادهها را بهصورت کارآمد و با سرعت بالا دریافت کنند؛همچنین از پایگاه داده های Column-oriented معمولاً برای ذخیره دادههای حجیم استفاده میشود. از ویژگیهای این نوع پایگاه داده NoSQL میتوان به موارد زیر اشاره کرد:
- مقیاسپذیری: پایگاه داده های مبتنی بر جدول برای مقیاسپذیری افقی یا Horizontal scalability طراحی شدهاند؛ بنابراین میتوان از این پایگاه داده ها برای ذخیره حجم بالایی از داده استفاده کرد.
- متراکمسازی دادهها: از ویژگیهای منحصربهفرد این پایگاه داده ها، وجود انواع تکنیکهای متراکمسازی داده یا Data compression است که نهتنها باعث کاهش حافظه مصرف شده، بلکه باعث افزایش پرفورمنس نیز میشود.
- معماری توزیع شده: پایگاه داده های مبتنی بر جدول معمولاً بهصورت سیستمهای توزیع شده هستند؛ بنابراین میتوانیم مطمئن شویم که ویژگیهای دردسترسبودن (Availability) و دوام (Durability) در آن تضمین شده است.
از محبوبترین پایگاه داده ها در این نوع میتوان به Apache Cassandra، HBase، ScyllaDB، Amazon EMR و CookroachDB اشاره کرد.
پایگاه داده های مبتنی بر گراف
معمولاً از پایگاه داده های مبتنی بر گرافگراف چیست، آموزش گراف از 0 تا 100 توسط دانشجو ارشد صنعتی شریفدر این مقاله تمامی مطالب مربوط به گراف از 0 تا 100 تدریس شده است. مواردی همچون : گراف چیست؟ انواع گراف، گراف همبند، مکمل گراف، گراف کامل، گراف جهت دار، گراف بدون جهت، گراف ساده و ... برای منظورهای خاصی استفاده میشود و جنبه استفاده همه منظوره ندارد. این پایگاه داده ها بر روابط بین عناصر ذخیره شده درون پایگاه داده تمرکز دارد و دادهها را به صورت گره (Nodes) درون پایگاه داده ذخیره میکند؛ همچنین به ارتباطهای بین گرهها، Link یا Relationships گفته میشود که به صورت یال یا Edge ترسیم میشوند. باتوجهبه ماهیت گراف بودن دادهها، از پایگاه داده های NoSQL مبتنی بر گراف برای مسائل بسیار گوناگونی استفاده میکنند. بهعنوانمثال:
- شبکههای اجتماعی: ارتباط بین کاربران، دوستیها و تحلیلهای اجتماعی را میتوانند انجام دهند.
- تشخیص کلاهبرداری: امکان تشخیص الگوهای مشکوک در تراکنشهای مالی وجود دارد.
از ویژگیهای پایگاه داده های مبتنی بر گراف میتوان به موارد زیر اشاره کرد:
- تشخیص ارتباط بین دادهها بهوسیله لینکها راحتتر صورت میپذیرد.
- خروجی پرسوجوها (Query) بهصورت بیدرنگ (Real-time) انجام میشود.
- سرعت و پرفورمنس رابطه مستقیمی با تعداد ارتباطات عناصر موجود در پایگاه داده دارد.
- بهروزرسانی دادهها بسیار آسان است و اضافهکردن گره و یال بسیار سرراست است و نیاز به تغییر عظیمی در اسکیمای موجود ندارد.
OrientDB، Neo4J، AllegroGraph و Stardog از جمله پایگاه داده های معروف مبتنی بر گراف محسوب میشوند.
چرا از پایگاه داده غیر رابطه ای استفاده کنیم؟
پایگاه داده های NoSQL بهصورت گسترده در موارد بسیار زیاد و متنوعی مورداستفاده قرار میگیرند. از دادههای حجیم صنعتهای بزرگ و حساس مانند دادههای مالی و رکوردهای خدمات درمانی گرفته تا ذخیره داده در اسباببازی کودکان. دلایل و موارد مختلفی وجود دارد که باعث میشود از پایگاه داده های NoSQL استفاده کنیم. از مهمترین آنها میتوان به موارد زیر اشاره کرد:
- زمانی که میخواهیم توسعه سریع و چابک (Agile) داشته باشیم.
- برای ذخیره دادههای ساختاریافته و نیمهساختاریافته.
- زمانی که دادههای ما حجیم هستند.
- وقتی از یک معماری استفاده میکنیم که میبایست مقیاسپذیر باشد.
- برای ساخت اپلیکیشنهایی با پارادایمهای مدرن مانند مایکروسرویسها (Microservices) و استریمهای بیدرنگ (Real-time Streaming)
خلاصه
موارد گفته شده تا اینجا برای 4 نوع مختلف پایگاه داده های NoSQL را بهصورت خلاصه در جدول زیر میتوانید مشاهده کنید:
انواع پایگاه داده | مدل داده ای | موارد استفاده | قالب ذخیرهسازی | مثال پایگاه داده |
---|---|---|---|---|
کلید مقدار | جفتهای کلید مقدار | سیستم کشینگ، مدیریت نشستها (Session)، مدلهای دادهای ساده | جفتهای کلید مقدار | Redis، DynamoDB، Riak |
مبتنی بر سند | سندهای مختلف شبیه به JSON | مدیریت محتوا، ایجاد کاتالوگ، ذخیره پروفایل کاربر و... | JSON یا BSON | MongoDB, Couchbase, RevenDB |
مبتنی بر جدول | قالبهای جدولی | داده های Time-series، ورک لودهای تحلیلی | قالبهای جدولی | Cassandra، HBase |
مبتنی بر گراف | گراف (بهصورت گرهها و یالها) | شبکههای اجتماعی، ارتباطات پیچیده، تشخیص کلاه برداری | گرهها و یالها | Neo4j، Amazon Neptune |
جمعبندی
بااینحال که پایگاه داده های NoSQL در طی 10 سال اخیر خیلی بر سرزبانها آمدند؛ اما استفاده از آنها بسیار زیاد شده است و بسیاری از شرکتها این پایگاه داده ها را جایگزین پایگاه دادههای رابطهای کردهاند. پایگاه داده های NoSQL انواع مختلفی دارد که بسته به نوع سازمان و یا هدف از ذخیره داده آنها را انتخاب میکنیم. در این مقاله به بررسی مهمترین نوعهای مقاله پرداخته شد و ویژگیهای هرکدام را بررسی کردیم.
انواع مختلف پایگاه داده های غیر رابطه ای کداماند؟
معماری پایگاه داده ای NoSQL دارای 4 نوع اصلی است که در لیست زیر آنها را مشاهده میکنید:
مخزنهای کلید مقدار (Key-value stores) - پایگاه داده های مبتنی بر سند (Document-based databases) - پایگاه داده های مبتنی بر جدول (Column-oriented databases) - پایگاه داده های مبنی بر گراف (Graph-Based databases)
آیا میتوان از پایگاه داده های غیر رابطه ای بهجای پایگاه داده های رابطه ای استفاده کرد؟
بهطورکلی باید گفت بله، برای ذخیره دادهها میتوان از هر نوع پایگاه داده ای استفاده کرد؛ اما باید جنبههای مختلفی را بررسی کنید تا ببینید آیا نکته مثبتی در این کار وجود دارد یا خیر. بسیاری از شرکتهای بزرگ جهان هستند که هنوز از پایگاه داده های رابطه ای مانند MySQL استفاده میکنند؛ بنابراین الزامی به جایگزینکردن پایگاه داده غیر رابطه ای با پایگاه داده ای رابطه ای وجود ندارد و فقط باید جنبههای مختلف را بررسی کرد.