به نظر میرسد که هر وقت از No-SQL صحبت میکنیم وارد یک بحث مدرن میشویم. و واقعیت هم همین است. با وجود آنکه این سیستمها تاریخچه نسبتا طولانی دارند اما در سال ۲۰۰۹ اولین جنبشهای خود را آغاز کردند. فلسفه اصلی این سیستمها هم طراحی یک دیتابیس به شکلی غیر از حالت رابطهای است. دیتابیسهای No-SQL اغلب در طراحی منعطفتر عمل میکنند، فرایند مقیاسپذیری آنها سادهتر است و موجودیت بالاتری نسبت به دیتابیسهای قدیمی دارند.
علارغم آنکه دیتابیسهای رابطه از یک شکل ثابت پیروی میکنند اما دیتابیسهای No-SQL در قالبهای مختلفی استفاده میشوند. برخی از آنها به صورت key-value عمل میکنند و برخی دیگر مبتنی بر سند هستند. حتی برخی اوقات دیتابیسهای No-SQL را مشاهده میکنیم که به صورت رابطهای عمل میکنند. به همین دلیل است که No-SQL را به Not Only SQL ارجاع میدهند.
مدل Key-Value یکی از مشهورترین مدلهایی است که در دیتابیسهای No-SQL میتوان پیدا کرد. حتی برخی اوقات سیستمهای دیگر که روش ذخیرهسازی متفاوتی دارند براساس همین حالت ساخته میشوند.
در این روش ستونهای دیتابیس شامل یکسری کلید، مقدار و timestamps میباشد. منظور از timestamp المانی است که برای تعیین محتوا معتبر استفاده میشود. Cassandra یکی از گزینههای موجود برای پیادهسازی چنین ساختار بانک اطلاعاتی است.
ذخیرهسازی مبتنی بر سند یکی دیگر از مدلهای دیتابیس No-SQL است که معروفترین پیادهسازی آن MongoDB است. در این ساختار ما یک زبان برای کوئری گرفتن را در اختیار داریم که البته بعضی اوقات این زبان تنها یکسری API ساده برای پیدا کردن محتوا در اسناد است.
یک مدل دیگر از ساختار دیتابیسهای No-SQL دیتابیسهای Graph هستند. بیشتر میتوان این سیستمها را در استفادههایی مانند علوم داده، هوش مصنوعی و... مشاهده کرد چرا که روال نمایش دادهها بسیار واضحتر است. Noe4j یکی از این مدلها برای دیتابیس است.
برخی از پیادهسازیهای No-SQL نیز وجود دارد که مدلهای دادهای مختلفی را با خود به همراه دارند. برای مثال Azure Cosmos DB با داشتن چندین مدل مختلف و ایزوله کردن آنها از همدیگر کار میکند. FaunaDB یکی دیگر از این سیستمهاست که مدلهای دادهای مختلف را با همدیگر به صورت ترکیبی اجرا میکند.
برخی از این سیستمها میتوانند از قابلیت توزیع داده و Automatic Sharding نیز پشتیبانی بکنند. برای مثال Amazon DocumentDB میتواند ۶ نسخه از اطلاعات شما را در سه منطقه مختلف قرار دهد.
در ادامه این مطلب قصد داریم سیستمهایی را به شما معرفی کنیم که جدای از No-SQL بودن قابلیتهای توزیع یافتن و مواردی مرتبط با این تکنیک را نیز ارائه میکنند.
Aerospike
Aerospike یک دیتابیس No-SQL توزیع یافته، مقیاسپذیر، سازگار، بدون Schema و Key-Value است که برای عملیاتهای بزرگ بلادرنگ استفاده میشود. دادهای موجود در این سیستم براساس یکسری Namescpace و bin ساختاردهی میشوند. هر bin از یکسری نوع دادهای پشتیبانی میکند: integer، string، float و… .
Aerospike ایندکسهای اولیه و ثانویه خود را در RAM ذخیره کرده و دادههایش را یا در RAM و یا در حافظه SSD قرار میدهد.
این سیستم یک زبان منحصر به فرد برای کوئری گرفتن نیز دارد که با نام Aerospike Query Language منتشر شده است. در حقیقت AQL یک ابزار مبتنی بر خط فرمان است که ساختاری مشابه با SQL سنتی را ارائه میکند. از طریق APIهایی که ارائه میکند نیز به زبانهای مختلف قابلیت آن را میدهد که به سادگی قابل تعامل باشد.
Amazon DocumentDB
Amazon DocumentDB یک سرویس دیتابیس مبتنی بر سند است که ویژگیهایی مانند سرعت بالا، مقیاسپذیری و موجودیت را ارائه میکند. این ساختار از سیستمهای ساخته شده با MongoDB نیز پشتیبانی میکند. Amazon DocumentDB برای زمانی مناسب است که شما به کارایی و مقیاسپذیری بالایی نیاز داشته باشید. از این سرویس برای عملیاتهایی با دادههای حساس و مهم استفاده میشود.
در این ساختار بحث ذخیرهسازی و پردازش دو مقوله جداگانه بوده و به صورت مستقل از همدیگر مقیاسدهی میشوند. از این رو توسعهدهندگان میتوانند کنترل بیشتری روی جزئیات ساختار ساخته شده داشته باشند. Amazon DocumentDB میتواند ۹۹.۹۹درصد احتمال دسترسی را به شما بدهد چرا که دادههای مورد نظر شما در شش کپی مختلف برای ۶ منطقه زمانی متفاوت که AWS در اختیارتان قرار میدهد ارسال میشود.
Amazon DynamoDB
Amazon DynamoDB یک سیستم دیتابیس مبتنی بر سند و Key-Value است که کارایی بالایی در هر مقیاسی را میدهد. این سیستم به صورت کامل مدیریت شده و امن است. همچنین قابلیت آن را دارد که به سادگی در منطقههای مختلف قرار گرفته و برای افراد متفاوت سرویسدهی کند. DynamoDB میتواند در روز بیشتر از ۱۰ تریلیون درخواست را مدیریت کرده و همچنین در ثانیه ۲۰ میلیون درخواست را پشتیبانی کند.
Azure Cosmos DB
Azure Cosmos DB یک سرویس توزیعیافته جهانی چند-مدله است. در این سیستم شما میتوانید با چهار مدل از مدلهای دیتابیس No-SQL کار بکنید (key-value، column family، document و graph). همچنین این سیستم پنج سطح از سازگاری را ارائه میکند که عبارت است از (Strong، bounded staleness، session، consistent prefix و eventual consistency).
سطح Strong بالاترین نقطه از سازگاری را ارائه میکند اما از آنجایی که هزینه آن زیاد است ۷۰ درصد کاربران این سرویس سازگاری سطح Session را انتخاب میکنند.
برای دسترسی به داده و تعامل با این سرویس مایکروسافت ۵ api مختلف را ارائه کرده که عبارت هستند از SQL، MongoDB-Compatible، Azure Table-compatible، Graph و Apache Cassandra-compatible. از این منظر باید گفت که تقریباً محدودیت شناختی برای استفاده از این قابلیتها وجود نداشته و تقریباً تمام توسعهدهندگان میتوانند از آن استفاده بکنند.
مایکروسافت در ابزارهای داخلی خود نیز از این سیستم دیتابیس استفاده کرده برای مثال سرویسهای Xbox و Skype از این ساختار استفاده میکنند.
CouchDB
Apache CouchDB یک دیتابیس متنباز مبتنی بر سند است که همراه با یک query engine ارائه میشود. در این ساختار برای کوئری گرفتن از Restful API استفاده میشود. CouchDB با استفاده از زبان Erlang توسعه داده شده.
FaunaDB
FaunaDB یک دیتابیس No-SQL با سازگاری بالاست که با عملیاتهای ACID نیز سازگاری داشته و روالی چند-لایه را دنبال میکند. FaunaDB میتواند از مدلهای مبتنی بر سند، گراف و dataset پشتیبانی کند.
MongoDB
MongoDB یکی از شناخته شدهترین سیستمها برای مدیریت بانک اطلاعاتی No-SQL است. این سیستم به صورت متن باز و همچنین به صورت تجاری در اختیار کاربران قرار گرفته است. میتوان این سیستم را به عنوان یک سرویس مبتنی بر ابر مدیریت شده نیز اجرا کنید. این سرویس MongoDB Atlas نام دارد.
مونگودیبی را میتوان محبوبترین سیستم مدیریت بانک اطلاعاتی No-SQL دانست. مدل دادهای مبتنی بر سند آن به توسعهدهندگان انعطافپذیری بسیار بالایی را میدهد. همچنین از آنجایی که معماری این سیستم توزیع یافته است مقیاسپذیری آن نیز ساده است.
در مونگودیبی بجای ذخیره دادهها به صورت JSON از BSON استفاده میشود که مخفف Binary JSON است. البته در نهایت میتوان این حالت را یک نسخه ارتقا یافته از خود JSON دانست.
برای دریافت اطلاعات بیشتر در ارتباط با MongoDB میتوانید دوره آموزشی «آموزش MongoDB» را مشاهده کنید.
Redis
Redis یک سیستم ذخیره ساختارهای دادهای متن باز است که به عنوان سیستم مدیریت دیتابیس، کشینگ و یا Message Broker استفاده میشود. در این سیستم میتوانید از دادههایی مانند رشته، هش، لیست، مجموعه و… استفاده کنید.
نسخه دیگری که از Redis موجود است Redis Enterprise نام دارد که برای کارهای حرفهایتر استفاده میشود. در این سیستم شما میتوانید از مدلهای مختلف دیتابیس استفاده کنید. برای مثال مدل Key-Value، مبتنی بر سند، گراف و… .
برای درک بهتر این تکنولوژی میتوانید دوره آموزشی «آموزش ردیس Redis» را مشاهده کنید.
در پایان
هر کدام از سیستمهای گفته شده را میتوان برای کاربردهای مختلفی استفاده کرد. با این حال در بین این موارد به نظر میرسد که کار با MongoDB سادهتر بوده و همچنین انعطافپذیری مورد نیاز برای انجام کارهای مختلف را به شما بدهد. با این حال نباید از گزینههای دیگر غافل بود.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید