Sarp
مدیر بازنشسته
مقدمه:
اگر گمان ميکنيد که ديتابيسهاي SQL همه از نوع رابطهاي هستند، بايد بگوييم که اشتباه ميانديشيد. NoSQL يك پايگاه دادهاي غيررابطهاي و توزيع شده است که نيازي به جدول ندارد و ميتواند بهسادگي عمليات Replication را انجام دهد.
پايگاههاي داده رابطهاي در نرمافزارهايي كه دادههاي سنگيني دارند، بازدهي كمي دارند. مثلا براي انديسگذاري تعداد زيادي از سندها يا ارائه صفحههاي اينترنت در وبسايتهايي كه جريان داده بالايي دارند، پايگاههاي داده رابطهاي پاسخگو نخواهند بود و تنها زماني بهدرد ميخورند كه يا دادهها اندك باشد يا درخواست نوشتن و خواندن در ديتابيس زياد نباشد. بهعنوان مثال، پايگاه داده ديگ كه 3ترابايتي است يا پايگاه داده فيسبوك كه براي جستجوي اينباكسهاي كاربران، 50ترابايت داده دارد، همچنين پايگاه داده eBay كه هماكنون به 2پتابايت رسيده است، نميتوانند كار خود را با پايگاههاي داده رابطهاي راه بيندازند.
به همین دلیل است که ديتابيسهاي NoSQL آنجايي جذاب ميشوند که ضعفهاي RDBMS بهچشم ميخورد: اين پايگاههاي داده براي يک کاربر و يک دستگاه و يک عمليات در لحظه ساخته شدهاند. RDBMSها جوابگوي نظام محاسباتي فعلي دنيا نيستند که در لحظه هزارها و ميليونها کاربر ميخواهند به پايگاه دادهاي پر از تصوير و فيلم و داده ديجيتال دسترسي پيدا کنند.
پايگاههاي داده NoSQL نسل جديدي از پايگاههاي داده هستند كه پشت بسياري از وبسايتهاي بزرگ و حجيم قرار گرفتهاند و نوع ديگري از سرويس را نسبت به پايگاههاي داده قديميتر، يعني پايگاههاي داده رابطهاي (Relational) ارائه ميكنند.
در سالهاي اخير، پديده NoSQL به يک جنبش تبديل شد و در بسياري از کشورهاي توسعهيافته، اين شکل پايگاه داده را بهعنوان پايگاه دادهاي مطمئن در اختيار گرفته و استفاده کردند.البته ايده پايگاه داده NoSQL تقريبا 10 سال است که در محافل اينترنتي وجود داشته است.
اين پايگاه داده را دو نام بزرگ پيادهسازي کردهاند و همين باعث جلب توجه به چنين پايگاه دادهاي شده است: آمازون دينامو و گوگل بيگتيبل از ديتابيسهايي هستند که فرزند NoSQL بهشمار ميروند. البته اين پايگاه داده انواع منبعباز مختلفي نيز دارد که ميتوان از ميان آنها به Cassandra ،CouchDB Hbase ،MongoDB Redis ،Riak و CouchDB اشاره کرد.
در معماري NoSQL بحث ثبات دادهها تنها در مورد يك آيتم يا يك تراكنش اعمال شده است. هرچند برخي از سيستمهاي فعلي كاملا قابليت ACID را پشتيباني ميكنند.
سيستمهاي NoSQL داده را با كمك معماري توزيعشده در چندين سرور با افزونگي خاص خود قرار ميدهند. به اين ترتيب سيستم ميتواند با افزوده شدن سرورهاي ديگر، خودش را بزرگ كند و به امنيت و پايداري سيستم كمك كند. برخي از پايگاههاي داده NoSQL حتي رابط سادهاي براي ارتباط با اين ديتابيسها در نظر گرفتهاند و دادهها را بهصورت آرايههاي انجمني ذخيره كرده و دسترسي بهدادهها را سادهتر ميكنند. هجوم كاربريهاي زياد از پايگاههاي داده NoSQL و همچنين استفاده شركتهاي بزرگ از اين نوع پايگاههاي داده، برخي را به اين تفكر واداشته است كه پايگاههاي داده رابطهاي در حال مرگ هستند. اگر بخواهيم پاسخ كوتاه و قطعي بدهيم، بايد گفت بيگمان اين موضوع صحيح نيست. پايگاههاي رابطهاي باقي خواهند ماند و كاري كه ميكنند هم تغيير نخواهد كرد: مديريت دادههاي كلي، ارتباط ساده، سرعت، بازدهي بالا، انعطافپذيري و قابليت گسترش براي كاربران متوسط و كوچك.
هر چند ديتابيسهايي چون SQL Server، اوراكل و مايسهكوئل اين سادگي را مديون پيچيدگي دروني خود هستند. پاشنه آشيل اين بانكهاي اطلاعاتي آنجاست كه نميتوانند بسرعت بزرگ شوند و با حجم بالاي درخواست روبهرو شوند.
اغلب پايگاههاي داده رابطهاي ميتوانند تا حد مناسبي بزرگ شوند و اين عمليات بزرگ شدن در يك سرور بخوبي انجام ميشود، اما وقتي كار به بيش از يك سرور ميكشد، بايد سراغ پيچيدگيهاي خاصي رفت تا بتوان اين ديتابيسها را بين بيش از يك سرور مشترك كرد.
بيايد فرض كنيم كه بيش از صدها يا هزاران سرور براي رشد سريع لازم باشد. پيچيدگي حاصل از اين رشد، غيرقابل توصيف خواهد بود و پايداري و سرعت پايگاههاي داده رابطهاي بهشدت پايين ميآيد و ضعفهاي آنرا براي سيستمهاي توزيع شده بسيار بزرگ نشان ميدهد.
براي چنين سرويسهايي راهحل استفاده از NoSQL است كه غيررابطهاي و توزيعشده هستند و قابليت توسعه افقي دارند. از اينرو شركتهاي بزرگ زيادي همچون گوگل و آمازون از اين پايگاه داده استفاده ميكنند، البته اين شركتها از پايگاه داده خاصي استفاده نميكنند و هر كدام از مدير ديتابيسهاي توليدي خود استفاده ميكنند. بنابراين تفاوت ميان كاربرد پايگاههاي داده رابطهاي و كاربرد پايگاههاي داده غيررابطهاي مشخص شده است. تنها مساله باقي مانده، انتقال به نسل نوين است.يکي از تحليلگران موسسه 451 معتقد است: «NoSQL پايگاه دادهاي است که توسط امثال گوگل، آمازون، فيسبوک و تويتر بهکار گرفته ميشود.» بهگفته او گوگل و ديگر شرکتهايي که نام برده شدند، از NoSQL براي بالابردن بازدهي و ميزان گسترشپذيري سيستم استفاده ميکنند و در مقايسه با ديتابيسهاي سنتي، صرفهجويي زيادي در هزينه و انرژي خواهند کرد.
يکي از توسعهدهندگان پايگاه داده Riak که مشترياني همچون Comcast و Electronic Arts را در کارنامه خود دارد، معتقد است: «دسترسي بالاي پايگاههاي داده NoSQL چيزي است که در ديتابيسهاي سنتي نميتوان آنها را يافت. اين دسترسي بالاست که اجازه خواندن و نوشتن همزمان را بهديتابيس NoSQL ميدهد.» گفتني است Riak در الکترونيکآرتز، بهمنظور ذخيرهسازي اطلاعات هفت ميليون کاربر بازي آنلاين Warhammer در فيسبوک بهکار ميرود که هر نيم دقيقه اطلاعات تک تک کاربران را بهروز ميکند.