نکات مهم در انتخاب Database
اولین گام مهم قبل از شروع ساخت یک بانکاطلاعاتی انتخاب گزینه مناسب است. بانکهای اطلاعاتی رابطهای، غیر رابطهای، گرافمحور، شیمحور، شبکهایمحور و غیره هر یک مزایا و معایب خاص خود را دارند، اما مهم انتخاب گزینهای است که بیشترین همگرایی را با نظریه CAP داشته باشد. نظریه CAP سرنام Consistency-Availability-Partition tolerance میگوید برای یک سامانه کامپیوتری توزیعی این امکان وجود ندارد که همزمان به سه اصل سازگاری (Consistency)، دسترسپذیری (Availability) و آستانه تسهیم/ تقسیم دادهها (Partition tolerance) دسترسی داشته باشد. در یک سامانه توزیعی سامانههای مختلف به شکل خودکار و توسط یک شبکه کامپیوتری با یکدیگر در ارتباط و به دنبال رسیدن به یک هدف مشترک هستند. یک برنامه کامپیوتری شبیه به یک بانکاطلاعاتی که در یک سیستم توزیعی اجرا میشود، یک برنامه توزیعی نام دارد. به فرآیند نوشتن چنین برنامههایی برنامهنویسی توزیعی میگویند.زمانیکه قصد دارید یک پروژه بانک اطلاعاتی را برای سازمانی آماده کنید، بهتر است در زمان انتخاب بانکاطلاعاتی محتاط باشید. با فراگیر شدن مفهوم بزرگدادهها، اکنون گزینههای زیادی برای مدیریت دادهها در دسترس است. به همین دلیل در زمان انتخاب یک بانک اطلاعاتی باید به نکات زیر دقت کنید:
- قبل از انتخاب گزینه مناسب، ابتدا بررسی کنید که بانکاطلاعاتی قرار است به چه نیازهای کاری پاسخ دهد.
- کدامیک از بانکهای اطلاعاتی در دسترس میتوانند به برخی نیازهای مرتبط با یکدیگر پاسخ دهند.
- عملکرد مطلوب بانک اطلاعاتی تنها زمانی مشخص میشود که بتوانید تمامی نیازهای واقعی را با بانک اطلاعاتی انتخابی تطبیق داده و خروجی مدنظر را دریافت کنید. اگر تضادی پیدا شود، گزینه اشتباه را انتخاب کردهاید، بنابراین قبل از انتخاب گزینه نهایی بهتر است نیازهای واقعی را با توانمندیها و محدودیتهای گزینه انتخابی مقایسه کنید.
- همواره باید یک نقطه تعادل میان سازگاری، دسترسپذیری و آستانه تحمل دادهها در نظر بگیرید. همانگونه که در ادامه خواهید خواند، دسترسی همزمان به این سه اصل اگر نگوییم امکانپذیر نیست به سختی بهدست میآید.
درک موازنه (Tradeoff)
نظریه CAP یکی از دلایل مهم شکلگیری بانکهای اطلاعاتی مختلف است. امروزه نظریه CAP سرنام Consistency-Availability-Partition tolerance جایگاه ویژهای در دنیای ذخیرهسازی دادهها دارد و سازمانهای بزرگ سعی میکنند راهحلهایی منطبق با این نظریه را ارائه کنند، با این حال، هنوز هیچیک از بانکهای اطلاعاتی و سامانههای مدیریت بانکهای اطلاعاتی (DBMS) نتوانستهاند همزمان دسترسی به هر سه اصل را فراهم کنند. در نظریه فوق اصل سازگاری (Consistency) به معنای مشاهده تمامی گرههای دادهای در یک زمان است. اصل دسترسپذیری (Availability) به معنای آن است که گره غیر پاسخگو باید در زمان مشخصی پاسخگو باشد. اصل آستانه تسهیم (Partition tolerance) به معنای آن است که سامانه در صورت بروز مشکل جدی در شبکه یا از دست رفتن گرهای بازهم توانایی انجام وظایف خود را داشته باشد (شکل1).
امروزه برخی از کارشناسان بانکهای اطلاعاتی بر این باور هستند که اگر سامانههای توزیعی آستانه تحمل نداشته باشند، دیگر نمیتوان آنها را سیستم توزیعی نامگذاری کرد و در مقابل برخی دیگر بر این باور هستند که انتخاب اصلی میان سازگاری و دسترسپذیری است، زیرا همواره آستانه تحمل وجود دارد.
بانکهای اطلاعاتی رابطهای
بانکهای اطلاعاتی رابطهای به دلیل آنکه به شکل سنتی، سازگاری و دسترسپذیری زیادی را ارائه میکنند تا حد زیادی به کاهش هزینه آستانه تسهیم کمک میکنند. بانکهای اطلاعاتی رابطهای برای نوشتن بهینهسازی شدهاند و در نتیجه فرآیند نوشتن رکوردها در آنها با صرف زمان کمی انجام میشود، البته این موضوع به تعداد رکوردهایی که قرار است در یک لحظه به بانک اطلاعاتی وارد شوند بستگی دارد. از بانکهای اطلاعاتی معرف در این زمینه میتوان به مایکروسافت اسکیوالسرور، My SQL، PostgresSQL و IBM DB2 اشاره کرد.
بانکهای اطلاعاتی غیر رابطهای
بانکهای اطلاعاتی غیر رابطهای با هدف بهبود دسترسپذیری و افزایش آستانه تسهیم و در برخی حالت سازگاری همراه با افزایش آستانه تسهیم طراحی شدهاند. این مدل بانکهای اطلاعاتی عملکرد منحصر به فردی در ارتباط با خواندن دارند. به عبارت دقیقتر برای خواندن بهینهسازی شدهاند. از جمله بانکهای اطلاعاتی غیر رابطهای میتوان بهMemcached ،Redis ،Coherence ،Hbase ،BigTable ،Accumulo ،MongoDB و CouchDB اشاره کرد. در سامانههای پیچیده اطلاعاتی که فرآیند خواندن و نوشتن در مقیاس سنگین انجام میشود، ترکیبی از بانکهای اطلاعاتی رابطهای و غیر رابطهای برای تفکیک فرآیندهای خواندن و نوشتن با هدف پیادهسازی نظریه CAP استفاده میشوند. رویکرد فوق درست مشابه با زمانی است که یک دستگاه ذخیرهساز تحت شبکه را خریداری میکنید و فروشنده پیشنهاد میکند برای رسیدن به حداکثر کارایی ممکن از ترکیب هارددیسکهای سنتی و حافظههای حالت جامد استفاده کنید.
پرسشهایی که قبل از ساخت بانکاطلاعاتی باید به آنها پاسخ داده شود
گام مهم در انتخاب بانکاطلاعاتی ایدهآل آمادهسازی فهرستی از پرسشهای مرتبط با نیازمندیهای کسبوکار است. از جمله این پرسشهای به موارد زیر میتوان اشاره کرد:
- چه تعداد رابطهای میان دادهها وجود دارد؟
- میزان پیچیدگی دادهها چه قدر است؟
- دادهها به چه میزان در حال تغییر هستند (این تغییرات لحظهای است یا با گذشت زمان به وجود میآیند.)
- میزان محاورههای ارسال شده از جانب برنامههای کاربری برای پایگاه داده چقدر است؟
- برنامههای کاربردی چگونه محاورهها را پیادهسازی کرده و به چه میزان از محاورههای Join شده استفاده میکنند؟
- کاربران یا مشتریان به چه میزان دادههای درون بانک اطلاعاتی را بهروزرسانی میکنند؟
- آیا کاربران منطق موجود در دادهها را بهروزرسانی میکنند و اگر پاسخ مثبت است به چه میزان اینکار را انجام میدهند؟
- برنامه در زمان بروز حوادث ناخواسته چقدر به دادههای لحظهای وابسته است و چه اطلاعاتی را به شکل کششده استفاده میکند؟
- در زمان بروز حوادث ناخواسته راهکار پشتیبان چیست و افزونگی بر مبنای چه راهکاری پیادهسازی میشود؟
مزایا و معایب
بانکهای اطلاعاتی رابطه و غیر رابطهای مزایا و معایب خاص خود را دارند. از مهمترین نقاط قوت و ضعف هر دو مدل به موارد زیر میتوان اشاره کرد:
بانکهای اطلاعاتی رابطهای برای نوشتن بهینهسازی شدهاند. به همین دلیل ایدهآلترین عملکرد آنها در ارتباط با اصل سازگاری و دسترسپذیری است. سادگی، سهولت بازیابی دادهها، یکپارچگی دادهها و انعطافپذیری از ویژگیهای شاخص این مدل بانکهای اطلاعاتی است. در مقابل این بانکها معایبی نیز دارند که از آن جمله میتوان به هزینه بالا در راهاندازی و نگهداری از آنها، محدودیتهای ساختاری که باعث ایجاد محدودیت در طول فیلدها میشود و به این شکل ذخیرهسازی حجم زیادی از اطلاعات در یک فیلد را سخت میکند (بانکهای اطلاعاتی رابطهای را میتوان به راحتی به جزیرههای اطلاعاتی (islands of information) تبدیل کرد.) اشاره کرد.
بانکهای اطلاعاتی غیر رابطهای به شکل ایدهآلی برای عملیات خواندن بهینهسازی شدهاند. این مدل بانکهای روی دو اصل دسترسپذیری و آستانه تسهیم/ سازگاری عملکرد بالایی دارند. از مزایای اصلی بانکهای اطلاعاتی غیر رابطهای میتوان به انعطافپذیری زیاد که اجازه میدهد دادههای ساختیافته، غیر ساختیافته و نیمهساخت یافته را در آنها ذخیرهسازی کرده، ایدهآل برای برنامهنویسی چابک که امکان نوشتن ماژولهای کوچک و اجرایی کردن آنها را فراهم میکنند و گسترشپذیری کم هزینه که اجازه میدهند به شکل موثری بدون افزایش بی رویه هزینهها بانکاطلاعاتی را گسترش داد اشاره کرد. با اینحال، این مدل بانکهای اطلاعاتی نیز معایب خاص خود را دارند که از آن جمله میتوان به سازگاری دادهها که قادر نیستند تراکنشهای ACID را اجرا کنند و در مقابل روی اصل سازگاری نهایی تاکید دارند، استانداردسازی که رابط برنامهنویسی خاصی برای این بانکهای اطلاعاتی طراحی نشده و هر یک زبان برنامهنویسی متفاوت نسبت به دیگری دارند و گسترشپذیری که هیچ بانک اطلاعاتی در خودکارسازی فرآیند sharding یا گسترش بانکاطلاعاتی در چند گره عملکرد مناسبی ندارد اشاره کرد.
شناخت انواع مختلف بانکهای اطلاعاتی غیر رابطهای
اگر جستوجویی در ارتباط با بانکهای اطلاعاتی غیر رابطهای داشته باشید با انواع مختلفی از آنها روبرو میشوید که هر یک برای مقاصد خاصی طراحی شده و در گروههای خاصی طبقهبندی شدهاند.
کلید-مقدار (Key-Value): بهترین عملکرد این مدل بانکهای اطلاعاتی در طرحبندیهای ساده مستتر است. این مدل بانکها برای عملیات خواندن و نوشتن زیاد با تاکید بر بهروزرسانیهای مختصر ایدهآل هستند. بهترین کارکرد این مدل بانکهای اطلاعاتی زمانی است که محاورهها یا منطق تجاری غیر پیچیدهای مدنظر باشد. Cosmos DB، Dynami DB و Redis از بانکهای اطلاعاتی شاخص این گروه هستند.
سند (Document): این مدل بانکهای اطلاعاتی بهترین عملکرد را در یک طرحبندی انعطافپذیر نشان میدهند. در طرحبندی فوق دادهها در قالبهای دادهای XML یا JSON ذخیرهسازی میشوند. در حالت کلی عملکرد این مدل بانکهای اطلاعاتی در ارتباط با خواندن زیاد است، اما این امکان وجود دارد تا تعادلی میان خواندن و نوشتن به وجود آورد. در بانکهای اطلاعاتی فوق امکان بهکارگیری شاخص برای به حداکثر رسان عملکرد این مدل بانکهای اطلاعاتی وجود دارد. Couchbase، DynamoDB و MongoDB از بانکهای اطلاعاتی معروف این گروه هستند.
گراف (Graph): این مدل بانکهای اطلاعاتی زمانی که قرار است از یک طرحبندی پیچیده برای بانک اطلاعاتی استفاده شده بهترین عملکرد را ارائه میکنند. در این مدل بانکهای اطلاعاتی لازم است منطق تجاری میان گرهها را به دفعات نشان دهید. بانکهای اطلاعاتی گراف امکان حرکت و ناوبری میان گرهها را فراهم میکنند. Neo4j ،Cosmos Db و Amazon Neptune از بانکهای اطلاعاتی معروف این گروه هستند.
اکنون که دید کلی در ارتباط با بانکهای اطلاعاتی و انتخابهای پیشرو به دست آورید، به راحتی میتوانید متناسب با نیازهای برنامه کاربردی یک یا چند مورد از آنها را انتخاب کنید. اگر بتوانید ترکیبی از بانکهای اطلاعاتی را استفاده کنید به راحتی میتوانید به نیازهای تجاری مختلف یک سازمان پاسخ دهید، البته به شرطی که دانش شما در ارتباط با طراحی و مدیریت هر یک از این بانکهای اطلاعاتی در سطح قابل قبولی قرار داشته باشد.