یک DBA باید کنترل کنه که دیتابیسها بک آپ دارن، به خوبی کانفیگ شده و بروز هستن، امنیت لازم رو دارن و سرعت عملکردشون مناسبه.
من شغلم رو اینجوری برای دوستانم تعریف میکنم : " گاهی دیدین سایتها کند هستن یا دیتا شما رو از دست میدن؟ این وظیفه منه که چنین اتفاقی نیوفته. من تنها فرد درگیر تو این ماجرا نیستم چون برنامه نویسها و مهندسهای دیگه هم هستن، اما من مسئول بخشی هستم که دیتا شما رو نگهداری میکنه مثل پروفایلتون ، سفارشهاتون، تاریخچه مرورگرتون و در واقع تمام دیتایی که شرکت ها در مورد شما جمع آوری کردن!!"
clustering, log shipping, mirroring, Windows Azure
و دیگر تکنولوژی ها استفاده بشه.
وقتی دیتابیس دان بشه، تمام بیزینس متوقف میشه. اگه شما فروشنده آنلاین هستین و وب سایت شما دان بشه، قطعا یه وضعیت اورژانس پیش میاد. حتی با کند شدن دیتابیس میتونه موقعیت اضطراری برای سازمان ایجاد کنه. حضور DBA ها میتونه در این مواقع موثر باشه.
وقتی یه نفر تصادفی دیتا رو delete میکنه، تمام بیزینس میتونه دچار مشکل بشه، متاسفانه تو سازمان ها افراد زیادی هستن که به دیتابیس دسترسی دارن و گاهی بین اونها افراد غیر متخصص هم وجود دارن و حتی متخصص ها هم ممکنه گاهی اشتباه کنن. DBA ها کمک میکنن که از بروز فاجعه جلوگیری بشه.
وظیفه DBA ها حفاظت از دیتا مهم هست، پس هرجا دیتا مهم وجود داره میتونین اونارو پیدا کنین. امروزه دیتا مهم همه جا هست پس DBA ها رو همه جا میتونین پیدا کنین، تو همه سازمان های بزرگ و کوچیک.
معمولا شرکت های کوچیک با 1 یا 2 دیتابیس به اندازه لازم کار برای DBA تمام وقت ندارن، در این موارد معمولا فردی در شرکت هست که بخشی از تایمش رو به انجام وظایف DBA مشغوله، به این افراد به اصطلاح “accidental DBAs” گفته میشه. احتمالا خیلی از DBA های فعلی زمانی اینجوری وارد این شغل شدن و گاهی هم هیچ قصدی برای این حوزه ندارن و فقط مسئول بخشی از این وظایف هستن.
هرچه شرکت بزرگتر باشه DBA های بیشتری داره، شرکت های بزرگ معمولا تیم از DBA ها دارن.
بله، میتونه و باید این اجازه بهش داده بشه. این روزها همه دارن از خونه کار میکنن اما گاهی مدیرها دوست دارن DBA هاشون رو در محل کار ببینن. حساسیت بی موردی در این زمینه وجود داره چون DBA ها از با ارزش ترین دارایی شرکت حفاظت میکنن، یعنی دیتا شرکت.
بخاطر شرایط اضطراری معمولا DBA ها در جلسات موقت حضور دارن و بنا به سطح امنیت این موارد، مدیر دوست داره رو در رو، آدما رو تو جلسه ببینه و تو اتاق گیرشون بندازه.
گاها شرکت ها ترجیح میدن به دلایل زیر DBA های ریموت رو استخدام کنن:
شرکت تو نقطه دور افتاده ای قرار داره
برای مثال، یکی از مشتریان من در شهر کوچیکی هست و براحتی نمیتونه توی اون شهر DBA پیدا کنه. همچنین DBA ها حاضر نمیشن بخاطر این شغل محل زندگیشون تغییر بدن، پس کمپانی ناچاره که از DBA ریموت استفاده کنه.
شرکت به دنبال مهارت ویژه ای هست که سخت پیدا میشه
برای مثال، یکی از مشتریان من نیاز به راه اندازی Distributed Availability Groups داشت که به ندرت استفاده میشه و تعداد DBA های که این تجربه رو داشته باشن خیلی محدوده، پس ناچار شد این بخش از کار رو به DBA ریموت بسپاره.
تحلیلگر داده کوئری مینویسه تا جواب های مناسب رو از دیتا استخراج کنه، اما DBA اطمینان حاصل میکنه که جواب کوئری با سرعت مناسبی دریافت بشه.
تحلیلگر داده زمان زیادی صرف میکنه تا کوئری های جدید در SQL بنویسه، از ابزارهای گزارش استفاده میکنه، اونها معمولا به طور مستقیم با کاربران بیزینس کار میکنن و اطلاع کاملی از بیزینس و جزئیات اون نسبت به DBA ها دارن. دقیقا میدونن هر جدول در دیتابیس چه معنی داره و ارتباط بین جداول رو هم کاملا شناخت دارن و کار تحلیل، نوشتن گزارش و صحبت با کاربران رو انجام میدن تا نیازمندی ها رو مشخص کنن.
یه دیتابیس ادمین معمولا اطلاعات کمتری از جزئیات بیزینس داره. اونها بیشتر در مورد سیستمی که دیتا رو نگهداری میکنه میدونن مثل Microsoft SQL Server, Postgres, MySQL, Oracle و غیره، DBA میدونه که کدوم کاربر کدوم کوئری رو بیشتر اجرا میکنه و ممکنه به تحلیلگر کمک کنه تا کوئری های بهتری اجرا کنه اما معمولا نویسنده کوئری های جدید نیست.
خب یکم پیچیده شد، چون عادت کرده بودیم عنوان DBA رو به همه چیز بدیم . "اگه داره رو دیتا کار میکنه، پس دیتابیس ادمینه دیگه"
یه junior DBA بخش زیادی از کارش رو داره برای اولین بار انجام میده و برای انجام کارهاش وابسته به google و جستجو در اون هست.
یه senior DBA چندین سال رو به عنوان junior DBA سپری کرده و به انجام کارهای معمول مثل configuring backups, troubleshooting outages, managing security, and responding to end user requests ،عادت داره.به این معنی نیست که از گوگل استفاده نکنه یا کاری رو برای اولین بار انجام نده اما حداقل نیمی از کارهاش رو قبلا بارها و بارها انجام داده و اگر هر قرار باشه چیزی رو گوگل کنه برای انجام کار با روش بهینه تر هست مثلا انجام اتوماتیک کارها با استفاده از PowerShell.
تعداد سالهای تجربه کار به تنهایی نمیتونه فردی رو از junior به senior ارتقا بده، وجود دارن افرادی که بعد از 10 سال، کارها رو همونجوری انجام میدن که روز اول انجام میدادن و هیچ تجربه ای در مورد انجام کارها به صورت اتوماتیک یا انجام کارهای پرچالش بدست نیاوردن.
زمانی که یک سرور SQL رو مدیریت میکنیم، معمولترین ابزار SQL Server Management Studio است. یک ابزار رایگان مایکروسافت که برای ده ها استفاده شده و از همان ابتدا بعنوان کنسول اصلی پایگاه داده نوشته شد. اینکه گاهی DBA ها از ابزار های دیگه برای مدیریت پایگاه داده استفاده میکنن فقط به این دلیل که SSMS قدیمی هست یا جزئیات زیادی داره، خیلی منصفانه نیست. من بیشتر زمانم رو در این ابزار سپری میکنم.
زمانی که تعداد زیادی سرور SQL رو مدیریت میکنیم، DBA ها معمولا از PowerShell استفاده میکنن، معمولا به کمک فریم ورک DBAtools.io. استفاده از PowerShell رو میتونین با کتاب Learn PowerShell Scripting in a Month of Lunches شروع کنین.
برای نوشتن کد جدید، مایکروسافت از ما میخواد که از ابزار Azure Data Studio استفاده کنیم. چیزی شبیه به Visual Studio Code. یک اپلیکیشن cross-platform که میشه کارای دیتابیس ادمینی هم باهاش انجام داد اما در اصل برای دیتابیس Developer ها مناسب هست. برای مثال من برای کوئری نویسی همزمان در Microsoft SQL Server و Amazon RDS Aurora Postgres از Azure Data Studio استفاده کردم چون با هردو کار میکنه.
شرکت ها تقریباً هرگز DBA بدون تجربه رو استخدام نمی کنن. برای به دست آوردن این تجربه ، دو مسیر شغلی وجود داره.
در هردو حالت نقص هایی دارین، اگه Developer باشین جزئیات نصب و راه اندازی رو نمیدونین و اگه sysadmin باشین دانشتون در مورد کوئری نویسی کم خواهد بود اما در ادامه کار به عنوان DBA فرصت دارین تا ضعفهاتون رو برطرف کنین.
اگه تازه از دانشگاه فارغ التحصیل شدین بعیده مستقیما DBA بشین. بهتره همونطور که گفتم اول یه Developer یا sysadmin بشین و بعد تمایلتون رو به DBAشدن نشون بدین.
اگه شرکتی رو پیدا کردین که تازه کارها رو به عنوان DBA استخدام میکنن، خیلی مراقب باشین چون این شغلها خیلی کم درآمد هستن و درنهایت مجبور میشین بخاطر درآمد کم شرکت رو ترک کنین. به این امید که با تخصصی که تو این شرکت به دست آوردین بتونین شغل DBA مناسبی رو پیدا کنین. اما ناامید خواهید شد چون اون شرکت چیزی رو بشما یاد داده که مورد نیازش بوده ، بخش محدودی از وظایف یه DBA و در دنیای واقعی شما هنوز با یه ادمین پایگاه داده فاصله دارین.
تو دنیای Microsoft SQL Server، باید گفت نه کافی نیست. متاسفانه حتی دوره های مایکروسافت هم تمام نیاز یه DBA رو پوشش نمیده، چون اونا دوست دارن مشتریا بسمت خدمات ابری مایکروسافت بیان، پس فقط چیزی رو یاد میدن که مایلن ما یاد بگیریم نه چیزی رو که واقعا نیاز هست.
متاسفانه دوره ها مسیر خوبی برای بدست آوردن اولین شغل DBA نیستن. به جای اون، روی کار به عنوان Developer یا sysadmin تمرکز کنین و بعد در محل کار خودتون کم کم یه “the database person” بشین.
من این سوال رو زیاد میشنوم که تو فضای ابری، باز هم نیاز به DBA ها هست ؟ مثلا Azure SQL DB رو در نظر بگیرین. بعضی از وظایفی که تا حالا گفتیم تو سیستم عامل های پایگاه داده ابری به صورت خودکار انجام میشه، اما خیلی از کارها اینجوری نیست. برای مثال اگه نیاز بشه فایل پشتیبان چند ماه پیش رو نگهدارین. علاوه بر این بحث های Performance و بهینه سازی دیتابیس ها همچنان نیاز به وجود DBA ها داره.
اگه حوصله اینو دارین که سالها یه کاری رو انجام بدین تا به تدریج به موقعیت DBA برسید، بله شغل مناسبیه. شما تبدیل میشین به مرکز داده شرکتی که توش کار میکنین، به این معنی که میدونین هرجای شرکت چه خبره، با همه کارمندای IT در ارتباطین، میدونین چه پروژه هایی در جریانه و میتونین به همه کمک کنین. با همه اینا، اشکالتی هم داره :
منبع :