پایگاه داده NoSQL چیست؟
پایگاه دادههای NoSQL (که مخفف Not Only SQL است) به سیستمهای پایگاه داده غیررابطهای گفته میشوند که برای ذخیره و بازیابی دادهها استفاده میشوند. در دنیای امروز، ما نباید همه دادهها را فقط در قالب جدول ذخیره کنیم که دارای طرحهای ثابت از پیش تعریف نشده است. مانند دادههای ایجاد شده توسط کاربر، دادههای موقعیت مکانی GEO، دادههای تولید شده IoT، نمودارهای اجتماعی که نمونههایی از دادههای دنیای واقعی هستند که به صورت نمایی در حال افزایش هستند. در اینجا پایگاه داده NoSQL وارد تصویر میشود. با استفاده از پایگاه داده NoSQL ما میتوانیم اسناد، مقدار- کلید (key-value)، دادههای مبتنی بر گراف را به راحتی و سریعتر ذخیره و بازیابی کنیم. ما به راحتی میتوانیم از عملیات پیچیده joinی SQL جلوگیری کنیم. مقیاسپذیری برای مشکلات دنیای واقعی (برنامههای وب و سازمانهای تجاری) با استفاده از دیتابیسهای NoSQL آسان میشود. انگیزه استفاده از NoSQL، سادگی در طراحی و مقیاسپذیری همتراز را در مواردی که دسترسی به پایگاه دادههای RDMS دشوار است را فراهم کرده است.
انواع پایگاه دادههای NoSQL
Document Databases: این دیتابیس معمولا هر کلید را با یک ساختار داده پیچیده که یک داکیومنت نامیده میشود جفت میکند. اسناد یا داکیومنتها میتوانند شامل جفتهای key-array یا key-value یا حتی اسناد تو در تو باشند. نمونههایی از document NoSQL عبارتند از: MongoDB، Apache CouchDB، ArangoDB، Couchbase، Cosmos DB، IBM Domino، MarkLogic، OrientDB.
ذخیرهسازیهای Key-value: هر آیتم واحد به عنوان یک جفت Key-value ذخیره میشود. ذخیرهسازیهای Key-value سادهترین پایگاه داده در میان همه پایگاه دادههای NoSQL هستند. نمونههایی از Key-value NoSQL عبارتند از: Redis، Memcached، Apache Ignite، Riak.
ذخیرهسازیهای Wide-column: این نوع پایگاه دادهها برای کوئریهای مربوط به دیتابیسهای بزرگ بهینهسازی شده است، و به جای ردیفها، ستونهای داده را در کنار هم ذخیره میکنند. نمونههایی از Wide column NoSQL عبارتند از: Cassandra، Hbase، Scylla.
ذخیرهسازیهای Graph: اینها اطلاعات مربوط به گرافها (نمودارها)، شبکهها، از قبیل اتصالات اجتماعی، نقشه راهها، پیوندهای حمل و نقل را ذخیره میکنند. نمونههایی از Graph NoSQL عبارتند از: Neo4j، AllegroGraph.
بهترین پایگاه دادههای NoSQL برای سال 2020
MongoDB .1
MongoDB در میان پایگاه دادههای NoSQL مشهورترین مورد است. این یک پایگاه داده Open-Source است که مستند محور است. MongoDB یک پایگاه داده مقیاسپذیر و قابل دسترس است. این پایگاه داده در C++ است. همچنین میتواند به عنوان فایل سیستم نیز مورد استفاده قرار گیرد. در MongoDB، جاوااسکریپت میتواند به عنوان زبان کوئری استفاده شود. در فریمورکهای محبوب جاوااسکریپت بسیار سودمند است. مردم واقعا از ویژگیهایی مثل sharding (تقیسمبندی)، جستجوی پیشرفته متن، gridFS لذت میبرند. عملکرد شگفتانگیز و ویژگیهای جدید آن، این پایگاه داده NoSQL را در جایگاه اول لیست قرار میدهد.
مزایای MongoDB
تنظیم آسان MongoDB
MongoDB Inc. پشتیبانی حرفهای را به مشتریان خود ارائه میدهد
پشتیبانی از کوئری ad-hoc
پایگاه داده پر سرعت
پایگاه داده با طرح (Schema) کمتر
پایگاه داده افقی مقیاسپذیر
عملکرد بسیار بالا
معایب MongoDB
از joinها پشتیبانی نمیکند
اندازه دادهها زیاد است
تو در تویی داکیومنتها محدود است
استفاده غیرضروری از حافظه را افزایش میدهد
2. Cassandra
Cassandra در فیسبوک برای جستجوی اینباکس توسعه یافت. Cassandra یک سیستم ذخیرهسازی داده توزیعشده برای پردازش مقادیر خیلی بزرگ از دادههای ساختیافته است. به طور کلی، این دادهها در بسیاری از سرورهای commodity (سازگار، همهمنظوره، استاندارد) گسترش مییابند. همچنین میتوانید به سادگی ظرفیت ذخیرهسازی دادههایی که بر روی سرور به صورت آنلاین نگه میدارید را اضافه کنید. از آنجا که همه گرهها (node) در یک کلاستر مشابه هستند، هیچ پیکربندی پیچیدهای برای سر و کار داشتن با آنها وجود ندارد. Cassandra در جاوا نوشته شده است. زبان کوئرینویسی Cassandra شبیه زبان SQL است. در نتیجه Cassandra در رتبه دوم بهترین پایگاه دادههای open source قرار میگیرد.
مزایای Cassandra
بسیار مقیاسپذیر است
با سایر برنامههای مبتنی بر JVM به خوبی ادغام میشود
مناسب برای deploy کردن مرکز دادههای متعدد است
مناسب برای بازیابی اطلاعات در هنگام وقوع حادثه است
معایب Cassandra
پشتیبانی محدود از تراکم
عملکرد غیر قابل پیشبینی
از کوئری ad-hoc پشتیبانی نمیکند
3. Redis
Redis (Remote Dictionary Server) از نوع ذخیره key-value (مقدار-کلید) است. علاوهبراین، معروفترین نوع key-value میباشد. Redis از C++، PHP، Ruby، Python، Perl، Scala و غیره پشتیبانی میکند. با زبان C ترکیب شده است. علاوهبراین، تحت BSD مجاز شده است. مساله جالبی که در مورد این پایگاه داده وجود دارد این است که میتواند تا 2 به توان 32 کلید را مدیریت کند و در عمل مورد آزمایش قرار گرفته است تا حداقل 250 میلیون کلید را در هر نمونه مدیریت کند.
مزایای Redis
نصب آسان
خیلی سریع است
دارای ابزارهای چند منظوره است
دارای عملیات اتمی است
معایب Redis
از joinها پشتیبانی نمیکند
مجموعه دادهها باید به راحتی در حافظه جا بگیرند
4. HBase
HBase یک پایگاه داده توزیعشده و غیر رابطهای است که توسط گوگل برای پایگاه داده BigTable طراحی شده است. یکی از اهداف اصلی HBase میزبانی از میلیونها سطر در میلیونها ستون است. برای افزایش ظرفیت میتوانید سرورها را در هر زمان اضافه کنید. HBase با جاوا 8 ترکیب شده است.
مزایای HBase
جستجوی سریع را برای جداول بزرگ انجام میدهد
دارای Java API آسان برای کلاینت است
دارای Auto-sharding است
لایسنس رایگان
مجموعه دادههای بزرگ را بر روی ذخیره فایل HDFS مدیریت میکند
در طراحی schema انعطافپذیر است
دارای سرعت بالا است
معایب HBase
از transaction پشتیبانی نمیکند
مجوز یا احراز هویت داخلی ندارد
ایندکسگذاری و مرتبسازی فقط بر روی کلید را ندارد
از ساختار SQL پشتیبانی نمیکند
دارای مشکلات حافظه در کلاستر است
5. Neo4j
Neo4j به عنوان یک پایگاه داده مبتنی بر گراف بومی مورد مراجعه قرار میگیرد، زیرا مدل گراف را تا سطح ذخیرهسازی به طور موثر پیادهسازی میکند. این بدان معناست که دادهها دقیقا همان طور که شما آنها را بر روی وایتبرد قرار میدهید ذخیره میشوند و پایگاه داده برای حرکت و پیمودن گراف از اشارهگر استفاده میکند.
مزایای Neo4j
گرههای مجاز را به آسانی بازیابی میکند یا بدون join و ایندکس با جزئیات ارتباط برقرار میکند
یادگیری دستورات زبان کوئری Neo4j آسان است
برای بازیابی دادهها نیازی به joinهای پیچیده نیست
دسترسی بالا برای سازمانهای بزرگ در برنامههای واقعی
معایب Neo4j
از Sharding پشتیبانی نمیکند
6. Oracle NoSQL
اوراکل پایگاه داده NoSQL را با Oracle NoSQL شروع کرده است. در سال 2018 محبوبیت زیادی پیدا کرد، اما در مقایسه با پایگاه دادههای MongoDB و Casandra محبوبیت کمتری دارد.
مزایای Oracle NoSQL
بر اساس ساختار برنامهنویسی PL/SQL است
جامعه خوبی دارد که برای حل مشکلات کمککننده است
پایگاه داده اوراکل امن است و اطمینان حاصل میکند که دادههای کاربر با آپدیتهای سریع دستکاری نمیشوند
معایب Oracle NoSQL
هزینههای بالا برای سازمانهای کوچک
برای نصب نیاز به منابع قابل توجهی دارد
برای پیادهسازی اوراکل ممکن است به ارتقاء سختافزار نیاز داشته باشد
فضای زیادی را اشغال میکند
7. Amazon DynamoDB
DynamoDB از یک مدل پایگاه داده NoSQL استفاده میکند، که غیر رابطهای است. هر کوئری DynamoDB توسط یک کلید اصلی که توسط کاربر شناسایی میشود اجرا میشود، که به صورت منحصربهفرد هر آیتم را مشخص میکند.
مزایای DynamoDB
تنظیمات آسان
یک AWS DynamoDB API سطح پایین ارائه میدهد
مقیاسگذاری خودکار
پیچیدگی مدیریت دسترسی بالا و مقیاسگذاری در زمانهای اوج مصرف را کاهش میدهد
امنیت DynamoDB توسط AWS Identity مدیریت میشود
معایب DynamoDB
از جداول به صورت رایگان نسخه پشتیبان تهیه نمیکند
دارای حد مجاز است
8. Couchbase
تمرکز آن بر روی سهولت استفاده و در بر گرفتن وب است. این یک پایگاه داده مستندات NoSQL برای برنامههای وب تعاملی است. دارای یک مدل انعطافپذیر بوده و به راحتی قابلیت مقیاسگذاری را دارد.
مزایای Couchbase
بهینهسازی متراکم
هزینه شبکه، حافظه و ذخیرهسازی را کاهش میدهد
دارای پنل ادمین عالی است که دیدگاههای زیادی را در مورد نحوه عملکرد کلاستر ارائه میدهد
معایب Couchbase
Couchbase منبع باز (open source) نیست
9. Memcached
Memcached یک پایگاه داده open source، با کارایی بالا، سیستم حافظه کشینگ توزیعشده است که به برنامههای وب پویا با کاهش بار سرعت میبخشد.
مزایای Memcached
نصب سریع
با جامع عظیمی به طور گسترده مستندسازی شده است
معایب Memcached
فقط در سیستم عاملهای لینوکس و سیستمهای مشابه BSD پشتیبانی میشود
از افزونگی داده پشتیبانی نمیکند
از CAS و قفل کردن پشتیانی نمیکند
10. CouchDB
CouchDB یک پایگاه داده NoSQL منبع باز است که از JSON برای ذخیرهسازی اطلاعات و جاوااسکریپت به عنوان زبان کوئری استفاده میکند. این پایگاه داده نوعی سیستم کنترل چند نسخهای برای جلوگیری از انسداد فایلهای پایگاه داده در حین نوشتن اعمال میکند.
مزایای CouchDB
Map/Reduce، کوئری داده تا حدودی از خود داده جدا شده است
هر داده JSONای را ذخیره میکند
معایب CouchDB
کوئریهای اختیاری پر هزینه هستند
از XML پشتیبانی نمیکند
نظرات کاربران در رابطه با این دوره