برای این که بتونیم به خودمون بگیم Senior Python Developer چه چیزهایی باید بلد باشیم؟ (قسمت اول)

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

توی این مقاله قصد داریم با هم بررسی کنیم چه چیزهایی رو بازمه یاد بگیریم که بتونیم به خودمون بگیم Senior Python Developer. تمرکز این مقاله قراره توی زمینه ی بک اند باشه.

Full Stack Python Path
Full Stack Python Path

قبل از هر چیز، شما نیاز دارید تا مفاهیم اولیه ی پایتون رو یاد بگیرید. این موارد شامل دسته بندی های زیر میشن:

  1. DataTypes
  2. Syntax
  3. Error Handling
  4. IO Operations
  5. OOP
  6. Multithreading

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

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

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

  1. فایل ها CSV
  2. فراخوانی API های مختلف و کار کردن با Json

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

اول از همه ما به شما دیتابیس های Relational رو معرفی میکنیم. این نوع از دیتابیس ها اطلاعات رو به صورت یه سری جدول ذخیره میکنن. ما میتونیم عنصر های هر جدول رو به هم وصل کنیم. برای مثال فض کنید شما قراره یه دیتابیس برای یه اپلیکیشن موبایل داشته باشید. توی این اپلیکیشن کاربران شما قراره که بعد از ثبت نام، پست هایی رو به اشتراک بذارن. خب بیاید با هم یه طراحی ساده برای دیتابیس این ادلیکیشن رو داشته باشیم:

ما قراره چه نوع اطلاعاتی رو توی دیتابیسمون ذخیره کنیم؟

  • کاربران
  • پست هاشون

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

کاربر:

  • شماره ی همراه
  • نام
  • نام خانوادگی
  • تاریخ و زمان ثبت نام

پست:

  • عنوان
  • متن
  • کاربر

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

جدول ذخیره سازی اطلاعات در دیتابیس کاربر
جدول ذخیره سازی اطلاعات در دیتابیس کاربر
جدول ذخیره سازی اطلاعات در دیتابیس پست ها
جدول ذخیره سازی اطلاعات در دیتابیس پست ها

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

  • لیست دیتابیس های Relational که میتونید با اون ها شروع به کار کنید:
  • SQLite
  • MySQL
  • PostgreSQL

وقتی تونستید توی دیتابیس های Relational دانش کافی رو به دست بیارید،‌ میتونید سراغ ابزاری به اسم ORM (Object Realtional Mappers) برید. ORM ها به شما کمک میکنن تا برقراری ارتباط با دیتابیس رو راحت تر انجام بدید. از ORM های معروف Peewee هستش.

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

دسته بندی های دیتابیس های NoSQL:

  • Key-Value Pair
  • Document-Oriented
  • Column-Family Table
  • Graph

دیتابیس های Key-Value pair:

این نوع از دیتابیس ها اطلاعات رو به صورت یه کلید و مقدار اون کلید ذخیره میکنن. فرض کنید شما یه دیتابیس دارید که داخلش به x مقدار 5 رو میدید. البته انواع مختلفی از داده ها رو میشه به عنوان value به این دیتابیس ها داد. یکی از دیتابیس های معروف Key-Value دیتابیسی به اسم Redis هستش. استفاده از این دیتابیس وقتی اهمیت پیدا میکنه که ما می خوایم سرعت اپلیکیشمون رو افزایش بدیم. و یا ممکنه بخوایم بعضی از اطلاعات رو برای مدت موقتی ذخیره کنیم. اطلاعات این دیتابیس به جای این که توی حافظه ی دائمی سیستم ما ذخیره بشن، توی ram ذخیره میشن و به همین دلیل سرعت بسیار بیشتری نسبت به دیتابیس های SQL ای دارن. میشه گفت یادگیری این دیتابیس یکی از لازمه های تبدیل شدن به یه برنامه نویس ارشد هستش.

دیتابیس های Document-Oriented:

همونطور که میدونید امروزه دیتاهایی که توی اینترنت وجود داره قابلیت این رو نداره که یه ساختار مشخص براشون در نظر گرفته بشه. فرض کنید شما تصمیم گرفتید اطلاعات تمام کاربران همه ی سایت ها رو ذخیره کنید. یکی از سایت ها ممکنه بیاد و 5 تا دیتا از کاربرانش بگیره. یکی دیگه از سایت ها ممکنه 10 تا بگیره و این 10 تا کاملا با اطلاعات سایت اول متفاوت هستن. حالا این رو در مقیاس خیلی بزرگتری در نظر بگیرید. برای مثال شما نیاز دارید تا اطلاعات 100 سایت مختلف رو داشته باشید.

مزیت اصلی دیتابیس های Document-Oriented اینه شما نیازی ندارید برای دیتاهاتون ساختار مشخصی داشته باشید. نیازی به تعریف جدول نیستش. البته معمولا میتونید بهشون ساختار بدید ولی این یه نیاز نیست.

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

دیتابیس های NoSQL زیادی وجود دارن که هر کدوم برای ما مزیت های خودشون رو دارن.

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