رایانش ابری(پایگاه داده بخش اول)
4 پايگاه داده در ابر
پايگاه داده يك جزء كليدي در بسياري از زيرساختهاي محاسبات داده است. پايگاه داده به كاربران اجازه ذخيرهسازي دادههايشان در يك روش سازمان يافته را ميدهد و بازيابي آنها آسان است. در اين بخش، ما درباره يك نوع پايگاه داده جديد بحث خوايم كرد كه در حال كسب محبوبيت به خصوص در محاسبات ابري است، پايگاه داده غيررابطهاي، و آن را با پايگاه داده رابطهاي از ديدگاه ابر مقايسه ميكنيم. ما همچنين به برخي از معماريهاي پايگاهدادههاي معمول نگاه ميكنيم كه ارائهدهندگان محاسبات ابري به كار گرفتهاند و مسائل مربوط به محيطهاي برنامهنويسي كه با انواع مختلف پايگاه داده آمدهاند.
4.1 غيررابطهاي
پايگاه داده غيرربطهاي عموما به اصطلاح NOSQL اشاره ميكند كه " No S Q L" تلفظ ميشود. آنها از جداول منحصر به فرد ساخته ميشوند و اين جداول نميتوانند جداولي تعريف شده بين آنها بر خلاف پايگاه داده رابطهاي داشته باشند. براي مثال، در نمونه پايگاه داده نشان داده شده در شكل 6، ميتوان مانده حساب يك مشتري خاص با توجه به نام مشتري از طريق جدول با استفاده از پيوند SQL به علت ارتباط كليد اصلي و كليد خارجي را بازيابي كرد. در يك پايگاه داده غيرربطهاي براي نمونه مشابه، بدون هيچ رابطهاي، توسعه دهنده مجبور به استفاده از كد برنامه براي به دست آوردن شماره حساب مشتري است و پس از آن دسترسي به جدول حساب و با شماره حسابي كه قبلا به دست آمده با بازيابي موجودي مطابقت ميدهد.
شكل 6 ارتباط كليد خارجي و كليد اصلي
4.2 رابطهاي در برابر غير رابطهاي
تعداد زيادي از ارائهدهندگان محاسبات ابري به كاربران هر دو پايگاهداده رابطهاي و غير رابطهاي را پيشنهاد ميدهند. هر دو نوع پايگاه داده در ابر مقياسپذير هستند و دسترسي بالايي ميتوانند داشته باشند. از لحاظ سرعت، ما مجموعه خودمان را از آزمايشهاي تعيين معيار براي برخي خدمات پايگاه دادهاي رابطهاي و غيررابطهاي محاسبات ابري انجام ميدهيم. يافتههاي ما كه رابطه ايجاد پايگاه داده ابر را نشان ميدهد، عمليات بهروزرساني و حذف سريعتر از پايگاه داده ابر غيررابطهاي است. اما، براي عمليات خواندن، پايگاه داده ابر غيررابطهاي سريعتر از پايگاه داده ابر رابطهاي عمل ميكند. استفاده عاقلانه، استفاده هر دو پايگاه داده ابر رابطهاي و غيررابطهاي نسبت به ديگري آسان است. اين به خاطر اين است كه ارائه دهندگان محاسبات ابري بيشترين گنجايش از مديران پايگاه داده را بگيرند، خصوصا براي پايگاه داده رابطهاي، به عنوان پايگاه داده رابطهاي معمولا با حجم سنگين كار مديران پايگاه داده در مقايسه با پايگاه داده غيررابطهاي آمده است.
4.3 معماري
ارائهدهندگان پايگاهداده ابر اغلب به كاربران اجازه انتخاب معماري پايگاهداده متعدد را ميدهند. از آنجا كه اين معماريهاي سطوح مختلف پايگاهدادهاي دارند، زمان تاخير و هزينهها، شما نياز ايست براي داشتن ايدههاي بهتر معماري را بفهميد كه خدمات مناسب نيازهاي برنامه شما است. ما دو تفاوت معماري را بحث خواهيم كرد كه در اينجا توسط ارائهدهندگان اصلي خدمات ابر مورد استفاده قرار ميگيرد معماري Master/Slave و معماري پايهگذاري شده بر روي الگوريتم Paxos است.
شكل 7 معماري پايگاه دادهاي Master/Slave
در معماري پايگاه دادهاي Master/Slave يك سرويس دهنده پايگاه داده به عنوان مدير عمل ميكند. موقعي كه كاربر يك درخواست نوشتن/ حذف به پايگاهدادهاش ميفرستد، درخواستها به مدير سرويسدهنده پايگاه داده ميروند. مدير سرويسدهنده پايگاهداده بررسي ميكند درخواستها را و پايگاهداده اش را به روز رساني ميكند و پس از آن بهروزرساني در ساير سرويسدهندههاي پايگاه داده زيردست تكرار ميشوند.
شكل 8 معماري Paxos
براي معماري Paxos ، موقعي كه يك كاربر درخواست نوشتن/ حذف ميفرستد، اين درخواست به سرويسدهنده پايگاهداده يك شبكه سراسري ميرود. سرويسدهندههاي پايگاهدادههاي مختلف درخواستها را در مقابل پايگاه داده خودشان بررسي ميكنند و حالتها و پس از آن براي تاييد درخواست با يكديگر ارتباط برقرار ميكنند. جوانب مثبت و منفي متعددي براي استفاده از يك معماري پايگاهداده بر روي ديگري وجود دارد.
معماري Master/Slave با استفاده كاهش زمان نوشتن/حذف CPU : پايگاه دادههايي كه روي معماري Paxos ساخته ميشوند زمان نوشتن CPU بيشتري استفاده ميكنند از پايگاه دادههايي كه از معماري Master/Slave استفاده ميكنند با توجه به سرويسدهندههايي كه با يكديگر به تاييد درخواست نوشتن / حذف نياز به ارتباط دارند، بر خلاف معماري پايگاه داده Master/Slave، جايي كه مدير درخواستها را تاييد ميكند و تغيرات تاييد شده را به زيردستها ميفرستد.
معماري Master/Slave تاخير كمتري براي نوشتن/حذف دارد: آن براي ساخت پايگاه داده روي معماري Paxos به عنوان تاييد درخواستها كه طول ميكشد بين سرويسدهندههاي مختلف عالي است.
معماري Master/Slave سازگاري پرسوجوي قويتري دارد : سازگاري پرسوجوي از پايگاهدادههاي ساخته شده بر روي معماري Paxos احتمالي است به آنهايي كه نياز به زمان براي پردازش برخي از درخواستها در مراكز داده- درخواست خواندن ممكن است قبل از پردازش قبلي درخواست نوشتن/حذف كه بيايد كامل شود، نتيجهگيري در درخواست خواندن تا بهروزرساني نتايج بيشتر گرفته نميشود.
معماري Paxos دسترسي و قابليت اطمينان بهتري دارد : پايگاه داده ساخته شده بر روي معماري Paxos از خرابي رنج نميبرند مانند همتايان خود كه روي معماري Master/Slave ساخته ميشوند. براي مثال، اگر مدير مركز داده براي يك پايگاه داده خاص كه بر روي معماري Master/Slave ساخته ميشود براي محافظت از كار افتاده ميشود، درخواستهاي نوشتن/حذف پردازش نميشوند. اما براي پايگاه دادهاي كه بر روي معماري Paxos ساخته ميشود، پايگاه داده كاربران ميتوانند به روز رساني ميشوند حتي اگر يك مركز داده از كار افتاده باشد، تا زمانيكه ديگر مراكز داده كه عمليات باقي مانده وجود دارد، هر يك از مراكز داده ميتواند درخواست نوشتن/حذف را پردازش كند. نماي دو معماري مختلف اكنون به شما مفهوم بهتري ميدهد چرا كه برخي از پايگاههاي داده پيشنهاد شده توسط ارائه دهندگان محاسبات ابري پر هزينه تر از ديگر پايگاههاي داده هستند يا چرا كه سازگاري بيشتري براي برخي از انواع پايگاه داده وجود دارد بيش از ديگر پايگاههاي داده به عنوان مثال علاوه بر اين، دو نوع از معماري تحت پوشش همچنين ميتواند به عنوان نمونه براي شما خدمت كند براي ساخت استفاده از زيرساختها پيشنهاد ميدهد به وسيله ارائهدهندگان محاسبات ابري به مدل كردن و بسياري از معماري پايگاه داده ابرتان را ميسازد، براي مثال در شكل 9، آمازون نمونههاي تكراري را ميخواند و به عنوان پايگاه داده زير دست در معماري Master/Slave عمل ميكند.
شكل 9 ساخت يك پايگاه داده Master/Slave است با استفاده از RDS آمازون
4.4 نمونههايي از پايگاه داده مبتني بر ابر
از بحث در بخش قبلي، ما ميتوانيم تفاوت بين پايگاه داده رابطهاي و پايگاه داده غيررابطهاي را ببينيم، به عنوان نمونه تفاوت بين معماري پايگاه داده ابر: معماري Master/Slave و معماري Paxos. در اين بخش، ما در برخي مثالهاي خاص از سيستمهاي پايگاه دادههاي مبتني بر ابر نگاه ميكنيم كه شامل : خدمات پايگاه داده رابطهاي آمازون(پايگاه داده رابطهاي)، پايگاه داده توليدي آمازون(پايگاه داده غيررابطهاي)، فروشگاه دادهاي گوگل(پايگاه داده غيررابطهاي) و SQL ابر گوگل(پايگاه داده رابطهاي).
4.4.1 سرويسدهندههاي پايگاه داده رابطهاي آمازون
سرويسدهندههاي پايگاه داده رابطهاي آمازون(RDS آمازون) يك خدمت از آمازون است(در خدمات وب سايت آمازون)، كه خدمت پايگاه داده رابطهاي مبتني بر ابر را ارائه ميدهد. از آنجاييكه اوراكل و MySQL را پشتيباني ميكند(دو سيستم پايگاه دادهاي رابطهاي محبوب)، كاربران زيادي ميتوانند پايگاه دادههاي رابطهاي موجودشان را به آساني به ابرانتقال دهند. ارائهدهندگان آمازون انواع مختلفي از نمونه پايگاه داده از پيش تنظيم شده(يك نمونه ابر اختصاصي به ذخيره سازي پايگاه داده، با سيستم پايگاه داده نصب شده يا MySQL يا اوراكل) با پارامترهاي معقول براي كمك به كاربر تا پايگاهدادهشان را به آساني راهاندازي كنند.
نمونه پايگاه داده از كوچك ميتواند مرتب شود(كه با يك كامپيوتر منظم قابل مقايسه است)، به يك تمامكننده عالي، كه ميتوانند به عنوان 20 تا 30 كامپيوتر منظم قدرتمند باشد. براي هر مورد، كاربران ميتوانند يك ظرفيت ذخيرهسازي از 5GB تا 1TB انتخاب كنند و اگر كاربران نياز بيشتري داشته باشند، آنها به راحتي ميتوانند موارد بيشتري را راهاندازي كنند. بعد از اينكه كاربران پايگاههاي دادهشان را به RDS آمازون انتقال ميدهند، آمازون از ذخيرهسازي آنها نگهداري ميكند و از دادههايشان پشتيباني ميكند، و به كاربران كمك ميكند دادههايشان را بازگرداني كنند اگر اتفاق بدي در ابر برايشان رخ دهد. RDS آمازون همچنين معيارهايي در مورد سلامت پايگاه داده از طريق ديدهبان ابر آمازون ارائه ميدهد، شبيه به يك نمونه EC2 معمولي. به عنوان يك خدمت ابر، RDS آمازون از زيرساختهاي كاري مورد نياز آمازون مراقبت ميكند، و به توسعه دهندگان توانايي اندازهگيري منابعشان و ظرفيت ذخيرهسازي را به آساني ميدهد، بنابراين آنها ميتوانند به درخواستهاي بيشتري از سرويسگيرندگان رسيدگي كنند. توسعهدهندگان همچنين ميتوانند برخي توابع مفيد را دريافت كنند كه RDS آمازون پيشنهاد ميدهد، نظير: استقرار چند حرف A_Z، و خواندن كپيها(براي پايگاهداده MySQL)، در دسترس بودن و مقياسپذيري براي پايگاهداده خود را افزايش دهند.
4.4.2 پايگاه داده توليدي آمازون
پايگاه داده توليدي آمازون يك خدمت از آمازون است كه خدمات پايگاهداده غيررابطهاي را با اندازهگيري يكپارچه فراهم ميكند. آن به كاربران اجازه ميدهد يك جدول جديد پايگاه داده توليدي آمازون را راهاندازي كنند و بالا يا پايين رفتن ظرفيت درخواست خود را براي جدول بدون خرابي و تخريب عملكرد اندازهگيري كنند. شبيه به RDS آمازون و تعداد زيادي خدمات ابر ديگر، آن همچنين نمايش اطلاعات براي استفاده و عملكرد منابع را فراهم ميكند. پايگاهداده توليدي آمازون دادهها را در ارزش كليدي مد ذخيره ميكند : پايگاهدادهها دادههاي چند جدولي را شامل ميشود. درهر جدول، چند آيتمي وجود دارد، هر بخش چندين خاصيت دارد. به عنوان پايگاه داده غيررابطهاي، پايگاه داده توليدي آمازون هيچ مدلي ندارد(به جز محدوديتهايي كه نياز به يك كليد اصلي براي جدول وجود دارد). هر بخش ميتواند هر تعداد از خصوصيات را داشته باشد(لازم نيست همان بخشهاي مختلف را داشته باشد)،اما حجم بخشها نياز است كه كمتر از 64KB باشد. هر مشخصه، ميتواند يك ارزش واحد يا مجموعهاي چند مقداري باشد، كه به عنوان يك جفت نام معتبر ذخيره شده است. هر چند، مشخصهها نميتوانند ارزش رشتهاي پوچ يا خالي داشته باشند. پايگاه داده توليدي آمازون يك تكاملي از قبل خدمات پايگاه دادهاي غيررابطهاي از آمازون است(پايگاه داده ساده آمازون). آن را از بيشترين ويژگيهاي برجسته پايگاه داده ساده به ارث ميبرد: كه سادگي در مديريت پايگاه داده است. تاكنون، پيشرفتهاي زيادي از فناوري توليدي آمازون را موجب شده است(يك اقتدار، مافوقاندازهگيري سيستم پايگاه داده غيررابطهاي كه در داخل آمازون استفاده ميشود). آمازون از فناوريهاي اساسي نگهداري ميكند(گسترش داده و ترافيك بيش از بسياري از سرويسدهندهها، استفاده از درايوهاي حالت سخت با عملكرد بسيار سريع) كه دسترسي عالي و اندازهگيري را براي پايگاهداده فراهم كنند.
4.4.3 ذخيره اطلاعات گوگل
ذخيره اطلاعات گوگل(برنامه ماشين ذخيرهكننده اطلاعات) خدمت اصلي ذخيرهكننده دادهها براي برنامه ماشين برنامهاطلاعاتگوگل است. آن يك سيستم پايگاهداده غيررابطهاي است، در بالاي ساختار پايگاه داده جدول بزرگ خود گوگل ساخته شده است. به عنوان سيستم پايگاه داده غيررابطهاي، ذخيرهكننده اطلاعات گوگل يك پايگاه داده بدون مدل است. اين دادهها در اشياء دادهاي شناخته شده به عنوان موجوديتها ذخيره ميشوند. اين موجوديتها در برخي دستههاي شناخته شده به نوع خودش دستهبندي ميشوند(براي هدف پرسوجو)، و آن را به عنوان يك كليد (كه تغييرپذير نيست) از موجوديتهايش به ديگر موجوديتها از نوع خودش نگهداري ميكنند. هر موجوديت يك يا چند مشخصه دارد، كه يك ارزش اسمي از برخي انواع دادهها پشتيباني ميكند. ذخيرهكننده داده گوگل دو گزينه ذخيرهسازي داده را پيشنهاد ميدهد : تكرار زياد ذخيرهسازي داده، كه به منظور افزايش قابليت اطمينان و در دسترس بودن از معماري Paxos استفاده ميكند، و ذخيرهسازي Master/Slave، كه براي اطمينان از سازگاري قوي براي عمليات پايگاه داده از معماري Master/Slave استفاده ميكند. به عنوان خدمت پايگاه داده ابر، در خصوص يك سيستم پايگاه داده غيررابطهاي، ذخيرهكننده داده گوگل يك معماري توزيعشده براي كمك به افزايش مقياسپذيري براي سيستم پايگاه داده استفاده ميكند. آن را به راحتي ميتواند به مجموعه دادهاي بزرگ اندازهگيري كند، در حالي كه هنوز عملكرد خوب حفظ شود.
4.4.4 پايگاه داده SQL ابر گوگل
پايگاه داده SQL ابر گوگل يكي از خدمات وب است كه خدمت پايگاه داده رابطهاي را براي برنامه مستقر در موتور برنامه گوگل فراهم ميكند. اين يك ويژگي جديد از موتور برنامه گوگل است و آن در حال حاضر در مرحله پيش نمايش محدود است. پايگاه داده SQL پايگاه دادههاي MySQL را ، با ويژگيهايي به ورود و خروج از پايگاه داده SQL موجود به داخل و خارج كردن از ابر پشتيباني ميكند. به عنوان مثال SQL ابر گوگل براي اطمينان از قابليت اطمينان و در دسترس بودن طراحي شده است، آن تكرار دادهها در مناطق قابل دسترس مختلف را پشتيباني ميكند. اخيرا، پايگاه داده SQL ابر گوگل فقط برنامههاي مبتني بر جاوا و پيتون را پشتيباني ميكند. براي استفاده آن توسعه دهندگان نياز دارند از JDBC(اتصال به پايگاه داده جاوا) استفاده كنند براي اتصال به پايگاه دادههايي كه اگر برنامهشان يك برنامه مبتني بر جاوا است. شبيه به خدمات پايگاه دادهاي رابطهاي آمازون، اساس سيستم پايگاه داده در SQL ابر گوگل مديريت كامل به وسيله گوگل است، بنابراين كاربر ميتواند از افزونگي و وظايف خستهكننده نظير مديريت سرهمكردن براي پايگاه داده نجات پيدا كند. در بالاي آن، يك رابط كاربري گرافيكي باشكوهي فراهم شده است براي كمك به كاربر تا مديريت كند، ديدهباني و پيكربندي سيستم پايگاه دادهاش را به راحتي انجام دهد.