معیارهای انتخاب یک بانک اطلاعاتی غیررابطه ای
با توجه به تحولات شگرف در حوزه داده که از آن به عنوان انقلاب داده یاد می شود و تاثیر مستقیم و غیرمستقیم آن بر فضای کاری اکثر بنگاه های اقتصادی ، اغلب سازمان ها به دنبال گزینه های جایگزین دیگری برای زیرساخت رابطه ای سنتی خود می باشند . انگیزه های متعددی در پس این تصمیم وجود دارد که می توان آنها را به دو گروه فنی و غیرفنی تقسیم کرد . به عنوان مثال نیاز به مدیریت داده هایی از نوع غیرساختیافته و یا شبه ساختیافته را می توان از انگیزه های فنی این تصمیم تلقی کرد . از انگیزه های غیرفنی می توان به هزینه بالای مالکیت نرم افزار و سخت افزار بانک اطلاعاتی و همچنین چالاکی و یا سرعت در پیاده سازی اشاره کرد . بنگاه های کسب و کار در تلاش برای تطبیق خود با نیازهای بازار به دنبال بکارگیری روش های چالاک پیاده سازی می باشند تا بتوانند ضمن مدیریت صحیح هزینه ها ، زمان ارایه محصول و یا خدمات جدید به بازار را نیز کاهش دهند .
انگیزه های فوق در خصوص برنامه های عملیاتی و برنامه های تحلیلی وجود دارد . هم اینک ، بسیاری از بنگاه های کسب و کار برای ایجاد و مدیریت محیط کاری تحلیلی خود در حال گذار به هدوب می باشند و به دنبال ایجاد برنامه های عملیاتی آنلاین با یک کلاس جدید از بانک های اطلاعاتی غیررابطه ای موسوم به NoSQL می باشند. انتخاب یک بانک اطلاعاتی NoSQL و جایگزینی احتمالی آن با یک بانک اطلاعاتی رابطه ای به دلیل عدم همسویی مناسب با نیازهای موجود یکی از اتفاقات مهمی است که این روزها در بسیاری از سازمان ها در حال وقوع است . برای این اتفاق می توان علل مختلفی را ذکر کرد . در شکل ۱ به برخی از مهمترین این دلایل اشاره شده است .
بانک های اطلاعاتی NoSQL در مقایسه با بانک های اطلاعاتی رابطه ای از یک طرف دارای نقاط مثبت متعددی نظیر استفاده از یک مدل داده با قدرت انعطاف پذیری بیشتر ، مقیاس پذیری بالاتر و عملکرد بهتر می باشند و از طرف دیگر ، در اکثر بانک های اطلاعاتی NoSQL مواردی نظیر زبان پرس و جو رسا ، ایندکس های ثانویه و سازگاری قوی که می توان از آنها به عنوان فونداسیون اساسی و جاذبه اصلی بانک های اطلاعاتی رابطه ای ذکر کرد ، کم رنگ شده اند.
معمولا از واژه NoSQL در خصوص تمامی بانک های اطلاعاتی غیررابطه ای استفاده می گردد با یک بارمعنایی گسترده تا بتوان تمامی آنها را تحت پوشش این واژه قرار دارد . در ادامه به بررسی پنچ معیار کلیدی برای انتخاب این نوع بانک های اطلاعاتی خواهیم پرداخت و این که چگونه می توان با توجه به نیاز کسب و کار خود یک بانک اطلاعاتی NoSQL را انتخاب کرد . در شکل ۲ ، پنج معیار فوق نشان داده شده است .
معیار اول : مدل داده
یکی از تفاوت های بانک های اطلاعاتی رابطه ای با بانک های اطلاعاتی غیر رابطه ای ، مدل داده است . با این که امروزه شاهد وجود ده ها بانک اطلاعاتی غیررابطه ای می باشیم ولی می توان با صرفنظر کردن از برخی جزئیات ، آنها را به سه گروه عمده تقسیم کرد : Graph Model ، Document Model ، مدل های Key-Value و Wide Column .
مدل Document
در حالی که بانک های اطلاعاتی رابطه ای داده را در سطرها و ستون هایی ذخیره می کنند ، بانک های اطلاعاتی document ، داده را در قالب مجموعه ای از مستندات ذخیره می کنند . این مستندات معمولا از ساختاری شبیه JSON ( برگرفته شده از JavaScript Object Notation ) استفاده می کنند که یک قالب شناخته شده برای پیاده کنندگان است . documents یک روش شهودی و طبیعی برای مدل سازی داده را ارایه می نمایند که به برنامه نویسی شی گرا بسیار نزدیک است . هر سند یک شی است که می تواند شامل یک و یا چندین فیلد باشد . هر فیلد نیز می تواند شامل یک مقدار با یک نوع بخصوص نظیر رشته ، تاریخ ، باینری و یا آرایه باشد. در مقابل توزیع یک رکورد بین چندین ستون و جداول متصل شده به یکدیگر از طریق کلیدهای خارجی، در این مدل هر رکورد و داده مرتبط با آن معمولا با هم و در یک سند ذخیره می گردند . این کار باعث سادگی در دستیابی به داده و در مواردی عدم ضرورت استفاده از عملیات JSON و پیچیدگی تراکنش های چندین رکوردی می گردد.
در یک بانک اطلاعاتی document، توصیف الگو می تواند پویا باشد. به عبارت دیگر ، هر سند می تواند شامل فیلدهای مختلفی باشد .این انعطاف پذیری می تواند خصوصا برای مدل سازی داده غیرساختیافته و پلی مورفیک مفید باشد . همچنین می توان در حین پیاده سازی به سادگی تغییراتی را در مدل داده اعمال نمود. به عنوان نمونه اضافه کردن یک فیلد جدید درون document. علاوه بر این ، بانک های اطلاعاتی document امکانات قدرتمندی جهت query را در اختیار پیاده کنندگان قرار می دهند . امکاناتی که پیاده کنندگان مشابه آن را در رابطه با بانک های اطلاعاتی رابطه ای استفاده می کردند. یک query را می توان با ترکیب هر تعداد فیلد به منظور کار با داده بکارگرفت .
مدل گراف
بانک های اطلاعاتی گراف از ساختار گراف به همراه گره ها ( nodes ) ، لبه ها (edges ) و خصلت ها برای ارایه داده استفاده می نمایند. در واقع ، داده به عنوان شبکه ای از ارتباطات بین عناصر خاص مدل سازی می گردد . با این که ممکن است این گونه به نظر آید که یادگیری و شناخت مدل گراف زمان بر باشد ، ولی استفاده از این مدل برای یک نوع خاص query بسیار مفید و راهگشا خواهد بود. مهم ترین جاذبه این نوع بانک های اطلاعاتی رابطه ای ، تسهیل در مدل سازی داده و حرکت بین روابط موجود است .
مدل های Key-Value و Wide Column
از منظر یک مدل داده ، کلید – مقدار ابتدایی ترین نوع بانک اطلاعاتی غیررابطه ای است . هر آیتم در این گونه بانک های اطلاعاتی به عنوان یک نام خصلت و یا کلید به همراه مقدار مربوطه ذخیره می گردد . این مقدار یا ارزش ، بطور کامل برای سیستم مبهم است . داده را می توان صرفا از طریق کلید پرس و جو کرد . مدل فوق برای ارایه داده پلی مورفیک و غیرساختیافته و عدم تاکید بر روی مجموعه ای از توصیف ها بر روی زوج کلید – مقدار مفید می باشد .
بانک های اطلاعاتی Wide column و یا column family از یک نگاشت چند بعدی توزیعی برای ذخیره داده استفاده می نمایند . هر رکورد می تواند دارای ستون های مختلفی باشد که با رکورد دیگر متفاوت باشد . به منظور دستیابی به گروهی از ستون ها می توان ستون ها را گروه بندی کرد و یا می توان ستون ها را بین چندین گروه ستون توزیع کرد . داده بر اساس کلید به ازای هر گروه ستون بازیابی خواهد شد.
جمع بندی معیار اول : مدل داده
- تمامی مدل های داده اشاره شده دارای انعطاف توصیفی مناسبی می باشند .
- مدل Key-value و Wide-column برای سیستم هایی مناسب می باشند که هدف صرفا بازیابی از طریق کلید اولیه است .
- مدل Documnet وسیع ترین کاربرد را دارد .
- بهره وری مدل Documnet در مقایسه با سایر مدل ها به دلیل نگاشت مستقیم به اشیاء در زبان های برنامه نویسی شی گرا پیشرفته بیش تر است .
- مدل Wide Column امکان دستیابی جزئی تر به داده را نسبت به مدل key value فراهم می نماید ولی دارای انعطاف کمتری نسبت به مدل documnet می باشد .
معیار دوم : مدل query
هر برنامه دارای ملزومات query مختص به خود است . در برخی موارد ، ممکن است دارای یک مدل ساده پرس و جو باشیم که برنامه ها را قادر می سازد صرفا از طریق یک کلید اولیه به رکوردها دستیابی داشته باشند . برای اکثر برنامه ها ، دستیابی به محتویات هر رکورد اطلاعاتی از طریق چندین مقدار کلید بسیار حائز اهمیت است . مثلا اگر در یک برنامه داده مشتریان ذخیره شده باشد ، دستیابی به رکوردهای اطلاعاتی مشتریان بر اساس فیلدهای اطلاعاتی مختلف ( کد مشتری ، کدپستی مشتری ، محل اقامت مشتری ، شخصیت حقیقی و یا حقوقی مشتری و … ) ، قدرت انعطاف برنامه در بازیابی موثر داده مشتریان را نشان می دهد.
یکی از فعالیت های مرسوم در اغلب برنامه ها ، بهنگام سازی رکودها و تغییر یک و یا چندین فیلد اطلاعاتی است . برای پاسخ گویی به این نوع نیازها ، بانک های اطلاعاتی می بایست قادر به پرس و جو از طریق ایندکس ثانویه باشند .بانک های اطلاعاتی غیررابطه ای document یک گزینه مناسب در این زمینه می باشند .
مدل Document
بانک های اطلاعاتی Documnet قابلیت پرس و جو بر روی هر فیلدی درون سند را ارایه می نمایند . برخی محصولات نظیر MongoDB ، دارای مجموعه ای قدرتمند از گزینه های ایندکسینگ می باشند . ایندکس های متنی ، ایندکس های مکانی ، ایندکس های ترکیبی ، ایندکس پراکنده ، ایندکس های TTL ، ایندکس های منحصربفرد نمونه هایی در این زمینه می باشند . علاوه بر این ، برخی از بانک های اطلاعاتی غیررابطه ای Document قابلیت تحلیل داده در محل را فراهم می نمایند .
مدل گراف
این نوع بانک های اطلاعاتی غیر رابطه ای دارای مدل های قدرتمند پرس و جو می باشند تا بتوان به کمک آنها ارتباطات ساده تا پیچیده را بررسی و به نتایج مختلفی در خصوص داده دست یافت . تحلیل های مبتنی بر ارتباطات در این نوع بانک های اطلاعاتی غیررابطه ای بسیار کارآمد است .از بانک های اطلاعاتی گراف به ندرت برای برنامه های عملیاتی همه منظوره استفاده می شود .
مدل های Key-Value و Wide Column
این نوع بانک های اطلاعاتی غیررابطه ای ، قابلیت ارزیابی و بهنگام سازی داده را صرفا بر اساس یک و یا مجموعه محدودی از کلیدهای اولیه ارایه می نمایند . برای پرس و جو بر اساس سایر مقادیر ، کاربران لازم است ایندکس های مختص به خود را ایجاد و نگهداری نمایند . برخی محصولات این گروه از ایندکس های ثانویه حمایت محدودی می نمایند . برای بهنگام سازی در این نوع سیستم ها ، ممکن است به چندین round trips نیاز باشد( یافتن رکورد ، بهنگام سازی آن ، بهنگام سازی ایندکس ). در این نوع سیستم ها ممکن است فرآیند بهنگام سازی بگونه ای پیاده سازی شده باشد که تمامی رکورد بازنویسی کامل می گردد ( صرفنظر از این که یک فیلد مقدارش تغییر کرده باشد و یا تمامی رکورد تغییر یافته باشد ) .
جمع بندی معیار دوم : مدل query
- بزرگ ترین تفاوت بین بانک های اطلاعاتی غیر رابطه ای ، توانمندی آنها در پرس و جو موثر داده است .
- بانک های اطلاعاتی Document ، دارای امکانات قدرتمندی برای پرس و جو داده می باشند . همین موضوع باعث شده است که این گونه بانک های اطلاعاتی غیررابطه ای بتوانند به مجموعه ای متنوع و گسترده از نیاز برنامه های عملیاتی و تحلیلی به خوبی پاسخ دهند .
- با توجه به این که بانک های Key value و Wide column امکان دستیابی به داده را صرفا از طریق یک کلید اولیه فراهم می نمایند ، سرعت آنها زیاد می باشد ولی دارای قدرت محدودی در ایجاد پرس و جو می باشند و اگر قرار باشد که توان ذاتی آنها را دستخوش تحولات اساسی کرد هزینه بیشتری به سیستم تحمیل خواهد شد .
خلاصه
انتخاب یک فناوری و آن هم فناوری مهمی چون بانک اطلاعاتی برای اکثر سازمان ها یک فرآیند حیاتی است که می بایست به درستی تدوین و توسط کارشناسان و متخصصین مربوطه دنبال گردد. به دلایل متعددی که می توان آنها را در دو گروه فنی و غیرفنی تقسیم کرد گرایش به سمت بانک های اطلاعاتی غیر رابطه ای موسوم به NoSQL بیش از گذشته شده است. در این بخش ضمن اشاره به بانک های اطلاعاتی رابطه ای ، تفاوت آنها با بانک های اطلاعاتی غیررابطه ای تشریح گردید . فرآیند انتخاب یک بانک اطلاعاتی غیررابطه ای با توجه به تنوع وسیع آنها می بایست به درستی و مبتنی بر معیارهای علمی باشد . در این مطلب ضمن معرفی پنج معیار کلیدی برای انتخاب یک بانک اطلاعاتی NoSQL ، به دو معیار مهم مدل داده و مدل query اشاره گردید . در بخش دوم به بررسی سایر معیارها خواهیم پرداخت .