نوشته‌ها

database backup plans

آموزش بکاپ گیری از دیتابیس MySQL

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

روش‌های بکاپ گیری از دیتابیس MySQL

روش‌های مختلفی برای بکاپ گیری (Backup) از پایگاه داده MySQL وجود دارد که براساس نحوه پیاده سازی سرویس شما و زیرساختی که از آن استفاده می‌کنید متفاوت است. چنانچه سایت یا اپلیکیشن خود را بطور مستقیم روی سرور مجازی پیاده سازی کرده‌اید، باید از ابزار mysqldump برای بکاپ استفاده کنید. اگر در کنار سرویس‌های سایت یا اپلیکیشن خود، ابزار phpMyAdmin را هم نصب کرده‌اید، می‌توانید از رابط گرافیکی آن برای دانلود نسخه پشتیبان از پایگاه داده خود استفاده کنید. همچنین در صورتی که سرویس دهنده شما پنل دایرکت ادمین یا cpanel در اختیار شما قرار داده یا از ارائه دهندگان دیتابیس ابری خدمت می‌گیرید، می‌توانید به راحتی از پرتال آن‌ها برای زمان‌بندی و بک آپ گیری دیتابیس خود استفاده کنید. در ادامه هر کدام از این روش‌ها را با جزئیات بیشتر شرح می‌دهیم.

نحوه بکاپ گیری از دیتابیس با استفاده از خط فرمان CLI سرور

اگر سایت یا نرم افزار شما بدون واسطه روی سرور لینوکسی نصب شده که مدیریت آن بر عهده‌ی خود شماست، می‌توانید براحتی با استفاده از ابزار  mysqldump (که بصورت پیش‌فرض با دیتابیس mysql نصب می‌شود) از دیتایس بکاپ بگیرید. برای این کار به سرور خود ssh زده و دستور زیر را با دسترسی روت اجرا کنید:

$ sudo mysqldump -u [user] -p [database_name] > [filename].sql

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

$ mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql -u root -p

نحوه برگرداندن بکاپ دیتابیس با استفاده از خط فرمان CLI سرور

بازگردانی (Restore) بکاپ دیتابیسی که با استفاده از خط فرمان گرفته‌اید هم به اندازه بکاپ گیری آن ساده بوده و با یک خط انجام می‌شود. فقط به خاطر داشته باشید که برای برگرداندن بکاپ باید بجای mysqldump از دستور mysql استفاده کنید:

$ mysql -u [user] -p [database_name] < [filename].sql

نحوه بکاپ گیری از MySQL با استفاده از phpMyAdmin

یکی از ابزارهای اختیاری که مدیریت پایگاه داده MySQL را تسهیل می کند phpMyAdmin است. اگر این ابزار را روی سرور دیتابیس خود نصب کرده‌اید، می‌توانید از آن برای بکاپ گیری دیتابیس خود استفاده کنید.

برای این کار ابتدا وارد پنل phpMyAdmin شده و از ستون سمت چپ دیتابیس مورد نظر خود را انتخاب کنید.

سپس از نوار بالا روی لینک Export کلیک کنید. برای سرعت بیشتر متد بکاپ quick و فرمت sql را انتخاب کرده و دکمه Go را بزنید تا فایل بکاپ شما دانلود شود.

phpmyadmin database backup

نحوه برگرداندن بکاپ دیتابیس MySQL با استفاده از phpMyAdmin

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

بنابراین همیشه قبل از بازگردانی فایل پکاپ دیتابیس، دیتابیس فعلی را پاک کنید. برای این کار از ستون سمت چپ phpMyAdmin پایگاه داده مورد نظر خود را انتخاب کنید. سپس در انتهای لیست جدول‌ها گزینه Check All را انتخاب کرده و در لیست مقابل آن Drop را بزنید. برای تایید دکمه Yes را بزنید.

حالا برای بازگردانی بک آپ دیتابیس همانند ساخت بکاپ، روی دیتابیس مورد نظر کلیک کنید، فقط این بار بجای گزینه Export گزینه Import را انتخاب کنید. فایل بکاپ پایگاه داده را انتخاب کرده و دکمه Go را بزنید.

نحوه بکاپ گرفتن از دیتابیس در فضای ابری

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

یکی از روش‌های بهینه برای ذخیره سازی و نگهداری بک آپ های دیتابیس استفاده از فضای ابری است. فضای ذخیره سازی ابری که پرکاربردترین نوع آن آبجکت استوریج (object storage) است، به شما این امکان را می‌دهد تا فایل‌های خود را بصورت آبجکت در فضای امن و همیشه در دسترس ذخیره و نگهداری کنید. شرکت‌های ارائه‌ دهنده فضای ابری معمولا پلن‌های مختلفی متناسب با نیازهای شما ارائه می‌دهند که ذخیره‌سازی بکاپ‌های شما در فضای ابری را بسیار مقرون به صرفه می‌کند. برای مثال آمازون AWS پلن آبجکت استوریج با عنوان S3 IA (Infrequently Accessed) ارائه می‌کند؛ S3 IA یک آبجکیت استوریج برای فایل‌هایی است که به ندرت به آن‌ها نیاز خواهید داشت، دقیقا مثل فایل‌های بکاپ پایگاه داده. با استفاده از این پلن، هزینه نگهداری بکاپ‌های شما در فضای ابری بسیار پایین خواهد بود اما به ازای هر دانلود هزینه‌ای به فاکتور شما اضافه می‌شود. در ادامه نحوه بکاپ گیری از دیتابیس MySQL در فضای ابری AWS و همچنین آبجکت استوریج ابر آروان (که از استاندارد S3 آمازون AWS استفاده می‌کند) را آموزش خواهیم داد.

آموزش بک آپ گیری از دیتابیس روی آبجکت استوریج آمازون AWS

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

ابتدا یک باکت (Bucket) در کنسول آمازون AWS ایجاد کنید (دقت کنید که پلن 5GB Standard Free Tier را انتخاب کرده باشید). این قسمت در بخش S3 (زیر مجموعه Storage) قرار دارد. دقت کنید که قبل از ساخت باکت، region یا ناحیه مورد نظر خود را درست انتخاب کرده باشید. برای تغییر ناحیه از لیستی که سمت راست نوار بالای کنسول قرار دارد استفاده کنید.

حتما بعد از ساخت باکت یک حساب کاربری جدید با سطح دسترسی به باکت‌های S3 ایجاد کنید. برای این کار به بخش IAM در کنسول AWS وارد شده و از قسمت Users یک حساب کاربری جدید بسازید. هنگام ساخت یوزر جدید این موارد را رعایت کنید: اول اینکه نوع دسترسی کاربر (Access Type) را Programmatic Access انتخاب کنید تا کاربر شما امکان دسترسی با aws cli را داشته باشد. مورد دوم که باید رعایت کنید نوع permission انتخابی برای کاربر است که حتما باید شامل policy ادمین یا S3 باشد. در مرحله آخر هم حتما کلیدهای access و secret را ذخیره کنید زیرا فقط یک بار برای شما نمایش داده می‌شوند.

در نهایت شما باید موارد زیر را در اختیار داشته باشید که هنگام ذخیره سازی بکاپ به آن‌ها نیاز خواهیم داشت.

AWS Bucket Name

AWS Access Key ID

AWS Secret Access Key

بعد از ساخت باکت به ترمینال SSH سرور مجازی خود برگردید. برای اینکه امکان ذخیره سازی بکاپ دیتابیس روی فضای ابری AWS را داشته باشید باید AWS CLI را روی ماشین مجازی خود نصب کرده و Access key  و Secret Key خود را روی آن تنظیم کنید. در صورتی که از سرور مجازی AWS یا همان اینستنس EC2 استفاده می‌کنید این ابزار به صورت پیشفرض روی سرور شما نصب است.

$ apt install unzip curl
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ ./aws/install
$ aws configure

بعد از زدن دستور آخر، ترمینال Access Key و Secret Key اکانت AWS شما را خواهد پرسید. اطلاعات خود را وارد کرده و اینتر کنید. از این به بعد به راحتی و تنها با یک خط می‌توانید بک آپ های دیتابیس خود را به فضای ابری AWS منتقل کنید:

$ aws s3 cp [filename].sql s3://[bucket-name]

با استفاده از دستور زیر می‌توانید لیست بکاپ‌های دیتابیس My SQL روی فضای ابری را مشاهده کنید:

$ aws s3 ls s3://[bucket-name]/

آموزش بک آپ گیری از دیتابیس روی آبجکت استوریج ابر آروان

چنانچه تمایل دارید از فضای ذخیره سازی ابری ایرانی برای نگهداری بک آپ پایگاه داده خود استفاده کنید، آبجکت استوریج ابر آروان و ایرانسل گزینه‌های مناسبی هستند. با توجه به اینکه ابر آروان دارای پلن فضای ذخیره سازی رایگان ۵ گیگابایتی (با محدودیت پهنای باند ۲۰ گیگابایت) است، ما هم در ادامه نحوه پشتیبان گیری دیتابیس روی این فضای ابری را شرح می‌دهیم. قیمت فضای ذخیره سازی آبجکت با همین مشخصات در خدمات ابری ایرانسل ماهیانه حدودا ۱۱۸۸۰ تومان است.

نحوه ذخیره سازی بکاپ دیتبایس روی فضای ابری ابر آروان بسیار شبیه به آمازون AWS است، با این تفاوت که به جای ابزار aws باید از rclone استفاده کنید. rclone قابلیت انتقال فایل به اکثر ارائه دهندگان فضای ابری، مخصوصا آن‌هایی که از استاندارد S3 آمازون استفاده می‌کنند را داراست. برای این منظور ابتدا پکیج rclone را نصب کرده و تنظیمات آن را به صورت زیر انجام دهید:

$ apt install rclone
$ rclone config

بعد از زدن آخرین دستور، لیست استوریج‌هایی که به rclone اضافه کرده‌اید را مشاهده خواهید کرد. قاعدتا این لیست باید خالی باشد. کاراکتر n  را برای اضافه کردن استوریج جدید وارد کنید. سپس یک اسم دلخواه برای سرویس دهنده خود وارد کنید، مثلا arvan. در مراحل بعدی نوع آبجکت استوریج را s3 انتخاب کرده و other را برای provider وارد کنید.

در مرحله بعدی false را انتخاب کنید تا بتوانید access key و secret key آروان را به صورت دستی وارد کنید. سپس گزینه ۱ را برای ریجن انتخاب کرده و در آخر آدرس endpoint که از ابر آروان دریافت کرده‌اید را وارد کنید.

از این پس می‌توانید با دستور زیر بک اپ های خود را به فضای ابری آروان منتقل کنید:

$ rclone copy [filename].sql arvan:[bucket-name]/[filename].sql

بکاپ گیری و بازگردانی اتوماتیک دیتابیس MySQL

راهکارهایی که تا الان بررسی کردیم مزایا و معایب متفاوتی دارند. اما مشکل یا عیب اصلی که بین همه‌ی این روش‌ها مشترک است، مدت زمان زیاد بازیابی یا ریستور دیتابیس است که Disaster Recovery Plan شما را بسیار کند می‌کند.  در صورتی که سرور عملیاتی شما دچار خرابی شده یا از دسترس خارج شود، شما نسخه‌ای از دیتابیس خود را در فضای ابری خواهید داشت، اما برگرداندن دیتابیس از فضای ابری و راه اندازی آن در سرور عملیاتی جدید زمان زیادی نیاز دارد که صدمه زیادی به سایت یا سرویس شما می‌رساند.

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

استفاده از سرویس دیتابیس ابری مدیریت شده به شما این امکان را می‌دهد تا در کنار مزایای همه روش‌های مذکور، این ۲ چالش برزگ را هم حل کنید.

بکاپ گیری و بازگردانی اتوماتیک دیتابیس با استفاده از دیتابیس ابری مدیریت شده

استفاده از دیتابیس ابری مدیریت شده به شما این توانایی را می‌دهد تا:

بکاپ اتوماتیک با فاصله زمانی کوتاه روی سرورهای عملیاتی جاری و ثالث ایجاد کنید.

هشدار کارایی و سلامت برای دیتابیس‌های خود داشته باشید.

تنها با یک کلیک و در عرض چند ثانیه بک آپ دیتابیس را روی سرور عملیاتی بازگردانید.

برای دسترسی به لیست بکاپ‌های دیتابیس ابتدا وارد پنل مدیریت پنکیک شوید. در صورتی که قبلا دیتابیس خود را ایجاد کرده باشید، سکوی ابری پنکیک بصورت خودکار هر ساعت از دیتابیس شما فول بکاپ می‌گیرد. برای مشاهده لیست بکاپ‌ها، کافی است دیتابیس مورد نظر خود را از ستون سمت راست انتخاب کرده و وارد تب Fork Database شوید. لیست نسخه‌های بکاپ دیتابیس شامل ۴۸ فول بکاپِ ساعتی از ۴۸ ساعت گذشته و همچنین ۲۸ فول بکاپِ روزانه از ۳۰ روز گذشته است.

pancake DBaaS backup

برای برگرداندن هر کدام از بکاپ‌ها کافی است روی آیکون کنار ردیف مورد نظر کلیک کرده تا در کمتر از یک دقیقه دیتابیس مورد نظر روی سرور عملیاتی ریستور شود. بک آپ گیری اتوماتیک از دیتابیس و بازگردانی آن در دیتابیس‌های ابری پنکیک منحصر به پایگاه داده ی خاصی نیست و به صورت پیش‌فرض برای همه‌ی دیتابیس‌های پنکیک شامل MySQL، PostgreSQL، MongoDB و SQL Server فعال است.

aws ec2 rds

مقایسه سرویس دیتابیس آمازون AWS با پیاده سازی دستی دیتابیس ابری در سرور مجازی EC2

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

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

پیاده سازی دستی دیتابیس ابری روی EC2

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

سرور مجازی ابری EC2 آمازون AWS

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

مزایای پیاده‌سازی دستی دیتابیس روی سرور مجازی EC2

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

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

معایب پیاده‌سازی دستی دیتابیس ابری روی EC2

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

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

نکته دوم فضای ذخیره‌سازی اینستنس‌های EC2 است، به صورت پیش فرض SSD های معمولی (با iops حداکثر ۱۶۰۰۰) به سرورهای مجازی EC2 تخصیص داده می‌شود. در صورتی که بخواهید از فضای ذخیره‌سازی با iops بالا (تا ۶۴۰۰۰) استفاده کنید، باید هزینه بیشتری پرداخت کنید.

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

استفاده از دیتابیس مدیریت شده RDS آمازون

سرویس دیتابیس مدیریت شده RDS جزو خدماتی بود که سال ۲۰۰۹ به لیست سرویس‌های AWS اضافه شد. این سرویس با پشتیبانی از پایگاه داده MySQL و با هدف ساده‌سازی نصب، راه‌اندازی و مدیریت دیتابیس‌های رابطه‌ای معرفی شد. این سرویس که جزو خدمات DBaaS قرار می‌گیرد نوعی SaaS است که علاوه برای میزبانی پایگاه داده در فضای ابری، مدیریت آن در سطح اپلیکیشن را هم انجام می‌دهد. از جمله ویژگی‌های سرویس دیتابیس مدیریت‌شده می‌توان موارد زیر را نام برد:

  • آپدیت خودکار دیتابیس
  • مانیتورینگ هوشمند
  • پشتیبان‌گیری خودکار
  • رپلیکیشن و تحمل خطا
  • دسترسی پذیری بالا

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

aws rds dbaas

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

جدول زیر مقایسه‌ای از قیمت ماهیانه اینستنس‌های EC2 و RDS با منابع مشابه در AWS را نشان می‌دهد.

EC2 – m4.large RDS – db.m4.large

RDS – db.m4.large – Multi-AZ 

هسته پردازشگر ۲ ۲ ۲
رم ۸ گیگابایت ۸ گیگابایت ۸ گیگابایت
فضای ذخیره‌سازی

۵۰ گیگابایت

General SSD

۵۰ گیگابایت

General SSD

۵۰ گیگابایت

General SSD

قیمت ماهانه ۷۷.۳۲ دلار ۱۳۳.۸۵ دلار ۲۶۷.۷۰ دلار

همانطور که مشاهده می‌کنید قیمت دیتابیس ابری مدیریت‌شده AWS تقریبا ۷۵ درصد بیشتر از اینستنس EC2 با منابع مشابه است. همچنین در صورت استفاده از پلن Multi-AZ با نود رپلیکیشن، هزینه شما دو برابر می‌شود.

کدام راهکار را انتخاب کنیم؟

اگر سرویس یا اپلیکیشنی که روی پایگاه داده میزبانی می‌کنید حساسیت بالایی دارد، حتما از دیتابیس مدیریت‌شده Multi-AZ استفاده کنید.

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

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

دیتابیس مدیریت شده پنکیک

سکوی دیتابیس ابری پنکیک، اولین و تنها ارائه دهنده دیتابیس مدیریت شده در ایران است که پایگاه‌داده‌های MySQL، MongoDB و PostgreSQL را به صورت سرویس (DBaaS) روی بهترین دیتاسنترهای ایران و خارج ارائه می‌دهد. چنانچه سایت یا سرویس شما در ایران میزبانی می‌شود یا پرداخت هزینه بالای دلاری AWS برای شما میسر نیست، می‌توانید در پلتفرم دیتابیس پنکیک از کلیه ویژگی‌های دیتابیس‌های مدیریت شده استفاده کنید. در جدول زیر مقایسه پلن‌های تکی و مولتی نود سرویس دیتابیس آمازون با پلن‌های مشابه آن در پنکیک مقایسه شده است.

RDS – db.m4.large Pancake DBaaS – 4- Instance RDS – db.m4.large – Multi-AZ

Pancake DBaaS – 4-Instance Replication

هسته پردازشگر ۲ ۴ ۲ ۴
رم ۸ گیگابایت ۸ گیگابایت ۸ گیگابایت ۸ گیگابایت
فضای ذخیره‌سازی

۵۰ گیگابایت

General SSD

۴۰ گیگابایت

High iops NVMe

۵۰ گیگابایت

General SSD

۴۰ گیگابایت

High iops NVMe

قیمت ماهانه ۱۳۳.۸۵ دلار ۹۰۰.۰۰۰ تومان ۲۶۷.۷۰ دلار ۱.۸۰۰.۰۰۰ تومان

pancake dbaas

دیتابیس ابری رایگان

خبر خوب برای استارتاپ‌ها و شرکت‌های دانش بنیان! با ثبت دیتابیس ابری پنکیک در سامانه ایران نوآفرین، شرکت‌های دانش بنیان هم اکنون می‌توانند تا ۶ ماه از سکوی پایگاه داده ابری پنکیک به صورت رایگان استفاده کنند.

نحوه دریافت اعتبار رایگان دیتابیس ابری

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

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

ایران نوآفرین دیتابیس ابری

محدودیت استفاده از دیتابیس ابری رایگان

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

مهلت استفاده از دیتابیس ابری رایگان

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

آیا اعتبار رایگان دیتابیس ابری شامل پایگاه داده ی خاصی است؟

خیر. امکان استفاده از هر کدام از دیتابیس های ابری MySQL، PostgreSQL،  MongoDB و InfluxDB با اعتبار رایگان وجود دارد.

در ثبت نام سامانه ایران نوآفرین به مشکل خوردم، با شما تماس بگیرم؟

متاسفانه سکوی پایگاه داده ابری پنکیک نمی‌تواند کمکی در ثبت نام شما در سامانه ایران نوآفرین بکند. لطفا در صورت بروز مشکل با شماره تلفن‌های سامانه ایران نوآفرین تماس بگیرید.

 

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

پایگاه داده به عنوان سرویس که بیشتر با عنوان سرویس دیتابیس یا پایگاه داده مدیریت شده نیز شناخته می‌شود اولین بار در سال ۲۰۰۹ با معرفی یکی از سرویس های 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‌ است.

راه‌های تشخیص کوئری‌های کند در پستگرس PostgreSQL

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

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

  • استفاده بهینه از لاگ کوئری‌های کند
  • چک کردن دستورات اجرا با استفاده از auto_explain
  • تکیه کردن بر اطلاعات تجمیع شده در pg_stat_statements

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

استفاده کردن از لاگ کوئری‌های کند

استفاده از لاگ کوئری‌ها یک روش سنتی برای شناسایی کوئری‌های کند است. ایده کلی به این صورت است:

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

در کانفیگ اولیه پستگرس این لاگ فعال نیست و باید آن را فعال کنید. در این جا چند انتخاب دارید، اگر می‌خواهید این لاگ را به صورت Global فعال کنید بایستی فایل postgresql.conf را به شکل زیر تغییر دهید:

log_min_duration_statement = 5000

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

1- postgres=# SELECT pg_reload_conf();
2- pg_reload_conf 
3- ----------------
4- t
5- (1 row)

با ویرایش کردن postgresql.conf تغییر بر روی کل دیتابیس انجام خواهد شد که به نظر میرسد خیلی دقیق نباشد. اگر می‌خواهید دقت را بالا ببرید بایستی برای یک یوزر خاص یا یک دیتابیس خاص ویرایش زیر را انجام دهید:

1- postgres=# ALTER DATABASE test SET log_min_duration_statement = 5000;
2- ALTER DATABASE

Alter Database به ما اجازه می‌دهد که تغییرات را بر روی یک پایگاه داده خاص انجام بدهیم.
در این جا برای تست یک کوئری کد را اجرا می‌کنیم:

1- postgres=# \c test
2- You are now connected to database "test" as user "hs".
3- test=# SELECT pg_sleep(10);
4- pg_sleep
5- ----------
6-
7- (1 row)

نتیجه به صورت لاگ زیر نشان داده می‌شود:

2018-08-20 08:19:28.151 CEST [22845] LOG: duration: 10010.353 ms statement: SELECT pg_sleep(10);

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

چک کردن برنامه‌های اجرایی ناپایدار

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

1- test=# CREATE TABLE t_demo AS
2- SELECT * FROM generate_series(1, 10000000) AS id;
3- SELECT 10000000
4- test=# CREATE INDEX idx_id ON t_demo (id);
5- CREATE INDEX
6- test=# ANALYZE;
7- ANALYZE

Table ای که در اینجا ساختیم 10 میلیون ردیف دارد. حال بیایید به کوئری زیر نگاه کنیم:

1- test=# explain SELECT * FROM t_demo WHERE id < 10;
2- QUERY PLAN
3- ---------------------------------------------------------------------------
4- Index Only Scan using idx_id on t_demo (cost=0.43..8.61 rows=10 width=4)
5- Index Cond: (id < 10)
6- (2 rows)
7-
8- test=# explain SELECT * FROM t_demo WHERE id < 1000000000;
9- QUERY PLAN
10- ------------------------------------------------------------------
11- Seq Scan on t_demo (cost=0.00..169248.60 rows=10000048 width=4)
12- Filter: (id < 1000000000)
13- JIT:
14- Functions: 2
15- Inlining: false
16- Optimization: false
17- (6 rows)

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

مثال زیر را در نظر بگیرید:

1- test=# LOAD 'auto_explain';
2- LOAD
3- test=# SET auto_explain.log_analyze TO on;
4- SET
5- test=# SET auto_explain.log_min_duration TO 500;
6- SET

دستور load ماژول auto_explain را در دیتابیس بارگذاری می‌کند. در یک سیستم تولیدی می‌توان از Postgresql.conf یا Alter Database/Alter Table نیز برای بارگذاری ماژول استفاده کرد. اگر می‌خواهید تغییر در postgresql.conf نیز انجام شود، خط زیر را به فایل کانفیگ اضافه کنید:

session_preload_libraries = 'auto_explain';

Session_preload_libraries اطمینان حاصل می‌کند که ماژول به طور پیش فرض بر روی تمام کانکشن‌های دیتابیس تنظیم شده باشد. دیگر نیازی به دستور Load نیست، بعد از ایجاد اولین تغییر می‌توانید کوئری زیر را اجرا کنید:

1- test=# SELECT count(*) FROM t_demo GROUP BY id % 2;
2- count
3- ---------
4- 5000000
5- 5000000
6- (2 rows)

کوئری به بیش از 500 میلی ثانیه احتیاج دارد و سپس در لاگ نمایش داده میشود:

1- 2018-08-20 09:51:59.056 CEST [23256] LOG: duration: 4280.595 ms plan:
2- Query Text: SELECT count(*) FROM t_demo GROUP BY id % 2;
3- GroupAggregate (cost=1605370.36..1805371.32 rows=10000048 width=12)
4- (actual time=3667.207..4280.582 rows=2 loops=1)
5- Group Key: ((id % 2))
6- -> Sort (cost=1605370.36..1630370.48 rows=10000048 width=4)
7- (actual time=3057.351..3866.446 rows=10000000 loops=1)
8- Sort Key: ((id % 2))
9- Sort Method: external merge Disk: 137000kB
10- -> Seq Scan on t_demo (cost=0.00..169248.60 rows=10000048 width=4)
11-  (actual time=65.470..876.695 rows=10000000 loops=1)

مزیت این رویکرد این است که شما می‌توانید کوئری های کند را به راحتی شناسایی کنید و ببینید که چه زمان کوئری در مورد برنامه تصمیم اشتباهی می‌گیرد. با این حال جمع‌آوری اطلاعات هنوز مشکل است چرا که ممکن است میلیون‌ها کوئری در برنامه داشته باشید.

چک کردن Pg_Stat_Statements

روش سوم استفاده از pg_stat_statements است. ایده این روش گروه‌بندی کوئری‌های یکسانی است که فقط پارامترهای متفاوتی دارند. فعال کردن این ویژگی به شما کمک می‌کند که از همه اتفاقات سیستم باخبر شوید. برای فعال کردن pg_stat_statements خط زیر را به Postgresql.conf اضافه کرده وسیستم را ری‌استارت کنید:

1- shared_preload_libraries = 'pg_stat_statements'

سپس CREATE EXTENSION pg_stat_statements را در دیتابیس خود اجرا کنید و Postgresql برای شما یک نما ایجاد می‌کند.

1- test=# CREATE EXTENSION pg_stat_statements;
2- CREATE EXTENSION
3- test=# \d pg_stat_statements
4- View "public.pg_stat_statements"
5- Column        |       Type       | Collation | Nullable | Default
6- ---------------------+------------------+-----------+----------+---------
7- userid               | oid              |           |          |
8- dbid                 | oid              |           |          |
9- queryid              | bigint           |           |          |
10-query                | text             |           |          |
11-calls                | bigint           |           |          |
12-total_time           | double precision |           |          | 
13-min_time             | double precision |           |          |
14-max_time             | double precision |           |          |
15-mean_time            | double precision |           |          |
16-stddev_time          | double precision |           |          |
17-rows                 | bigint           |           |          |
18-shared_blks_hit      | bigint           |           |          |
19-shared_blks_read     | bigint           |           |          |
20-shared_blks_dirtied  | bigint           |           |          |
21-shared_blks_written  | bigint           |           |          |
22-local_blks_hit       | bigint           |           |          |
23-local_blks_read      | bigint           |           |          |
24-local_blks_dirtied   | bigint           |           |          |
25-local_blks_written   | bigint           |           |          |
26-temp_blks_read       | bigint           |           |          |
27-temp_blks_written    | bigint           |           |          |
28-blk_read_time        | double precision |           |          |
29-blk_write_time       | double precision |           |          |

این نما به ما می‌گوید که کدام کوئری چند بار اجرا شده است و در مورد کل زمان اجرای کوئری‌ها و همچنین در مورد توزیع زمان اجرا برای دسته‌های مختلف از کوئری‌ها به ما اطلاعات می‌دهد.
در ادامه می‌توانید داده های به دست آمده از pg_stat_statments را مورد آنالیز نیز قرار دهید.
مزیت این روش در این است که شما می‌توانید میلیون‌ها کوئری سریع را پیدا کنید. علاوه بر آن این روش در مورد رفتار I/O کوئری‌های نیز به شما اطلاعات می‌دهد. نکته منفی اینجا ست که دنبال کردن کوئری‌هایی که بیشتر مواقع سریع و بعضی اوقات کند هستند مشکل است.

نتیجه

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

تاثیر استفاده از DBaaS بر کسب و کار

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

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

 

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

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

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

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

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

 

    صرفه جویی در مخارج

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

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

 

    داده ها و مصارف خود را ردیابی کنید

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

با استفاده از این روش میتوانید عملکرد خود را به صورت موثر بررسی کنید و این در حالی است که دیگر مسئولیت سنگین مدیریت دیتابیس‌های خود را بر عهده ندارید.

 

    مقیاس پذیری و در دسترس بودن

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

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

 

 

    عدم تجربه

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

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

 

    دیتابیس‌های موقتی

اگر از دیتابیس به عنوان آزمایش مقادیر back-end استفاده می‌کنید، DBaaS به شما این امکان را می‌دهد که دیتابیس‌های مورد نظر خود را با مقادیری که می‌خواهید بسازید و سپس هر زمان نیازی به آن نداشتید آن را پاک کنید.

 

    بازیابی اطلاعات مشکل نخواهد بود

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

 

    امنیت داده‌ها

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

 

    راه حلی برای آینده

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

 

    رشد DBaaS

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

سرویس دیتابیس

SQL یا NoSQL

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

ساختار داده‌ها

اولین و اصلی‌ترین عامل در تصمیم‌گیری بین این ۲ پایگاه داده، شکل داده‌های شماست. اگر داده‌های شما در درجه اول ساختار یافته باشند احتمالاً SQL انتخاب مناسبی است.

پایگاه‌داده‌ی SQL برای سیستم‌های تراکنشی مانند ابزارهای ارتباط با مشتری، نرم افزارهای حسابداری و سیستم‌های تجارت الکترونیکی انتخاب مناسبی است. در دیتابیس SQL هر ردیف یک موجودیت مجزا و هر ستون توصیف کننده آن موجودیت است (مانند مشتری و آدرس آن).

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

ACID مخفف ویژگی‌های زیر است:

  • Atomicity یا تجزیه ناپذیری: هر تراکنش یا کاملاً موفق می‌شود یا کاملاً شکست می‌خورد.
  • Consistency یا همخوانی (سازگاری) : داده‌هایی که به یک پایگاه داده نوشته می‌شوند باید طبق کلیه قوانین تعریف شده معتبر باشند.
  • Isolation یا انزوا: هنگامی که تراکنش‌ها به طور همزمان انجام می‌شوند، با یکدیگرتقابل نداشته و به صورت پی در پی انجام می‌شوند و عمل می‌کنند.
  • Durability یا پایایی: پس از انجام تراکنش در بانک اطلاعاتی، حتی در صورت خرابی سیستم، دائمی تلقی می‌شود.

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

بنابراین اگر داده‌های شما ساختار یافته‌اند و رعایت ACID ضروری است، SQL یک انتخاب عالی است.

از طرف دیگر، اگر الزامات داده شما روشن نیستند یا داده‌های شما بدون ساختار است، NoSQL ممکن است انتخاب بهتری برای شما باشد.

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

با NoSQL می‌توانید:

  • مستندات بسیاری درست کنید بدون اینکه ساختار دقیق آن‌ها را از قبل تعیین کنید.

  • بدون تغییر فیلدهای مستندات موجود، فیلدهای جدیدی به دیتابیس خود اضافه کنید.

  • اسناد و مدارکی را ذخیره کنید که ساختار منحصر به فرد خود را دارند.

  • چندین پایگاه داده با ساختار و سینتکس مختلف داشته باشید.

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

دسترسی پایه:

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

حالت نرم:

حالت پایگاه داده ممکن است به مرور زمان تغییر کند.

سازگاری نهایی:

در نهایت، پایگاه داده سازگاری خود را بازیافته و داده‌ها در آینده در دسترس خواهند بود.

گرچه مدل پایه برای انعطاف پذیری بالا طراحی شده اند، بعضی پایگاه داده های NoSQL هم وجود دارند که با ACID سازگاری کامل دارند.

قابلیت جستجوی (کوئری) داده‌ها

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

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

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

در عوض یک پایگاه داده NoSQL انعطاف پذیری بیشتری در تنوع داده‌هایی که می‌خواهید ذخیره کنید فراهم می‌کند، اما به دلیل اختلافات بسیار زیاد در ساختار داده‌ها به اندازه یک پایگاه داده SQL در کوئری کردن کارآمد نخواهد بود.

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

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

شما هرچند وقت از داده‌ها کوئری می‌گیرید؟ چه کسی این درخواست‌ها را اجرا می‌کند؟ پاسخ این سؤالات بر انتخاب شما بین SQL و NoSQL تأثیر خواهد گذاشت!

مقیاس‌پذیری

همیشه باید میزان رشد اطلاعات خود را در نظر داشته باشید، چرا که مقیاس‌پذیری SQL و NoSQL متفاوت است.

دیتابیس‌های بر پایه SQL رشد اصطلاحاً عمودی دارند،‌ به این معنی که شما برای افزایش مقیاس پایگاه داده بایستی منابع سرور (رم، پردازشگر یا SSD) را افزایش دهید. دیتابیس‌های SQL برای پیاده‌سازی روی یک سرور طراحی شده‌اند تا بتوانند یکپارچگی داده‌ها را حفظ کنند، لذا به مقیاس‌پذیری راحتی ندارند.

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

یک مثال جالب برای مقایسه بین SQL وNoSQL کیک عروسی است، در SQL برای آنکه بتوانید به افراد بیشتری کیک بدهید باید لایه‌های بیشتری به کیک اضافه کنید اما در NoSQL می‌توانید هرچه می‌خواهید کاپ‌کیک درست کنید!

همینطور که کسب و کارتان رشد می‌کند باید به فکر دیتابیس بزرگ‌تر هم باشید، پس مقیاس‌پذیری فراموش نکنید!

مشترکات

هردو بانک اطلاعتی SQL و NoSQL داری جوانب منفی و مثبت هستند،‌ برای همین حرکاتی صورت گرفته تا بتوان از بهترین مشخصات هردو دیتابیس بهره گرفته و آن‌ها را ادغام کنند تا کاربران بتوانند ۲ دنیای مختلف را به خوبی درک کنند.

به عنوان مثال MySQL که معروف‌ترین پایگاه‌داده‌ی رابطه‌ای متن باز است، MYSQL Document Store را ارائه داده است، که ساختار یک دیتابیس MySQL را به همراه قابلیت انعطاف‌پذیری و در دسترس بودن NoSQL پوشش می‌دهد، بدون اینکه نیاز به پیاده‌سازی یک NoSQL به صورت جداگانه داشته باشید.

MongoDB هم به عنوان معروف‌ترین دیتابیس NoSQL، تراکنش های multi-document با قابلیت های ACID ارائه می‌کند. پایگاه داده NoSql مدیریت شده ی AWS، به نام DynamoDB هم ویژگی های ACID را ارائه می‌دهد.

با راه اندازی آسان پایگاه داده‌های پنکیک، که دیتابیس‌ها را به صورت سرویس ارایه می‌دهد، شما می‌توانید از ۲ پایگاه داده ی SQL و NoSQL در معماری اپلیکیشن خود بهره بگیرید تا نیازهای ذخیره داده‌های خود را برآورده سازید.

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

پایگاه‌داده‌های پنکیک

چه از SQL استفاده کنید یا NoSQL پنکیک آپشن‌های زیر را برای انتخاب ارائه می‌کند:

  • MYSQL – همانطور که اشاره شد وسیع‌ترین و محبوب‌ترین پایگاه داده رابطه‌ای.

  •  PostgreSQL – پایگاه داده متن باز در سطح سازمانی و مبتنی بر توسعه پذیری

  •  MongoDB – محبوب‌ترین نرم‌افزار پایگاه داده ی NOSQL.

نتیجه‌گیری

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

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

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

در عوض بانک‌های اطلاعاتی NoSQL انعطاف‌پذیری و مقیاس‌پذیری بسیار بیشتری را ارائه می‌دهند و این خود باعث توسعه سریع و مکرر آن می‌شود.

 امیدواریم این مطب راه تصمیم‌گیری را هنگام انتخاب دیتابیس و آپشن‌هایی که با آن‌ها رو به رو هستید، آسان‌تر کرده باشد.

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

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

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

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

 

۸ مزیت DBaaS

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

۱. DBaaS باعث صرفه جویی منابع مالیتان می‌شود:

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

۲ .سرعت بالا سرویس پایگاه داده:

تأمین دیتابیس با سرعت بالا و به صورت آنی، مسلماً زمان‌ کمتری را نسبت به دیتابیس‌های سنتی از شما گرفته و این مورد نه تنها به شما زمان بیشتری برای بازاریابی و فروش می‌دهد، که همچنین باعث کمتر شدن هزینه‌ها در آینده می‌شود.

۳. برون‌سپاری:

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

۴. امنیت بالاتر سرویس دیتابیس:

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

۵. بررسی میزان استفاده:

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

۶. نیروی انسانی:

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

۷. آزادسازی منابع سرور:

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

۸. مقیاس‌پذیری سرویس پایگاه داده:

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

آیا پایگاه داده به عنوان سرویس برای سازمان شما مناسب خواهد بود؟

 DBaaS پلتفرمی قدرتمند به شما ارايه خواهد کرد که برای استفاده‌های گسترده‌ای مناسب خواهد بود، برای آنکه دقیقاً متوجه شوید که آیا سرویس دیتابیس برای شما مناسب است یا خیر، ۲ سؤال مطرح می‌شود:

۱) تغییرات و رشد تکنولوژی در شرکت شما چگونه است؟

۲) به چه مواردی از یک پایگاه داده نیاز خواهید داشت؟

یک مورد دیگر که باید در نظر بگیرید این است که کدام یک از انواع DbaaS برای شما مناسب خواهد بود؟ چرا که می‌توانید از ۲ مدل: از پیش برنامه‌ریزی شده و یا سفارشی‌سازی خودتان استفاده کنید.

زمان آن رسیده که از DBaaS استفاده کنید!

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

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