چگونه دیتابیس خود را مدیریت کنیم؟

مارکت کلود در سال ۲۰۲۰، ۱۷ درصد رشد داشته و هم اکنون به ۲۶۶.۴ میلیارد دلار رسیده است و در این بین سریع‌ترین سرویس ابری در حال رشد در حوزه دیتابیس که همه توجهات را به خودش جلب کرده است، سرویس پایگاه داده یا همان DBaaS‌ است که به نظر می‌رسد تا سال ۲۰۲۵ به تنهایی ۳۲۰ میلیارد دلار از این مارکت را در اختیار داشته باشد. در ایران اما آمار دقیقی از مارکت کلود در اختیار نیست اما امروزه تا ۶۰ درصد از صنعت ICT‌ کشور تحت تاثیر کلود قرار دارد و پیش بینی می‌شود تا پنج سال آینده مارکت کلود تا ۲۰۰ هزار میلیارد تومان نیز گسترده شود. یکی از دلایلی که سرویس‌های مدیریت دیتابیس که تحت عنوان DBaaS شناخته می‌شوند، بیشتر از سرویس های دیگر مورد استقبال قرار گرفته‌اند، انفجار داده های کاربران است. مزایایی که خدمات ابری و به خصوص سرویس پایگاه داده را برای مشتریان جذاب می‌کنند به طور کلی چند دسته هستند: چابکی و سادگی، بهره وری بالاتر و خریدن زمان برای توسعه دهنده سیستم. چرا که توسعه دهندگان دیگر مجبور نیستند هفته ها برای فرآیندهای مدیریتی پایگاه‌های داده صبر کنند. و از آن جا که نیاز به دیتابیس‌های متنوع، سریع‌تر از هر نیاز دیگری در حال افزایش است، واضح است که فضای ابری راهی است برای رسیدن به سرعت و چابکی در این حوزه. حال بیایید مثالی را بررسی کنیم که نشان می‌دهد چگونه برون سپاری دیتابیس، به توسعه دهندگان کمک می‌کند چابکی و سرعت مورد نیاز خودشان را بیابند.
حال بیایید یک سناریو که در اکثر شرکت ها اتفاق می‌افتد را بررسی کنیم. هرچند که به طور واضحی در هر شرکت ممکن است جریان‌های کاری و ساختارهای متفاوتی وجود داشته باشند ولی سناریویی که ما در مورد آن توضیح می‌دهیم نمونه‌ای از پیچیدگی در تهیه و اجرای یک دیتابیس و تحویل آن به برنامه نویس است.
تصور کنید که یک سناریوی معمول به این صورت است که برنامه نویس بک‌اند کار خود را برای نوشتن یک اپلیکیشن شروع کرده و نیاز به یک پایگاه داده پست‌گرس برای توسعه دارد. بیایید به نقش افرادی که در این پروسه دخیل می‌شوند نگاه کنیم.

روز اول: حسین برای درخواست پایگاه داده یک تیکت باز می‌کنه و همزمان یک اینستنس پست‌گرس روی سیستم خودش نصب می‌کنه.
روز دوم: رضا تیکت حسین رو دریافت کرده و میخواد واسه دیتابیس حسین یک ماشین مجازی پیاده سازی کنه ولی امروز مشغول کار کردن روی یک اسکریپت دیگه ست.
روز سوم: رضا با صادق (از تیم سرورها) صحبت می‌کنه تا ببینه از کدوم سرور استفاده کنه. صادق اطلاعات سرور مورد نظر رو به رضا می‌ده و یه کار دیگه که باید بکنه اینه که دسترسی ریموت رو هم بر روی سرور فعال کنه چون حسین از خونه هم کار می‌کنه.
روز چهارم: صادق سرور رو تخصیص و به رضا خبر می‌ده. بعد از اون به علیرضا از تیم لینوکس اعلام می‌کنه که پایگاه داده درخواستی حسین احتیاج به دسترسی سیستم عامل داره.
روز پنجم: به نظر می‌رسه که همه چی آماده ست و حسین می‌تونه از پایگاه داده درخواستی‌ش استفاده کنه و کدهایی که تا الان رو سیستم خودش زده رو منتقل کنه و با دیتابیس جدید سینک بشه.

در این سناریو همه اعضای تیم از این که کل این فرآیند در عرض یک هفته به پایان رسید راضی هستند ولی باید یادمان باشد که روند توصیف شده بسیار خوشبینانه بوده و همه چیز ممکن است در هر مرحله با مشکلی مواجه شده و باعث تاخیر در کار حسین شود. مدت زمان همین فرآیند میتواند به راحتی دو برابر یا سه برابر شود.

راه حل سریع تر

حال که سناریوی بررسی شده و معمول را دیدیم بیایید ببینیم که حسین چطور می‌تواند به پایگاه داده خود را به سرعت و بر روی یک دیتابیس مدیریت شده به دست آورد. تنها فرضی که داریم این است که حسین بر روی پلتفرم مورد نظر (DBaaS) یک یوزر داشته و به پروژه‌ای که در آن کار می‌کند نیز دسترسی دارد. وقتی که حساب کاربری حسین بر روی پلتفرم مورد نظر شکل گرفت، او می‌تواند هر سرویسی که احتیاج دارد را بدون کمک صادق و رضا تهیه کرده و پروژه‌اش را توسعه دهد. در واقع سناریوی جدید به این شکل است که یوزر وارد حساب کاربری خود شده،‌ تقریبا ۱ دقیقه زمان صرف میکند تا پارامترهای دیتابیس را تعیین کند و بعد از چند دقیقه یک دیتابیس با مشخصات مورد نظر خود دارد.
پس به طور خلاصه، توسعه دهنده، سادگی و چابکی مورد نیاز کار خود را دریافت می‌کند و از آن طرف تیم آی‌تی هم درگیر مسائل دیتابیس نخواهد بود. توسعه‌دهنده به پرتال خود مراجعه کرده و دیتابیس مورد نظر خود را بین تعداد مختلف تکنولوژی‌هایی که موجود هستند انتخاب کرده و بعد از تنها چند کلیک یک دیتابیس پست‌گرس در اختیار دارد. حتی فراتر از ایجاد دیتابیس، همین مسائل در مورد تمام وظایف مدیریتی و نگهداری دیتابیس نیز در ادامه وجود دارد؛ مواردی مثل بک آپ‌ها، سیاست‌های امنیتی، مقیاس گذاری و غیره دیگر قسمت آی تی شرکت را درگیر نخواهد کرد و همه این موارد توسط سرویس دهنده پایگاه داده، پوشش داده خواهد شد.
آماده سازی دیتابیس در واقع آغاز کار و اولین قدم برای یک توسعه دهنده است و به تیم‌های توسعه کمک خواهد کرد که در مسیر خود شروع به کار کنند ولی این کافی نیست و در قدم های بعدی نیز تیم توسعه به مواردی نظیر مدیریت و مقیاس پذیری و بک آپ احتیاج خواهد داشت که همه آن‌ها به طور موثر توسط تیم ارائه دهنده پایگاه داده ارائه می‌شوند.
پنکیک با ارائه سرویس پایگاه داده مدیریت شده، به شرکت های نرم افزاری، توسعه دهندگان و استارت‌آپ‌ها کمک می‌کند تا تمام وقت و هزینه خود را صرف توسعه محصولات کرده و دیگر درگیر اموردیتابیس نباشند.
برای اطلاع بیشتر در زمینه سرویس های مدیریت شده پایگاه داده و دیتابیس به عنوان سرویس، می‌توانید همیشه با کارشناسان ما در پنکیک تماس بگیرید.

سرویس پایگاه داده چیست؟

پایگاه داده به عنوان سرویس که بیشتر با عنوان سرویس دیتابیس یا پایگاه داده مدیریت شده نیز شناخته می‌شود اولین بار در سال ۲۰۰۹ با معرفی یکی از سرویس های AWS معرفی شد. از آن زمان تاکنون تخمین زده می‌شود که تا سال ۲۰۲۵، مارکت این سرویس به ۳۲۰ میلیارد دلار رسیده و سریع‌ترین سرویس ابری در حال رشد در دنیا باشد. دلیل اصلی این رشد، قابلیت‌هایی است که سرویس پایگاه داده در بهبود بهره‌وری،‌ استانداردسازی و امنیت داده‌ها روانه بازار کرده است.

اصطلاح پایگاه داده به عنوان سرویس (DBaaS)، به نرم‌افزاری اطلاق می‌شود که کاربران را قادر می‌سازد بدون آن که به پیاده‌سازی دیتابیس احتیاج داشته باشند، پایگاه داده‌ خود را راه‌اندازی کرده و مقیاس‌بندی کنند. به عنوان مثال یک توسعه دهنده می‌تواند پایگاه داده مورد نظر خودش را با چند کلیک ایجاد کرده و مدیریت و سایر امور مثل بک آپ گرفتن را به تیم پشتیبانی سرویس مربوطه بسپارد. وقتی مدیریت پایگاه داده خود را برون سپاری کنید، پلتفرمی که از آن استفاده می‌کنید مسئولیت تهیه بک‌آپ‌، تغییر اندازه کلاسترها و مفاهیم دیگری از این قبیل را پشتیبانی می‌کند.

 

راه اندازی

پس از راه اندازی پایگاه داده، وظیفه تمام عملیات بک‌اند، که قبل از آن به عهده شما بود دیگر به عهده پلتفرمی است که از آن استفاده می‌کنید. مواردی که از آن صحبت می‌کنیم شامل مدیریت پیکربندی، پشتیبان‌گیری خودکار (که امکان بازگرداندن داده های شما را در هر زمان فراهم می‌سازد)، آپدیت‌ها، مانیتورینگ دیتابیس می‌شوند. تمام این موارد که قبل از این پیچیده به نظر می‌رسیدند، اکنون با در اختیار داشتن یک DBaaS خوب، تنها چند کلیک با شما فاصله دارند.

 

مقیاس گذاری

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

 

DBaaS بر روی IaaS

دیتابیس به عنوان سرویس اغلب به عنوان مولفه‌ای از یک بستر جامع‌تر ارائه می‌شود که خدماتی تحت عنوان IaaS (زیرساخت به عنوان سرویس) ارائه می‌دهد. راه حلی که سرویس پایگاه داده در نظر می‌گیرد به این صورت است که از زیرساخت موجود تحت شبکه، منابع لازم برای انجام اموری مانند محاسبه، ذخیره سازی و امور شبکه را درخواست کرده و اساسا نیاز به بخشی تحت عنوان IT در یک سازمان برای انجام امور دیتابیس را از بین خواهد برد.

چه افرادی از سرویس دیتابیس استفاده می‌کنند؟

درک این نکته مهم است که بدانیم مانند سایر فناوری های ابری، DBaaS‌ دارای دو نوع مصرف کننده اصلی است:

  • سازمان های IT که مدیریت و نگهداری فضای ابری را بر عهده دارند.
  • End-user هایی که منابع ابری را مصرف میکنند که به طور معمول توسعه دهندگان هستند.

سازمان‌هایی که سرویس دیتابیس ارائه می‌دهند، کاربران نهایی و توسعه دهندگان را قادر می‌سازند تا از فهرست انواع پایگاه داده‌ها، یک دیتابیس را به دلخواه خودشان (رابطه ای یا غیر رابطه‌ای) تهیه کنند. پیکربندی این سرویس ها می‌تواند متنوع بوده و با سطح دسترسی مختلف ارائه شود. به عنوان مثال می‌توان محدودیتی ایجاد کرد که توسعه دهندگان فقط بتوانند روی فضاهای هارد معمولی دیتابیس بسازند. به طور معمول، کاربر نهایی از طریق یک پورتال به سیستم DBaaS دسترسی پیدا می‌کند که در آن جا مجموعه‌ای از پایگاه داده‌های مختلف و پیکربندی‌های مختلف را در اختیار دارد. با چند کلیک، کاربر، پایگاه داده مورد نیاز خود و پیکربندی مربوطه را مشخص می‌کند که در نتیجه آن سرویس پایگاه داده به سرعت پایگاه داده را تهیه کرده و به کاربر اطلاع می‌دهد. پس از آن نیز سیستم DBaaS مجوزهای مختلفی نظیر اضافه کردن کاربران و ایجاد طرح واره‌ها را به کاربر خواهد داد.

 

مزایای سرویس پایگاه داده

سرویس دیتابیس مزایای بسیاری را برای سازمان به همراه می آورد. مزایای اصلی آن عبارت اند از:

  • سرعت بالاتر در توسعه
  • بهره وری بالاتر
  • قابلیت اطمینان و عملکرد برنامه
  • امنیت برنامه

حال بیایید به هرکدام از موارد بالا نگاهی بیاندازیم.

 

چابکی توسعه دهنده

استقرار پایگاه داده یک فرآیند چند مرحله‌ای است که شامل تهیه اجزای مناسب برای محاسبه، ذخیره‌سازی و پیکربندی صحیح آن‌ها و در نهایت نصب نرم افزار پایگاه داده است. در بیشتر شرکت‌ها این پروسه شامل موارد زیر می‌شود:

  • توسعه‌دهنده سازمان یک درخواست (تیکت) باز می‌کند
  • قسمت IT سازمان تیکت را بررسی کرده و به اختصاص منابع محاسبه، ذخیره‌سازی و شبکه مورد نیاز برای پایگاه داده توسعه دهنده می‌پردازد
  • قسمت IT منابع تخصیص یافته را پیکربندی می‌کند
  • قسمت IT پایگاه داده را به توسعه دهنده می‌دهد و توسعه‌دهنده از این مرحله به بعد را بر عهده می‌گیرد

 

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

یک سرویس پایگاه داده (DBaaS)، با اتوماسیون موارد ذکر شده، زمان را بهبود می‌بخشد و نه تنها به توسعه دهنده چابکی لازم را می‌بخشد، بلکه پایگاه داده همیشه منطبق با بهترین روش‌ها اداره شده و در دسترس نیز هست. سرویس دیتابیس، تمام موارد ذکر شده که عامل کندی هستند را کنترل کرده و به توسعه دهنده اجازه می‌دهد تا انرژی خود را به جای دیتابیس، برروی برنامه اصلی متمرکز کند.

 

بهره وری IT

بخش آی‌تی مسئول عملیات دیتابیس سازمان است؛ این عملیات شامل مواردی مثل تنظیم، پیکربندی، مانیتورینگ، به روزرسانی، بک آپ‌ها و به طور کلی تمام اموری که بایستی برای حفظ پایگاه داده در زمان مناسب انجام شوند، می‌باشد. با رشد شرکت و تعداد پایگاه داده‌هایی که بایستی مدیریت و نگهداری شوند، منابع آی تی شرکت محدود خواهد شد.  با انجام اقدامات مناسب، قسمت فناوری سازمان در نهایت نفس راحتی خواهد کشید و از انجام فعالیت‌های خرد مربوط به دیتابیس کنار خواهد رفت و در نهایت این فرصت را پیدا می‌کند که استانداردهای عملکردی سازمان را بهبود بخشیده و بر ارائه خدمات بهتر و سریع تر به مشتریان خود تمرکز کند.

 

قابلیت اطمینان و عملکرد برنامه

سرویس دیتابیس به راحتی می‌تواند پایگاه داده شرکت را در بهترین سطح دسترسی قرار داده و با نظارت بر عملکرد آن، همیشه پایگاه داده را در بالاترین سطح از عملکرد قرار دهد. با انجام مواردی نظیر تهیه رپلیکیشن، در هنگام خرابی، سیستم به صورت اتوماتیک، ترافیک را به سمت دیگری هدایت می‌کند تا این اطمینان حاصل شود که سیستم همیشه در دسترس است. DBaaS همواره پایگاه داده شما را مانیتور می‌کند تا افزایش تقاضا را کنترل کرده و منابع شما را در جهت منافع سازمان‌تان افزایش یا کاهش دهد. با استفاده از سیاست‌گذاری‌های مشابه نیز می‌توانید با تهیه منابع اضافه تر سیستم را پیکربندی کنید تا به طور خودکار مقیاس بندی شود.

 

امنیت برنامه

یک DBaaS خوب با ویژگی هایی که دارد می‌تواند مدیریت مداوم امنیت را برای انواع پایگاه داده‌هایی که ممکن است در سازمان‌تان استفاده کنید را به همراه بیاورد؛ این در حالی است که برخی ویژگی‌های امنیتی جدید نیز به آن اضافه خواهد کرد. علاوه بر رمزگذاری داده‌ها به صورت بومی، ممکن است به دنبال مواردی مانند امنیت شبکه به صورت end-to-end و شبکه های خصوصی مجازی نیز باشید. DBaaS قادر است تا برای تایید هویت کاربر با استفاده از سیاست های مختلف کنترل دسترسی مختلف ایجاد کند.

 

حل چالش های ابر با استفاده از DBaaS‌ داخلی

اگر داده های خود را روی یک ابر عمومی نگه دارید، هزینه‌هایی که مرتبط با این داده ها است احتمالا بسیار بالا خواهد بود. اما تنها مشکل این نیست؛ قیمت ها می‌توانند در مناطق مختلف با توجه به دسترسی شما متفاوت باشند. این هزینه‌ها میتوانند تا جایی بالا بروند که بعضی کمپانی ها مجبور اند سالانه میلیون ها دلار برای پابلیک کلود هزینه کنند. اما این هزینه ها چطور تاثیر گذار هستند؟ بیایید با یک مثال ساده جواب این سوال را بدهیم. فرض کنید که کمپانی شما به حد خوبی از رشد رسیده و اکنون نیازمند آن هستید که داده های‌تان را برون سپاری کنید چرا که مدیریت آن‌ها زمان و هزینه زیادی از شما می‌گیرد. راه حل چیست؟ اگر مقاله را به دقت مطالعه کرده باشید جواب ساده است : سرویس دیتابیس (DBaaS).

اما مشکل سازمان‌ها در چیست؟ مشکل اینجا است که پاسخ‌شان به سوال قبلی احتمالا خریداری محیطی تحت عنوان زیرساخت است. اگر تنها به دنبال مدیریت داده‌۲ها هستید و دسترسی سرویس و مقیاس گذاری و بک‌آپ ها و همه مواردی که قبل تر به آن اشاره کردیم برای‌تان اهمیت دارد، خریداری زیرساخت یا همان (IaaS) تنها یک هزینه اضافی خواهد بود. شما تنها به سرویس دیتابیس احتیاج دارید.

 

DBaaS برای توسعه دهندگان و تیم آی‌تی

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

 

پیشنهاد ما

پنکیک به عنوان یک استارت آپ دانش بنیان، اولین ارائه کننده سرویس دیتابیس به صورت تخصصی در ایران بوده که با ارائه سرویس پایگاه داده مدیریت شده، پیاده سازی، نگهداری و مدیریت پایگاه داده های شما را بسیار آسان می‌کند. تیم پنکیک مفتخر است که تاکنون پایگاه داده‌های مورد نیاز شرکت‌های معتبری را فراهم کرده است. شما نیز جهت استفاده از خدمات پنکیک میتوانید همیشه با کارشناسان ما در این تیم تماس بگیرید تا با توجه به نیازتان سرویس مناسبی برای دیتابیس‌تان دریافت کنید.

پنج ویژگی کلیدی که باید هنگام خرید DBaaS‌ در نظر بگیرید

امروزه ارائه دهندگان دیتابیس به عنوان سرویس، در طیف گسترده‌ای از ویژگی ها قرار دارند؛ در نتیجه برای انتخاب بهترین سرویس دیتابیس موجود برای سازمان‌تان بایستی موارد زیر را در نظر بگیرید.

انتخاب صحیح پایگاه داده به عنوان سرویس برای موفقیت هر سیستم مبتنی بر مدیریت پایگاه داده ضروری است. بر اساس گزارش اخیر research market انتظار میرود که بازار جهانی DBaaS از ۱۲ بیلیون دلار در سال ۲۰۲۰، به ۲۴.۸ بیلیون دلار در سال ۲۰۲۵ برسد. به نظر می‌رسد تنها چیزی که باعث این رشد شده است تقاضای روزافزون برای پردازش و نمایش داده‌ها با حداقل تاخیر باشد.

تامین کنندگان DBaaS نه تنها میزبان تمام زیرساخت و داده های دیتابیس شما هستند، بلکه تمام زیرساخت‌های مربوط به شبکه و سخت افزار را نیز مدیریت می‌کنند. یک سرویس دیتابیس برای شما قابلیت مقیاس پذیری، انعطاف، بک‌آپ گیری به صورتی که شما تعیین می‌کنید و هم‌چنین محافظت از داده‌ها را به همراه می‌آورد. علاوه بر این با انتخاب DBaaS‌ مناسب از ویژگی‌های دیگری مثل امکان مانیتورینگ، دریافت هشدارها و پیام‌های مربوط به دیتابیس و همین‌طور قابلیت رپلیکیشن نیز بهره خواهید برد.

ولی زمانی که به بازار DBaaS‌ نگاه می‌کنید می‌بینید که به طور فزاینده‌ای در حال رشد و بزرگتر شدن است و رقابت سرویس‌های دیتابیس نیز در آن بیشتر شده است. از این رو هر سرویس سعی می‌کند تا با ارائه ویژگی های بهتر و جدیدتر پیروز این میدان باشد و شما نیز احتمالا در انتخاب سرویس مناسب گیج خواهید شد. این‌جا ست که بایستی با تجزیه و تحلیل دقیق، مناسب‌ترین سرویس را برای سازمان‌تان انتخاب کنید. ما در این مطلب می‌خواهیم به شما کمک کنیم تا ابعاد اساسی برای انتخاب تامین کننده مناسب را بشناسید و بر اساس آن تصمیم بگیرید.

 

پنج فاکتور مهم برای انتخاب سرویس پایگاه داده

ارائه دهندگان سرویس پایگاه داده، همگی یک شکل نیستند و در طیف گسترده‌ای از ویژگی‌ها تفاوت قابل توجهی دارند. برای انتخاب بهترین سرویس برای سازمان خود، بایستی این ۶ عامل را در نظر بگیرید:

  • در دسترس بودن و انعطاف‌پذیری بالا
  • مقیاس پذیری و عملکرد بهینه
  • انعطاف پذیری برای محل قرار گرفتن دیتابیس
  • مدل‌های مدرن داده‌ای
  • هزینه

حال بیایید نگاهی دقیق تر به هر کدام از این ویژگی ها بیاندازیم:

 

در دسترس بودن و انعطاف پذیری بالا

مدیران سازمان‌ها و کسانی صاحب اپلیکیشن یا وبسایت هستند، درک می‌کنند که قابلیت در دسترس بودن یکی از مهم‌ترین ویژگی‌ها در جهت تداوم تجارت‌شان است. پایگاه داده‌های مدرن بایستی همیشه در دسترس باشند و در صورت عدم موفقیت بایستی به سرعت بهبود پیدا کنند تا داده ها از دست نروند. برای توسعه‌دهندگان همواره بسیار مهم است که دیتابیس و سرور خود را همیشه در دسترس داشته باشند چرا که تاثیر به سزایی بر کاربرانی خواهد داشت که از سرویس‌های اپلیکیشن آن‌ها استفاده می‌کنند.

 

مقیاس پذیری بالا

برای ارئه بهترین تجربه به مشتریان، نبایستی اجازه دهید که دیتابیس شما تبدیل به یک گلوگاه عملکردی یا اصطلاحا باتل‌نک باشد. توسعه‌دهندگان و معماران اپلیکیشن می‌دانند که برنامه‌های آن‌ها، به سرعت و مقیاس پذیری احتیاج دارند اما اغلب، محاسبات دیتابیس از کنترل‌شان خارج میشود. بهینه‌سازی مصرف منابع برای افزایش توان عملیاتی و امکان افزایش پردازش بیشترین حجم کار ممکن از موارد مهم در انتخاب سرویس پایگاه داده است.

 

انعطاف پذیری برای محل قرار گرفتن دیتابیس

برنامه‌های مدرن به سمتی می‌روند که می‌توانند چندین ارائه دهنده فضای ابری را پوشش دهند یا از چندین نوع مختلف از خدمات ابری استفاده کنند. بیشتر اوقات سازمان‌ها سرمایه خود را بر یک ارائه دهنده متمرکز می‌کنند و از این رو به یک ارائه دهنده فضای ابری نیز متکی هستند. با این حال برای افزایش چابکی و بهبود عملکرد، داده های شما بایستی بر روی چندین فضای ترکیبی قرار بگیرد در نتیجه صاحبان اپلیکیشن ها بایستی برای حفظ انعطاف پذیری عملیاتی، یک پایگاه داده انعطاف پذیر را انتخاب کنند که بر روی همه ابرها و مکان‌ها کار کند.

 

مدل‌های مدرن داده‌ای

امروزه نیاز بیشتری به سیستم‌هایی وجود دارد که داده‌های پیچیده را با ساختارهای ناهمگن، ضبط، ذخیره، تجسم و تجزیه و تحلیل می‌کند. پایگاه داده شما بایستی بتواند انواع مختلف داده‌ها را در هر قالبی ذخیره و پردازش کند و شما بایستی بتوانید به آن داده ها دسترسی داشته باشید و آن را پردازش کنید. برای برخی از برنامه‌ها ممکن است بخواهید داده‌ها را از منظر جداول رابطه‌ای نگاه کنید، برای بعضی دیگر نمودار و گراف آن ها را بررسی کنید و یا حتی ممکن است بخواهید به بعضی داده ها به صورت JSON دسترسی داشته باشید.

 

هزینه

کاهش هزینه مالکیت همیشه یکی از اولویت‌های اصلی مشاغل است. استفاده کارآمد از منابع محاسباتی و استفاده مجدد از سرمایه دو پارامتر اصلی هستند که بر رشد کسب و کار شما تاثیر می‌گذارند. با رشد داده ها در دیتابیس‌تان، استفاده ناکارآمد از منابع منجر به هزینه خواهد شد. یک پایگاه داده مدرن با قابلیت پشتیبانی از بخش‌های مشترک به منظور ارائه هزینه‌های کمتر، ادغام آسان تر با API و تعمیر و نگهداری آسان، از موارد اصلی در هنگام انتخاب DBaaS‌ است.

با خدمات دیتابیس پنکیک بیشتر آشنا شوید

آیا اهداف مشخصی را در مارکت خود مشخص کرده‌اید؟

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

حتی اگر ریسک نگهداری اطلاعات را پایین بیاورید هزینه نگهداری آن هم چنان بر دوش شما خواهد بود و چه بسا اگر اطلاعات حساسی برای نگهداری دارید تامین امنیت نیز برای‌تان دغدغه‌ای اساسی خواهد بود و هرچه تعداد دیتابیس‌های بیشتری در اختیار داشته باشید این نگرانی و ریسک برای‌تان بزرگ‌تر خواهد بود.

آیا پیش بینی مشکلاتی که بر سر راه‌تان قرار خواهد گرفت را کرده‌اید؟

با استفاده از سرویس‌های دیتابیس پنکیک بگذارید ما نگران سوال بالا را باشیم. هزینه، وقت و انرژی خود را صرف توسعه کسب و کارتان کنید و ما دیتابیس شما را مدیریت میکنیم.

دیتابیس به عنوان سرویس یا همان DBaaS که در مطالب قبلی نیز به آن اشاره کردیم، راه حل پیشنهادی ما برای فرار از چالش‌های مدیریتی دیتابیس است. دیتابیس به عنوان سرویس به زبان ساده به معنی ذخیره اطلاعات در فضایی ابری است به صورتی که استفاده، آپدیت و بک‌آپ گیری از آن آسان باشد. اطلاعات شما در پنکیک از امنیت کافی برخوردار خواهند بود و دیگر لازم نیست ساعات بسیاری را صرف ساخت دیتابیس، نگهداری و مانیتورینگ کنید.

در ادامه سرویس‌های پنکیک را بیشتر بشناسید و با مزایای استفاده از DBaaS آشنا شوید.

مهم ترین دستاوردی که با استفاده از دیتابیس به عنوان سرویس به آن دست خواهید یافت تمرکز بر کسب و کار و مشتریان است. اگر هدف مشخصی در مارکت دارید و میخواهید بیزینس خود را ارتقا دهید، بایستی بتوانید اطلاعات خود را مدیریت کنید و ابزاری در اختیار داشته باشید که به شما قابلیت رقابت در مارکت را بدهد. با استفاده از سرویس‌های پنکیک، داده‌ها همیشه در دسترس خواهند بود، امنیت اطلاعات برای‌تان تضمین شده است و در نتیجه رشد کسب و کارتان سریع تر خواهد بود.

خدمات پنکیک:

 

  • پایگاه داده MySQL:

MySQL سیستم مدیریت دیتابیس و بر پایه زبان SQL میباشد. از MySQL می‌توان برای ذخیره یک رکورد کوچک استفاده کرد و یا حتی مقادیر موجودی محصولات یک فروشگاه را کنترل کرد. MySQL درمقایسه با سایر نرم‌افزارهای دیتابیس مثل Oracle رابط کاربری بهتری داشته و استفاده ازآن نیز آسان است. همانطور که می‌دانید MySQL و SQL دو مفهوم جدا از هم هستند،MySQL  یکی از محبوب‌ترین ها در بازار است که از مدل client-server بهره می‌برد  MySQL از ساختار زبان    SQL  برای دریافت و پاسخ به کوئری‌ها استفاده می‌کند. اگر تا به حال با نرم افزارهایی مثل PostgreSQL  کار کرده‌اید با سینتکس مربوط به SQL آشنا هستید.

از ویژگی های MySQL میتوان به منعطف بودن و استفاده آسان، عمل‌کرد منحصر به فرد و سرعت بهینه و استاندارد بالا اشاره کرد.

 

  • پایگاه داده PostgreSQL:

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

 

  • پایگاه داده MongoDB:

MongoDB یکی از نمونه های موفق در بین دیتابیس های غیر رابطه ای (NoSQL) است که سعی در جایگزینی دیتابیس‌های رابطه‌ای را دارند. این بانک اطلاعاتی متن‌باز، داده‌ها را به صورت غیرجدولی ذخیره میکند. در حال حاضر کمپانی‌های مطرحی مانند Facebook و IBM از این سیستم استفاده می‌کنند. با حضور MongoDB در بازار، روند استفاده از این دیتابیس محبوب در بین توسعه دهندگان به خاطر ویژگی‌ها و مزایایی که دارد امروزه بسیار بیشتر از گذشته شده است.

امروزه جایگزین‌هایی برای دیتابیس‌های رابطه‌ای در بازار می‌بینیم که یکی از آن‌ها NoSQL نام دارد. NoSQL در لغت به معنی “Not only SQL” میباشد. این بانک اطلاعاتی داده‌ها را به صورت غیرجدولی ذخیره می‌کند. یکی از نمونه های موفق MongoDB ،NoSQL  نام دارد.

از ویژگی های MongoDB می‌توان به مقیاس پذیری و انعطاف بالا اشاره کرد چرا که MongoDB دارای طرح‌واره خاصی نیست و در صورت نیاز به اعمال تغییرات در سیستم می‌توانید به راحتی آن را انجام دهید.

 

  • پایگاه داده InfluxDB:

InfluxDB  یک دیتابیس از نوع Time-series و متن‌باز می‌باشد که توسط تیم InfluxData توسعه پیدا کرده است InfluxDB به کمک زبان Go توسعه پیدا کرده و شما می‌توانید بدون نصب هیچ‌گونه متعلقاتی آن را نصب کنید. برای جمع‌آوری داده‌ها محدودیتی پیش روی شما نیست و مهم نیس که داده‌های خود را چگونه و با چه فرمتی به InfluxDB می‌دهید.

اگر قرار باشد داده‌های تولیدی توسط یک ماشین را جمع آوری کنید با داده‌های بسیاری سر و کار خواهید داشت و قادر نخواهید بود که داده‌ها را دنبال کنید چرا که ماشین همواره در حال تغییر و تحول و جمع آوری داده‌ها برای ارائه عملکردی بهتر است، این مقدار داده ممکن است ده‌ها گیگابایت در هر ساعت باشد. هرچند توسط یک دیتابیس رابطه ای می‌توانید این مقادیر را جمع‌آوری کنید، اما در صورتی که تمایل به افزایش مقیاس یا افزایش کارایی این داده‌ها دارید، استفاده از یک دیتابیس رابطه‌ای گزینه مناسبی نخواهد بود. اینجا است که اینفلاکس‌دی‌بی به کارتان خواهد آمد.
 
انتظار می‌رود که در سال های آینده محبوبیت DBaaS در بین تیم‌های نرم افزاری رشد بسیاری داشته باشد و تبدیل به یک فناوری رایج بشود. با بیشتر شدن نیاز ارگان‌ها به انواع مختلف دیتابیس در جهت تثبیت جایگاه خود در مارکت، برون‌سپاری مدیریت دیتابیس به DBaaS راه حلی مقرون به صرفه و آسان به نظر می‌رسد که به رشد فناوری و کسب و کارتان کمک شایانی خواهد کرد.

آموزش به روزرسانی PostgreSQL 10

حالا که با ویژگی جدید آپدیت PostgreSQL آشنا شدید، میتوانیم از آن برای حل مسئله به روز رسانی استفاده کنیم.
برای آنکه همانند سازی منطقی را به راه بیاندازیم بایستی مراحل زیر صورت گیرد:
گره ناشر را پیکربندی کنیم.
گره سابسکرایبر را پیکربندی کنیم
یوزر سابسکرایبر درست کنیم
یک انتشار درست کنیم
ساختار جدول را در subscriber ایجاد کنیم
اشتراک ایجاد کنیم
وضعیت همانند سازی را چک کنیم

برای شروع، در سمت ناشر پارامترهای زیر را در فایل postgresql.file پیکربندی میکنیم.
• Listen-addresses : به چه ip هایی گوش بدهد (برای همه از ‘*’ استفاده میکنیم)
• Wal-level : تعیین میکند که چه مقدار اطلاعات در wal نوشته شده است، ما قصد داریم آن را به صورت منطقی تنظیم کنیم.
• Max-replication-slots : حداکثر تعداد slot همانند سازی که یک سرور میتواند پشتیبانی کند را تعیین میکند و باید حداقل تعداد subscription هایی که قرار است کانکت شوند باشد، به علاوه تعدادی ذخیره برای هماهنگ سازی جدول ها.
• Max-wal-senders : حداکثر تعداد اتصالات همزمان را از سرورهای آماده به کاررا تعیین میکند.

به خاطر داشته باشید که بعضی از این تنظیمات نیاز به ری استارت شدن سرویس PostgreSQL دارند.
همچنین فایل Pg_hba.conf نیاز به تنظیماتی دارد؛ باید به یوزر همانندسازی اجازه ی دسترسی به دیتابیس را بدهیم.
بنابراین باید Publisher خود را به صورت زیر پیکربندی کنیم:

:postgresql.conf

'*' = listen_addresses 
wal_level = logical 
max_wal_senders = 8 max_replication_slots = 4

:pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host     all     rep     192.168.100.144/32     md5

کاربر را به rep تغییر میدهیم، که برای replication از آن استفاده خواهیم کرد، و همچنین ip را به
/32 192.168.100.144 که با PostgreSQL11 همخوانی داشته باشد.

در سمت Subscriber نیز نیاز به تعیین max-replication-slots داریم که در این مورد باید حداقل به تعداد Subscription هایی که به subscriber اضافه میشود باشد.
پارامترهای دیگری که باید تعیین شوند نیز در زیر آورده شده است:
• max-logical-replication-workers : حداکثر تعداد worker های همانندسازی منطقی را تعیین میکند، که شامل worker های متقاضی و همچنین worker های همسان سازی جداول است. Worker های همانندسازی منطقی از استخری که توسط max_worker_processes ایجاد شده، گرفته میشوند.که باید به تعداد subscription ها باشد، و همچنین یک تعداد ذخیره برای همانندسازی جدول.
• Max-worker-processes : حداکثر تعداد فرایندهایی که یک سیستم میتواند ساپورت کند را تعیین میکند.

حال بایستی subscriber خود را به صورت زیر پیکربندی کنیم:

 

:postgresql.conf

listen_addresses = '*'
max_replication_slots = 4
max_logical_replication_workers = 4
max_worker_processes = 8

از آن جا که PostgreSQL11 به زودی به عنوان master قرار میگیرد باید پارامترهای wal_mode و archive_mode را هم اکنون اضافه کرده تا بعد نیازی به ری استارت سرویس نداشته باشیم.

 

wal_level = logical 
archive_mode = on

 

این پارامترها میتوانند در هنگام اضافه کردن یک replication slave دیگر و یا وقتی از بک آپ PITR استفاده میکنید مفید باشد.

در publisher باید کاربری را ایجاد کنیم که با subscriber ما اتصال برقرار کند.

 

world=# CREATE ROLE rep WITH LOGIN PASSWORD '*****' REPLICATION; 
CREATE ROLE

نقشی که برای اتصال replication از آن استفاده میشود باید دارای ویژگی REPLICATION باشد، دسترسی به نقش باید در pg_hba.conf پیکربندی شده باشد و دارای ویژگی Login باشد.

برای اینکه بتوانید داده های اولیه را کپی کنید، نقش مورد استفاده در اتصال همانندسازی باید از امتیاز SELECT برخوردار باشد.

 

world=# GRANT SELECT ON ALL TABLES IN SCHEMA public to rep;
GRANT

انتشار pub1 برای تمامی جداول در گره Publisher ایجاد میکنیم.

world=# CREATE PUBLICATION pub1 FOR ALL TABLES; 
CREATE PUBLICATION

کاربری که یک publication ایجاد میکند باید از امتیاز CREATE در دیتابیس بهره مند باشد، اما برای ایجاد یک publication که تمامی تمامی جداول را به صورت اتوماتیک نشر دهد کاربر باید از نوع Superuser باشد.

 

برای تایید publication ایجاد شده از کاتالوگ pg_publication استفاده میکنیم، این کاتالوگ شامل تمامی اطلاعات مربوط به publication ها در دیتابیس است.

 

world=# SELECT * FROM pg_publication;
-[ RECORD 1 ]+------
pubname      | pub1
pubowner     | 16384
puballtables | t
pubinsert    | t
pubupdate    | t
pubdelete    | t
  • Pubname : نام انتشار را نشان میدهد
  • Pubowner : دارنده ی publication را نشان میدهد
  • Puballtables : اگر مقدار true داشته باشد، این انتشار شامل تمام جداول دیتابیس خواهد شد
  • Pubinsert : اگر مقدار true داشته باشد، عملیات های INSERT برای جداول در publication ها جایگزین میشوند.
  • Pubupdate : اگر مقدار true داشته باشد، عملیات های INSERT برای جداول در publication ها جایگزین میشوند.
  • Pubdelete : اگر مقدار true داشته باشند، عملیات های DELETE برای جداول در publication ها جایگزین میشوند.

 

از آنجایی که الگو همانند سازی نمیشود بایستی از postgreSQL10 بک آپ تهیه کرده و در postgreSQL11 پیاده کنیم، از آنجا که اطلاعات اصلی در همان انتقال اولیه همانندسازی میشوند، این بک آپ فقط برای scheme (الگو) به کار میرود.

در PostgreSQL10 :

$ pg_dumpall -s > schema.sql

در PostgreSQL11 :

$ psql -d postgres -f schema.sql

وقتی از پیاده سازی الگو در PostgreSQL11 مطمئن شدیم، یک subscription با مقادیری که با محیط جدیدمان مطابقت دارد میسازیم

world=# CREATE SUBSCRIPTION sub1 CONNECTION 'host=192.168.100.143 dbname=world user=rep password=*****' PUBLICATION pub1; 
NOTICE:  created replication slot "sub1" on publisher CREATE SUBSCRIPTION

دستور بالا پروسه ی همانند سازی را آغاز کرده که محتویات جدول اولیه از جداول موجود در publication را همزمان میکند و سپس همانندسازی تغییرات افزایشی در آن جداول را شروع میکند.
کاربری که subscription را میسازد باید superuser باشد.

برای تایید subscription ساخته شده میتوانیم از کاتالوگ pg_stat_subscription استفاده کنیم.

 

world=# SELECT * FROM pg_stat_subscription; 
-[ RECORD 1 ]---------+------------------------------ subid                 | 16428 subname               | sub1 pid                   | 1111 
relid                 | received_lsn          | 0/172AF90 
last_msg_send_time    | 2018-12-05 22:11:45.195963+00 
last_msg_receipt_time | 2018-12-05 22:11:45.196065+00 
latest_end_lsn        | 0/172AF90 
latest_end_time       | 2018-12-05 22:11:45.195963+00

• Subid : OID سابسکریپشن
• Subname : نام سابسکریپشن
• Pid :شناسه پردازش
• Relid : OID از رابطه ای که worker همزمان میکند، که برای worker متقاضی تهی است.
• Received_lsn : اخرین مکان ورودی به سیستم، مقدار اولیه این فیلد 0 است.
• Last_msg_send_time : زمان ارسال اخرین پیام دریافت شده از WAL Sender
• Last_msg_reciept_time : زمان دریافت اخرین پیام دریافت شده از WAL Sender
• Latest_end_lsn : اخرین مکان ورود به سیستم که به WAL Sender گزارش شده است.
• Latest_end_time : زمان اخرین مکان ورود به سیستم که به WAL Sender گزارش شده است.

برای تایید وضعیت همانند سازی در master از pg_stat_replication استفاده میکنیم :

 

world=# SELECT * FROM pg_stat_replication; 
-[ RECORD 1 ]----+------------------------------ 
pid              | 1178 
usesysid         | 16427 usename          | rep application_name | sub1 client_addr      | 192.168.100.144 client_hostname  | client_port      | 58270 backend_start    | 2018-12-05 22:11:45.097539+00 backend_xmin     | state            | streaming
sent_lsn         | 0/172AF90
write_lsn        | 0/172AF90 flush_lsn        | 0/172AF90 replay_lsn       | 0/172AF90 write_lag        | flush_lag        |
replay_lag       | sync_priority    | 0
sync_state       | async

• Pid : شناسه پردازش فرآیند WAL SENDER
• Usesysid : OID کاربر وارد شده به پروسه ی WAL
• Usename : نام کاربر وارد شده به پروسه WAL
• Application_name : نام اپلیکیشن متصل به پروسه WAL
• Client_addr : آدرس IP کلاینت متصل به WAL. اکر مقدار این فیلد Null باشد نشان میدهد که کاربر توسط یک سوکت Unix بر روی سرور کانکت شده است.
• Client_hostname : نام هاست کاربر متصل
• Client_Port : شماره پورت TCP که کاربر برای اتصال با WAL استفاده میکند؛ که در صورت استفاده از سوکت Unix مقداری برابر -1 دارد.
• Backend_start : زمانی که پردازش اغاز شده است.
• State : حالت کنونی WAL که مقادیر آن میتواند : startup,catchup,streaming,backup و stopping باشد.
• Sent_lsn : آخرین مکان ورود به سیستم در این اتصال
• Write_lsn : آخرین مکان ورود به سیستم که توسط سرور آماده به کار بر روی دیسک نوشته شده است.
• Flushed_lsn : آخرین مکان ورود به سیستم که توسط سرور اماده به کار آماده شده است.
• Write_lag : مدت زمان بین آپدیت آخرین WAL به صورت محلی و دریافت اعلاناتی که توسط سرور آماده به کار نوشته شده است(اما هنوز به روز رسانی و عملی نشده است)
• Flush_lag : مدت زمان بین آپدیت آخرین WAL به صورت محلی و دریافت اعلاناتی که توسط سرور آماده به کار نوشته شده است ( به روز رسانی شده اما عملی نشده)
• Replay_lag : مدت زمان بین آپدیت آخرین WAL به صورت محلی و دریافت اعلاناتی که توسط سرور آماده به کار نوشته شده است ( هم به روز رسانی شده و هم عملی شده )
• Sync_priority : اولویت انتخاب یک سرور به عنوان سرور استندبای آماده به کار
• Sync_state : حالت هم زمان این سرور استندبای؛ مقادیر این حالت میتوانند : async,potential,sync,quorum باشند

 

برای اطمینان از اتمام انتقال اولیه میتوانیم Subscriber Log را مشاهده کنیم :

 

2018-12-05 22:11:45.096 UTC [1111] LOG:  logical replication apply worker for subscription "sub1" has started
2018-12-05 22:11:45.103 UTC [1112] LOG:  logical replication table synchronization worker for subscription "sub1", table "city" has started
2018-12-05 22:11:45.114 UTC [1113] LOG:  logical replication table synchronization worker for subscription "sub1", table "country" has started
2018-12-05 22:11:45.156 UTC [1112] LOG:  logical replication table synchronization worker for subscription "sub1", table "city" has finished
2018-12-05 22:11:45.162 UTC [1114] LOG:  logical replication table synchronization worker for subscription "sub1", table "countrylanguage" has started
2018-12-05 22:11:45.168 UTC [1113] LOG:  logical replication table synchronization worker for subscription "sub1", table "country" has finished
2018-12-05 22:11:45.206 UTC [1114] LOG:  logical replication table synchronization worker for subscription "sub1", table "countrylanguage" has finished

و یا چک کردن متغیر srsubstate بر روی کاتالوگ pg_subscribtion_rel؛ این کاتالوگ شامل تمامی حالات replication در هر subsctiption است.

 

world=# SELECT * FROM pg_subscription_rel;
-[ RECORD 1 ]---------
srsubid | 16428
srrelid | 16387
srsubstate | r
srsublsn | 0/172AF20
-[ RECORD 2 ]---------
srsubid | 16428
srrelid | 16393
srsubstate | r
srsublsn | 0/172AF58
-[ RECORD 3 ]---------
srsubid | 16428
srrelid | 16400
srsubstate | r
srsublsn | 0/172AF90
  • Srsubid : ارجاع به اشتراک دارد.
  • Srrelid : ارجاع به رابطه دارد.
  • Srsubstate : I = initialize, d = data is being copied, s = synchronized, r = ready
  • Srsublsn : LSN پایانی برای حالات s و r

 

میتوانیم بعضی از رکوردها را به صورت تست در postgreSQL10 وارد کرده و از اینکه آنها را در PostgreSQL11 داریم اطمینان حاصل کنیم.

 

PostgreSQL 10:

world=# INSERT INTO city (id,name,countrycode,district,population) VALUES (5001,'city1','USA','District1',10000); INSERT 0 1 
world=# INSERT INTO city (id,name,countrycode,district,population) VALUES (5002,'city2','ITA','District2',20000); 
INSERT 0 1 world=# INSERT INTO city (id,name,countrycode,district,population) VALUES (5003,'city3','CHN','District3',30000); 
INSERT 0 1

PostgreSQL 11 :

world=# SELECT * FROM city WHERE id>5000;  
 id  | name  | countrycode | district  | population 
------+-------+-------------+-----------+------------  
5001 | city1 | USA         | District1 |      10000  
5002 | city2 | ITA         | District2 |      20000 
5003 | city3 | CHN         | District3 |      30000 
(3 rows)

اکنون همه چیز آماده ی وصل کردن اپلیکیشن ما به PostgreSQL11 است؛ اما باید اول مطمئن شویم که در همانندسازی (replication) خطا و یا کندی وجود ندارد.

بر روی master :

 

world=# SELECT  application_name,  pg_wal_lsn_diff(pg_current_wal_lsn(), replay_lsn) lag FROM pg_stat_replication; 
-[ RECORD 1 ]----+----- 
application_name | sub1 lag              | 0

حال بایستی endpoint اپلیکیشن را به PostgreSQL11 تغییرداده و یا در صورتی که load balancer در اختیار داریم آن را به PostgreSQL11 انتقال دهیم.
اگر از load balancer ای مانند HAProxy استفاده میکنید میتوانیم همانند شکل زیر به صورت فعال در PostgreSQl10 و به صورت بک آپ در PostgreSQL11 استفاده کنیم.

 

در پایان میتوانید subscription را از master جدیدتان در PostgreSQL11 پاک کنید:

world=# DROP SUBSCRIPTION sub1; 
NOTICE:  dropped replication slot "sub1" on publisher 
DROP SUBSCRIPTION

و مطمئن شوید که کاملا پاک شده است :

 

world=# SELECT * FROM pg_subscription_rel; 
(0 rows)
world=# SELECT * FROM pg_stat_subscription;
(0 rows)

محدودیت ها :
قبل از استفاده از همانند سازی منطقی، محدودیت های زیر را در نظر داشته باشید:

دستورات پایگاه داده و دستورات DDL همانند سازی نمیشوند، طرح اولیه را میتوان با استفاده از pg_dump نسخه برداری کرد.

داده های دنباله ای نیز همانندسازی نمیشوند؛ داده های موجود در ستون های سریالی یا هویتی که توسط دنباله ها پشتیبانی میشوند به عنوان بخشی ازجدول همانند سازی میشوند، اما خود دنباله ها همچنان مقدار شروع را در subscriber نشان میدهد.

همانند سازی دستورات TRUNCATE پشتیبانی میشود، اما در هنگام کوتاه کردن گروه های جداول متصل به کلیدهای خارجی باید دقت بیشتری انجام شود.

هنگام تکرار یک عمل کوتاه، subscriber همان گروه جداول را که در ناشر کوتاه شده است یا به طور ضمنی توسط CASCADE جمع آوری شده است، منهای جداول که جزِئی از اشتراک نیستند را کوتاه میکند.

اشیا بزرگ همانند سازی نمیشوند، هیچ راه حل دیگری به غیر از ذخیره کردن داده ها در جداول نرمال وجود ندارد؛ تکثیر فقط از جداول پایه تا جداول پایه امکان پذیر است.
یعنی جداول موجود در انتشار و در قسمت اشتراک باید جداول نرمال باشند و نه view ها یا materialized view, partition root tables, foreign tables

در مورد پارتیشن ها میتوانید یک سلسله مراتب پارتیشن را یک به یک تکرار کنید اما در حال حاضر نمیتوانید به یک پارتیشن متفاوت replicate کنید.

در این آموزش ما سعی کردیم نحوه آپگرید کردن PostgreSQL10 به ورژن بعدی آن را به صورت جامع تشریح کنیم، امیدواریم از این مطلب حداکثر استفاده را برده باشید.