طراحان اطلاعات و ارتباطات تارادیس
(با مسئولیت محدود)

021-88852556
021-88443943

برای دریافت مشاوره رایگان و یا سفارش محصولات و خدمات، با ما تماس بگیرید.

پیدایش NoSQL

;
<p>دیتابیسهای NoSQL مکانیسم جدیدی برای نگهداری و خواندن دیتا دارند که اساس کار آنها با RDB ها مختلف است. این دیتابیسها از سال 1960 میلادی وجود داشتند اما تا اوایل قرن بیست و یکم موردتوجه قرار نگرفتند. این مدل دیتابیسها ابتدا توسط شرکتهایی مانند Facebook ،Google و Amazon استفاده شد. NOSQL دیتابیس ها به علت اینکه میتوانند به راحتی از پس دیتاهای با حجم بسیار زیاد برآیند، بسیار در حوزه Data Big استفاده میشوند. </p>

» پیدایش NoSQL

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

دیتابیسهای NoSQL مکانیسم جدیدی برای نگهداری و خواندن دیتا دارند که اساس کار آنها با RDB ها مختلف است. این دیتابیسها از سال 1960 میلادی وجود داشتند اما تا اوایل قرن بیست و یکم موردتوجه قرار نگرفتند. این مدل دیتابیسها ابتدا توسط شرکتهایی مانند Facebook ،Google و Amazon استفاده شد. NOSQL دیتابیس ها به علت اینکه میتوانند به راحتی از پس دیتاهای با حجم بسیار زیاد برآیند، بسیار در حوزه Data Big استفاده میشوند. سیستمهای NoSQL گاهی Not SQL Only نیز خوانده میشوند تا بروی محدود نبودن به SQL و داشتن این زبان تأکید شود. استفاده آسان از آنها، سادگی طراحی از دلایل استفاده ازاینگونه دیتابیسها میباشد.

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

ازجمله بارزترین ویژگی‌های این دسته از پایگاه‌داده‌ها می‌توان به موارد زیر اشاره نمود:

  • مدل داده غیر رابطه‌ای (Non-relational data model):

    محدودیت مدل رابطه‌ای در پشتیبانی از ابر داده‌ها (big data) و داده‌هایی با ساختارهای ترکیب ‌شده (mixed-structured data) یعنی داده‌های ساخت‌یافته (structured)، نیمه ساخت‌یافته (semi- structured) و غیر ساخت‌ یافته (unstructured) یکی از دلایل اصلی معرفی NoSQL بود.

  • طراحی‌شده برای محیط‌های توزیع ‌شده :

    جهش‌های صورت گرفته در توسعه معماری کامپیوتر، پردازش‌های توزیع‌شده و موازی(distributed and parallel processing)، محاسبات ابری(cloud computing) و همچنین نیاز به تکرار(replicate) و توزیع(distribute) داده‌ها میان سرویس‌دهنده‌های متعدد؛ نیاز به یک پایگاه‌داده باقابلیت وسعت پذیری افقی( scale horizontally : scale out) را بیش‌ازپیش روشن می‌ساخت. یعنی پایگاهی که به تواند به‌سادگی و ارزانی با افزودن گره‌های جدید به شبکه‌اش توسعه یابد برخلاف پایگاه‌داده‌های رابطه‌ای که تنها به وسعت پذیری عمودی(scale vertically : scale up) یعنی ارتقا کارایی یک تک گره با افزودن به منابع آن یا با فناوری‌های مجازی‌سازی (virtualization technology)اهتمام می‌ورزند.

  • واسط سطح فراخوانی ساده‌تر :

    واسط سطح فراخوانی(CLI : call level interface) یک استاندارد نرم‌افزاری است که می‌گوید چه طور جستارها از سمت برنامه به سمت DBMS ارسال و چه طور مجموعه‌رکورد(record set) به برنامه مجدداً به‌طور سازگاری برگرد. در برنامه‌های شی‌ءگرا و پایگاه‌داده‌های رابطه‌ای لازم بود تا نگاشت شی رابطه (Object/Relational Mapping) صورت پذیرد.

  • اهمیت کم‌تر به سازگاری داده‌ها :

    پایگاه‌داده‌های NoSQL ای از مدل هم‌روندی و تراکنشی ضعیف‌تری نسبت به ACID بهره می‌برند. خصوصیت ACID به معنای اتمیک بودن(atomic)، سازگاری(consistency)، انزوا(isolation) و پایداری(durability) برای تراکنش‌های پایگاه‌داده، همخوانی داده‌ها در بالاترین اولویت خود می‌دانست. پیاده‌سازی این خصوصیت برای پردازش‌های موازی و پاسخگویی سریع به جستارها کار دشواری بود. پس برای پردازش حجم بالایی از داده در یک محیط توزیع‌شده ناچار به تعدیل خصوصیت ACID بودیم که در پایگاه‌داده‌های NoSQL این امر صورت پذیرفته است. استفاده کاراتر از شاخص‌ها و حافظه اصلی توزیع‌شده: با استفاده از ساختارهای درون‌حافظه ای(in-memory) می‌توان حجم بالایی از داده‌ها را در حافظه اصلی نهان (cache) نمود و با سرعت بالاتری نسبت به دیسک آن‌ها را واکشی(fetch) کرد.

  • شمای منعطف‌تر :


    بی شمایی(schema-less) یا شمای ضعیف(weak schema) در انبار داده‌ها(data warehouse) یک پیشرفت در جستارهای تحلیلی حرفه‌های فاقد عمومیت(ad-hoc business analytics query) به‌حساب می‌آمد که پایگاه‌داده‌های NoSQL ای نیز بدان توجه وافری داشته‌اند.


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


4 رده و گروه عمده بانک‌های اطلاعاتی NoSQL وجود دارند:


1- Key-Value stores: که پایه بانک‌های اطلاعاتی NoSQL را تشکیل داده و اهدافی عمومی را دنبال می‌کنند.


2- Wide column stores: که در شرکت‌های بزرگ اینترنتی بیشتر مورد استفاده قرار گرفته‌اند.


3- Document stores: یا بانک‌های اطلاعاتی NoSQL سندگرا.


4- Graph databases: که بیشتر برای ردیابی ارتباطات بین موجودیت‌ها بکار می‌روند.و در تمام این گروه‌ها، مکانیزم‌های Key-Value به شدت مورد استفاده‌اند.

Key-Value stores:

این نوع بانک‌های اطلاعاتی شامل جداولی از اطلاعات هستند. هر جدول نیز شامل تعدادی ردیف است؛ چیزی همانند بانک‌های اطلاعاتی رابطه‌ای. اما در هر ردیف، یک Dictionary یا آرایه‌ای از اطلاعات key-value شکل را شاهد خواهید بود. در اینجا ساختار و اسکیمای ردیف‌ها می‌توانند نسبت به یکدیگر کاملا متفاوت باشند. در این بین، تنها تضمین خواهد شد که هر ردیف، Id منحصربفردی دارد. از این نوع بانک‌های اطلاعاتی، در سکوهای کاری ابری زیاد استفاده می‌شود.

Wide column stores:

Wide column stores دارای جداولی است که درون آن‌ها ستون‌هایی قابل تعریف است. درون این ستون‌ها که یادآور بانک‌های اطلاعاتی رابطه‌ای هستند، اطلاعات به شکل key-value با ساختاری متفاوت، قابل ذخیره سازی هستند. در اینجا هر ستون، می‌تواند شامل گروهی از ستون‌ها که بر اساس مفاهیم جفت‌های key-value کار می‌کنند، باشد. این نوع بانک‌های اطلاعاتی عموما در سایت‌های اینترنتی بسیار بزرگ و برنامه‌های «Big data» استفاده می‌شوند.

Document stores:

Document stores بجای جداول، دارای بانک‌های اطلاعاتی مختلفی هستند و در اینجا بجای ردیف‌ها، سند یا document دارند. ساختار سندها نیز عموما بر مبنای اشیاء JSON تعریف می‌گردد. بنابراین هر سند دارای تعدادی خاصیت است (چون اشیاء JSON به این نحو تعریف می‌گردند) که دارای مقدار هستند. شاید این نوع اسناد، بسیار شبیه به key-value stores به نظر برسند اما ک مقدار می‌تواند خود یک شیء کامل دیگر باشد و نه صرفا یک مقدار ساده. به همین جهت عده‌ای به این نوع بانک‌های اطلاعاتی، بانک‌های اطلاعاتی Key-value store سفارشی و خاص نیز می‌گویند. این نوع ساختار منعطف، برای ذخیره سازی اطلاعات اشیاء تو در تو و درختی بسیار مناسب است. همچنین این اسناد می‌توانند حاوی پیوست‌هایی نیز باشد؛ مانند پیوست یک فایل به یک سند.

در Document stores، نگارش‌های قدیمی اسناد نیز نگهداری می‌گردند. به همین جهت این نوع بانک‌های اطلاعاتی برای ایجاد برنامه‌های مدیریت محتوا نیز بسیار مطلوب می‌باشند.

Graph databases:

Graph databases نوع خاصی از بانک‌های اطلاعاتی NoSQL هستند که جهت ردیابی ارتباطات بین اطلاعات طراحی شده‌اند و برای برنامه‌های شبکه‌های اجتماعی بسیار مفید هستند.

در واژه نامه این بانک‌های اطلاعاتی Nodes و Edges (اتصال دهنده‌های نودها) تعریف شده‌اند. در اینجا نودها می‌توانند دارای خاصیت‌ها و مقادیر متناظر با آن‌ها باشند.

یکی از معروفترین Graph databases مورد استفاده، Neo4j نام دارد.