بخشی از مقاله

بررسی پایگاه داده های NoSql


چکیده

طی چند سال اخیر، پایگاههای داده NoSql توجه زیادی را به سوی خود جلب کردهاند، کـه یکـی از دﻻیـل آن، قابلیـت بینظیـر ایـن پایگاههای داده برای شکوفایی مشاغل تحت وبی است که نیاز به پاسخگویی دادههای در حال رشد کاربران دارند و میتوانند از دادههـای حجیم به خوبی استفاده کنند. پایگاه داده NoSql به چهار گروه کلید مقدار، سند محور، ستونی و گرافی تقسیم می شوند کـه هرکـدام کاربردهای خاص خود را دارند. هدف این مقاله بررسی و مقایسه سه پایگاه داده MongoDB، CouchDB و Hbase می باشد.


واژه های کلیدی: سند محور، ستونی، گرافی، کلید مقدار، NoSql ، MongoDB، CouchDB، .Hbase


-1 مقدمه :

1-1 تعریف پایگاه داده های : Nosql

اصطﻻح NoSql نامی عمومی است که به مجموعهای از پایگاههای داده اطﻻق میشود که از زبان پرسوجوی سـاختیافته 1 SQL یـا مدل داده رابطهای استفاده نمیکنند. گاهی این اصطﻻح را مخفف Not Only SQL میداننـد تـا تأکیـد کننـد کـه طرفـداران انـواع پایگاههای داده غیر رابطهای معتقدند که پایگاههای داده رابطهای سنتی تنها راه موجود برای ذخیرهسازی داده نیستند. همچنین گـاهی به اصطﻻح BigData یا دادههای عظیم را به کار بردهاند تا این گروه از پایگاههای داده را نه بر اساس چیزی کـه نیسـتند (سـازگار بـا (SQL بلکه بر اساس کاری که میکنند (مدیریت مقادیر عظیم داده) تعریف کنند.

به دلیل محدودیتهایی که در پایگاه داده های رابطه ای وجـود دارد نیـاز بـه دیتابیسهـای NoSql افـزایش پیـدا میکنـد. کـه ایـن محدودیتها در مقاله جینگ هانگ و همکاران به صورت زیر بیان شده است :

خواندن و نوشتن کند

به دلیل وجود پیچیدگیهای منطقی پایگاه داده ای رابطه ای، با افزایش اندازه دادهها مشکل بن بست و مشکﻻت مربوط به همزمانی بـه وجود میآید، که این باعث کاهش عملکرد خواندن و نوشتن میشود.

ظرفیت محدود

پایگاه داده رابطه ای موجود، داده های بزرگ را در موتورهای جستجو پشتیبانی نمیکند.

مشکل گسترش

امکان مقیاس پذیری به دلیل وجود ارتباط بین جداول، در دیتابیسهای رابطه ای امکان پذیر نیست.

این محققین ویژگی های پایگاه داده NoSql را به این صورت بیان می کنند :

خواندن و نوشتن سریع دادهها

پشتیبانی از ذخیره انبوه

راحتی توسعه آن

هزینه پایین
و هچنین مقیاس پذیری 1 و توزیعشدگی آسان را از مزیتهای اصلی پایگاه داده های NoSql می دانند که به دلیـل بـاﻻ رفـتن حجـم دادهها در حال حاضر باعث باﻻ رفتن محبوبیت آنها شده است(جینگ هانگ و همکاران،363،.(2011


2-1 انواع پایگاه دادهای : NoSql

به طور کلی پایگاه داده Nosql به چهار گروه کلید/مقدار، سندمحور، ستونی و گرافی تقسیم میشوند. که در اینجا تعریـف کوتـاهی از آنها بیان میشود.

1-2-1 کلید/مقدار :

دادهها در این پایگاه داده به صورت جفت کلید و مقدار ذخیره میشود. سرعت پرس و جوی آن بیشتر از پایگـاه داده رابطـه ای اسـت، یک ساختار سریع و ساده در محیطهای توزیع شده است. مقدار انواع خاصی مانند رشته، عدد صحیح، اعشـاری یـا آرایـه ای از بایتهـا میباشد، در واقع یک شی باینری است که پایگاه داده نیازی به تفسیر آن ندارد. نمونه این سیستم Bigtable است کـه روی سیسـتم فایل گوگل ) ( GFS برای مدیریت داده های حجیم اجرا میشود. از نمونـه هـای دیگـر Memcached و Redis میباشد(سـیلون وبر،3،.(2011


شکل((1-1 جفت کلید/مقدار


2-2-1 ستونی :

پایگاه داده ستونی از جدول به عنوان مدل داده استفاده میکند، اما ارتباطات جدول را پشتیبانی نمیکند. دادهها به طور جداگانـه در ستونها ذخیره میشود و ستونها در فایلهای مشابه که خانواده ستون نامیده میشود، ذخیره میگردد. داده های ذخیره شـدهمعمـوﻻً برای خواندن برنامه های فشرده به کار میرود. Hbase و Cassandra نمونه ای از این دسته هسـتند (روپـالی آرورا و رینکـل رانـی، 141،.(2013

3-2-1 سند محور :

مانند ذخیره کلید/ مقدار است، داده به فرم اسناد به جای جـدول رابطـه ای ذخیـره میشـود. فرمـت داده در اسـناد میتوانـد Json، BSON یا XML باشد. اسناد در مجموعهها ذخیره میشود. معادل سند و مجموعه در دیتابیسهای رابطه ای رکورد (تاپـل) و رابطـه (جدول) است. دیتابیسهای سند محور مانند دیتابیسهای رابطه ای شمای ثابتی را اجرا نمیکند (روپالی آرورا و رینکل رانـی، . (2013 در مقایسه با مدل کلید- مقدار در این مدل مقادیر برای سیستم قابل فهم هستند و میتوان بر روی آنها کوئری اجرا کرد. مزیـت ایـن دیتابیس این است که به دلیل مقادیر خالی برعکس پایگاه داده Sql سربار به وجود نمیآید، چون تنها مقادیری وارد میشود که وجـود دارد. نمونه آن MongoDB و CouchDB میباشد (سیلون وبر،4،.(2011


4-2-1 پایگاه داده گرافی :

در این پایگاه داده ارتباطات مانند RDBMS بیش از حد است، تفاوتی که با دیتابیسهای رابطه ای دارد ایـن اسـت کـه در دیتـابیس رابطه ای تغییر ساختار بسیار سخت میباشد ولی در این نوع دیتابیس میتوان به راحتی ساختار را تغییر داد. مبتنـی بـر تئـوری گـراف هستند، که در آن راس و لبه های متصل به راس وجود دارد. اکثر پایگاه داده گرافی بدون طرح هستند. در دیتابیس رأسهـا موجودیـت و لبهها ارتباطات آنهاست. که برای ذخیره سازی محتوای رأسها و لبهها از لیست هم جواری استفاده میشـود. کـاربرد آن بیشـتر در خدمات مکان یابی هست. مقیاس پذیری افقی دیتابیس گرافی آسان است و برای پـرس و جـو سـاده تـر و ارزانتـر اسـت. FlockDB نمونه ای از پایگاه داده گرافی است. که در توییتر کاربرد دارد (سیلون وبر، 2011 ، .(6

به طور کلی برای بیان ویژگی های پایگاه داده های NoSql تکنیک های مختلفی به کار می رود، یکی از روش هـایی کـه بـرای دسـته بندی پایگاه داده های NoSql به کار می رود استفاده از تئوری CAP میباشد. که در آن سه گوشه اصلی نشانگر ثبـات1، در دسـترس بودن2 و قابلیت بخش بخش سازی3هستند. ثبات در اینجا یعنی همه کﻻینتها همواره به کپیهای مشابه دسترسـی داشـته باشـند، در دسترس بودن یعنی همه کﻻینتها امکان خواندن و نوشتن را داشته باشند و قابلیت بخش بخش سازی نیز بـه معنـای ایـن اسـت کـه سیستم کلی بتواند در تمام بخشهای شبکه فیزیکی کار کند. بر اساس نظریهCAP ، تنها دو ویژگی از ایـن ویژگیهـا در سیسـتمهای واقعی قابل انتخاب هستند و بر همین اساس، برای داشتن هر جفت مشخصه، میتوان دیتابیس مورد نیاز خود را انتخـاب کـرد (جینـگ هانگ و همکاران،364،.(2011

بررسی های سیلون وبر، جینگ هانگ و همکاران به دیاگرام ناتان هورست ( (Nathan Hurst که براساس نظریه CAP طراحی شده است ، اشاره می کند. این دیاگرام برای انتخاب راه حل مناسب به کار می رود که در شکل زیر نمایش داده شده است.

یکی دیگر از مفاهیمی که در دیتابیسها بیان میشود، مفهوم 1 ACIDیعنی اتمیک بودن، سازگار بودن، ایزولـه بـودن و دوام داشـتن یک عملیات است که اطمینان میدهد هر دستور در دیتابیس به طور کامل انجام شده است. از مهمترین مسـائلی کـه در دیتابیسهـای NoSql وجود دارد ، سازگاری دیتابیس زمانی که در سرورهای گوناگون توزیع شده است میباشد (سیلون وبر، 2،.(2011


3-1 مفاهیم و اصطﻻحات :


1-3-1 مقیاس پذیری : مقیاس پذیری به دو صورت عمودی و افقی امکان پذیر است.

1-1-3-1 مقیاس پذیری عمودی :افزایش یا کاهش منابع یک سرور را مقیاس پذیری عمودی میگوییم. به عنوان مثال دو یا چند برابر کردن تعـداد پردازنـدهها، حافظـه اصلی و . … که با این کار عملکرد با افزایش کارایی سرور بهبود میابد (سیلون وبر، 2،.(2011

2-1-3-1 مقیاس پذیری افقی :

افزایش تعداد ماشینهای مجازی و تقسیم بار بین آنها را مقیاس پذیری افقی میگوییم. ﻻزم است نرم افزار مشتری بـا توجـه بـه ایـن تکنولوژی طراحی و پیاده سازی شده باشد. ﻻزم به ذکر است که بهترین نحوه استفاده از فضای رایانش ابری، مقیاس پذیری افقی است، نه عمودی . در پایگاه داده SQL از مقیاس پذیری عمودی استفاده میشود (سیلون وبر، 2،.(2011


2-3-1 فرمت :1 JSON

2 BSONنمایش باینری JSON هست. در MongoDb داده در اسناد به شکل فیلد و مقدار نمایش داده میشود. نام فیلد در دابل کوتیشن و به دنبال آن" :" و سپس مقدار قرار میگیرد. که مقادیر میتواند اسناد ، آرایه یا آرایه ای از اسناد باشـد. جداکننـده بـین هـر جفت کاراکتر " ، " میباشد. شروع و پایان اسناد با کاراکتر " "{} مشخص میشود و آریه هم بین " "[ ] قرار میگیرد (روپـالی آرورا و رینکل رانی، 142،.(2013


3-3-1 تکنیک : Sharding

در sharding اطﻻعات پایگاه داده بین چند نود (سرور) تقسیم میشود و در نتیجه هر سرور اطﻻعات متفـاوتی از سـایر سـرورها دارد. کاربرد اصلی sharding باﻻ بردن ظرفیت ذخیره سازی اطﻻعات در پایگاه داده است ( اینوت تریفان و همکاران ، 350،.(2013


: 3 HDFS 4-3- 1

سیستم فایلی توزیعشده، مقیاسپذیر و قابل حمل4 است که با زبان جاوا برای هادوپ نوشته شده است. این سیستم فایل برای ارتباطات از ﻻیه TCP/IP استفاده میکند. برای از بین بردن محدودیت حجم فایل در HDFS داده به صورت فایل و پوشه سازماندهی میشـود و سپس فایلها به اجزا یک اندازه که بﻻک نامیده میشوند تقسیم شده و سپس در سراسر گره های خوشـه توزیـع میشـود. کـه بـرای کاهش هزینه های جستجو و افزایش کارایی اندازه آن از اندازه استاندارد بیشتر است. (اندازه ایدهآل فایلها مضارب 64 مگابایـت اسـت). این سیستم برای افزایش قابلیت اعتماد، دادهها را در میزبانهای مختلفی تکثیر میکنـد و بـه همـین دلیـل بـه قابلیـت RAID رویمیزبانها احتیاجی ندارد. با مقدار پیشفرض تکثیر 3، دادهها روی سه نود ذخیره میشوند که از این سه نود، دو نود در یک رک و یکـی در رک دیگری واقع شده است. و همچنین برای افزایش سرعت دسترسـی در ایـن سیسـتم فایـل از نزدیـکترین کپـی در رک مشـابه استفاده میشود. به دلیل اینکه در این سیستم فایل عملیات نوشتن هزینه بر است تنها برای خواندن و یا افزودن قابـل دسترسـی اسـت (محول نالین وورا،602،.(2011

: Hadoop 5-3- 1

هادوپ یک فریم ورک نرمافزاری است که کاربردهای توزیعشده با دادههای فراوان را تحت یک مجوز آزاد، پشتیبانی میکند. ایـن فـریم ورک به برنامهها امکان میدهد که با هزاران نود و دادههایی در اندازههای پتابایت کار کنند. هادوپ از مقاﻻت مرتبط بـا سیسـتم Map Reduceگوگل و همچنین سیستم فایل آن (GFS) ، الهام گرفته است (محول نالین وورا،602،.(2011

: MongoDB -2

یک پایگاه داده سند محور، متن باز ، انعطاف پذیر و بدون ساختار است. برای ذخیـره داده هـای حجـیم بـه کـار مـیرود. بـرای توسـعه دهندگان ابر مناسب است . زبـان برنامـه نویسـی آن C++ اسـت و بـرای نوشـتن کـوئری از جـاوا اسـکریپت اسـتفاده میکنـد. در MongoDB مانند هر دیتابیس دادهها به صورت اسناد ذخیره میشود. اسناد MongoDb بـه شـکل بـاینری JSON کـه BSON نامیده میشود، ذخیره میگردد. BSON داده بولین ، رشته ای و عددی و نوع باینری را ساپورت میکند. در دیتابیسهای بدون طـرح اضافه کردن فیلد جدید به سند یا تغییر ساختار موجود راحت است. MongoDB تکنیک Sharding را برای مجموعـه توزیـع شـده در نودهای چندگانه که دارای مقادیر مختلفی هستند ارائه میدهد.

MongoDB همچنین خاصیت تکرار را پشتیبانی میکند، در MongoDB ا ز عملیات پیوند برای ارتباطات استفاده نمیشود که این باعث کاهش هزینه میگردد. اسناد به صورت تو در تو استفاده میشوند که بدون نرمـال سـازی ، افزونگـی داده ایجـاد میشـود، و ایـن مسئله باعث سردر گمی توسعه دهندگان میشود. (روپالی آرورا و رینکل رانی، 142،.(2013 اگر توسعه دهنده میخواسـت یـک برنامـه سریع و انعطاف پذیر وب بسازد MongoDB یک انتخاب درست است. و اگر طراح برنامه نگرانی اصلیاش ارتبـاط بـین داده و داشـتن دیتابیس نرمالی است که از تراکنش ACID استفاده کند. یک پایگاه داده رابطه ای کﻻسیک انتخاب درستی است ( اینـوت تریفـان و همکاران ، 350،.(2013


: CouchDB -3

CouchDB یک پایگاه داده متن باز است که توسط Damien Katz در سال 2005 توسعه یافته است. به زبان Erlang نوشته شده است، این زبان برنامه نویسی طراحی شده امکان پـردازش مـوازی در سیسـتمهای چنـد هسـته ای را بـه وجـود مـیآورد، رکوردهـای CouchDB به صورت سطری ساخته میشود، یک پایگاه داده سند محور است. که اسناد را بدون هـیچ طـرح خاصـی نگـه مـیدارد. سیستم CouchDB به منظور کامل کردن نیاز برنامه نویس وب و برای راحتی پیاده سازی وب سایتهای موازی پویای توزیع شده در مقیاس وسیع، طراحی شده است. به دلیل راحتی کار با آن اصطﻻح ریلکس بودن به آن اطﻻق میشود، در حال حاضـر در پورتالهـای وب BBC مورد استفاده قرار گرفته است ( میکاییل لبن،2،.(2010

CouchDB از پروتکل Http برای ارتباط استفاده میکند، اسـناد در CouchDB بـه وسـیله JSON نوشـته میشـود، و بـه کمـک آدرس اینترنتی خودشان در دسترس هستند، امکان تکرار داده در CouchDB وجود دارد،CouchDB بـرای ارائـه سـرویس دهنـده های وب کاربرد دارد، و چون بدون ساختار است مشکﻻت طراحی دیتابیس در آن وجود ندارد ( میکاییل لبن،4،.(2010

از مهمترین ویژگیهای CouchDB توسعه سریع برنامه های وب است که مقیاس پذیری زمانی را به وجود میآورد و به وسیله اضـافه کردن گره های خوشه ای زمان پاسخ کافی را برای ما فراهم میکند، با توجه به رشد سریع وب سایت محتوای کاربران بیشترمی شـود بنابراین نیاز به توسعه فضای دیسک است و این به مقیاس پذیری فضایی CouchDB اشاره میکند. یـادگیری CouchDB آسـان و برای هر برنامه نویس وب مناسب هست. تحمل پذیر در برابر خطا است. از رابط برنامه نویسی REST FULL API استفاده میکنـد، به کمک این رابط میتوان دادهها رامستقیماً ارسال یا دریافت کرد، یعنی زبان خاصی ﻻزم نیست ( میکاییل لبن،4،.(2010

CouchDB تکنیکهای متداولی که توسط Http ارائه شده است را ایجاد میکند این تکنیکها شامل موارد زیر است :

تکنیک Cashing که باعث افزایش سرعت پرس و جوهـا میشـود، تکنیـک Encription بـرای اطمینـان از صـحت هویـت سـرور و کﻻینت به کار میرود. مکانیزم احراز هویت برای شناسایی یک کـاربر دیتـابیس بـه کـار مـیرود. پروکسـیها - فـایروال ، بـرای اجـازه ارتباطات Http پیکربندی میشود. مجوزها برای مشخص کردن اینکه چه کسی اجازه خواندن یـا بـه روز رسـانی سـند را دارد تعریـف میشود. مدیریت مجوزها در سـطح رکـورد اجرامـی شـود. توابـع Map/Reduce در جـاوا اسـکریپت پیـاده سـازی میشـود. کـه در CouchDB این توابعاصطﻻحاًدید نامیده میشود که امکان تکرار و بازبینی را به وجود میآورد، برای باز بینی پـس از هـر آپـدیت از آی دی که هر سند دارد استفاده میکند. به طور کلی هدف طراحی CouchDB مقیاس پذیری و در دسترس بودن است ( میکاییـل لبن،5،.(2010

در متن اصلی مقاله به هم ریختگی وجود ندارد. برای مطالعه بیشتر مقاله آن را خریداری کنید