<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>پست‌های انتشارات زال کادمی</title>
        <link>https://virgool.io/zalcademy/feed</link>
        <description>رسالت ما توی زال کادمی آموزش های پروژه محور و کاربردی هستش. آموزش هایی که قصدشون رسوندن شما به یه کسب و کار پرسوده. برای این کار، ما قراره از مرحله ی ایده پردازی تا فروش رو پیش ببریم. با ما همراه باشید</description>
        <language>fa</language>
        <pubDate>2026-06-18 05:05:10</pubDate>
        <image>
            <url>https://files.virgool.io/upload/publication/rgalp7gv2unh/vygcj4.png</url>
            <title>زال کادمی</title>
            <link>https://virgool.io/zalcademy</link>
        </image>

                    <item>
                <title>دیزاین پترن ها در پایتون - پیش نیازها - قسمت 1</title>
                <link>https://virgool.io/zalcademy/%D8%AF%DB%8C%D8%B2%D8%A7%DB%8C%D9%86-%D9%BE%D8%AA%D8%B1%D9%86-%D9%87%D8%A7-%D8%AF%D8%B1-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D9%BE%DB%8C%D8%B4-%D9%86%DB%8C%D8%A7%D8%B2%D9%87%D8%A7-%D9%82%D8%B3%D9%85%D8%AA-1-uoffhqumsqgu</link>
                <description>توی حالت کلی،‌ interface ها به ما این قابلیت رو میدن که ما خودمون رو از شر وابستگی به یک کلاس خاص رها کنیم و صرفا وابستگی رو به متدهاشون و پراپرتی هاشون نگه داریم. حالا منظور من چیه؟فرض کنید که شما لپ تاپ خریداری کردید. بعد از مدتی باتری لپ تاپ شما میسوزه. با کارخانه تماس میگیرید و کارخانه به شما میگه متاسفانه لپ تاپی که خریداری کردید فقط با همون یک باتری کار میکنه و هیچ باتری دیگه ای رو نمیشه براش جا گذاری کرد. معنیش چیه؟ معنیش اینه که لپ تاپ شما به اون باتری وابستگی شدید داشته. ولی توی دنیای واقعی این شکلی نیست درسته؟توی دنیای واقعی وابستگی لپ تاپ شما به نحوه ی ورود شارژ از باتری به لپ تاپ و میزان ورود شارژ و شکل باتری هستش. پس تا وقتی که شما بتونید باتری مناسب دیگه ای پیدا کنید که این سه مورد رو به شکلی که شما میخواهید داشته باشه،‌ هیچ مشکلی براتون ایجاد نمیشه.دقیقا به همین علت هستش که توی برنامه نویسی ما لازم داریم از interface ها استفاده کنیم. با استفاده از این کار عملا ما مشخص میکنیم که این کد من برای کار کردن به این مقادیر و این متد ها احتیاج داره. حالا ممکنه از روی اون اینترفیس شما چندین کلاس ایجاد کنید.خب. پیاده سازی اینترفیس توی زبان هایی مثل جاوا خیلی راحته. چون دقیقا مفهومی به اسم اینترفیس وجود داره ولی توی پایتون چجوری میشه اون رو پیاده سازی کرد؟برای ساخت اینترفیس ها در پایتون، ما باید یه سری کلاس ابسترکت ایجاد کنیم. برای اینکار میتونیم از کلاس ABC یا همون abstract base class استفاده کنیم. این کلاس ها به کلاس هایی گفته میشه که کلاس های والدی که از اون ها ارث بری کردن حتما باید متدهاشون رو پیاده سازی کنن.به عنوان نمونه فرض کنید ما اپلیکیشینی داریم که قراره دیتا رو از منابع مختلفی دریافت کنه و اون رو در قالب فرمت خاصی در بیاره و به ما بر گردونه. ولی هر کدوم از منابع گفته شده دیتا رو توی فرمت خاصی به ما میدن. برای مثال اولین منبع دیتا رو به این شکل بر میگردونه:و دیتای دوم هم به شکل زیر:حالا تمام اطلاعاتی که ما از کاربر نیاز داریم اسم کاملش و سنش هست. خب این رو چجوری میشه پیاده سازی کرد؟اول از همه بیاید کلاس interface اون رو ایجاد کنیم:خب پس این میشه کلاس اینترفیس ما. حالا لازم داریم که از روی این کلاسمون دو کلاسی که قراره اطلاعات ما رو دریافت کنه رو پیاده سازی کنیم.خب تا اینجای کار، کاری که انجام دادیم به نظر ساده میاد. نمیتونستیم همین رو بدون استفاده از ابسترکت کلاس ایجاد کنیم؟ بیاید با هم یه کلاس سوم بسازیم و این بار متد fetchData رو داخلش ایجاد نکنیم.بعد یه ابجکت از روش بسازیم ببینیم چه اتفاقی میوفته:وقتی این کار رو بکنیم ارور زیر بهمون نمایش داده میشه. اینجاست که میتونیم بفهمیم مزیت استفاده از این کلاس چیه.TypeError: Can&#x27;t instantiate abstract class SourceThreeDataFetcher with abstract methods fetchDataکد نهایی:</description>
                <category>زال کادمی</category>
                <author>bshadmehr76</author>
                <pubDate>Fri, 02 Apr 2021 12:08:26 +0430</pubDate>
            </item>
                    <item>
                <title>برای این که بتونیم به خودمون بگیم Senior Python Developer چه چیزهایی باید بلد باشیم؟ (قسمت دوم)</title>
                <link>https://virgool.io/zalcademy/%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A7%DB%8C%D9%86-%DA%A9%D9%87-%D8%A8%D8%AA%D9%88%D9%86%DB%8C%D9%85-%D8%A8%D9%87-%D8%AE%D9%88%D8%AF%D9%85%D9%88%D9%86-%D8%A8%DA%AF%DB%8C%D9%85-senior-python-developer-%DA%86%D9%87-%DA%86%DB%8C%D8%B2%D9%87%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%A8%D9%84%D8%AF-%D8%A8%D8%A7%D8%B4%DB%8C%D9%85-%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85-mjm1qiuxlbl8</link>
                <description>خب، تا اینجای کار ما با موارد زیادی آشنا شدیم. ولی ممکنه از خودتون بپرسید که پس چجوری دانشی که تا اینجا یاد گرفتیم میتونه به ما برای نوشتن کدهای مربوط به بک اند یه اپلیکیشن کمک کنه. واقعیت اینه که چیزهایی که تا اینجا یاد گرفتیم یه جورایی حکم مقدمه رو داشتن. از اینجا ما قراره با نوشتن کدهای بک اندی آشنا بشیم.مسیر تبدیل شدن به برنامه نویس ارشد پایتونقبل از این که وارد فریمورک‌های پایتون که کارشون دولوپ کردن وب هست بشیم، بهتره که یه سری مفاهیم رو یاد بگیریم. این مفاهیم رو پایین براتون آوردیم:پروتوکول HTTP: پروتوکل http راهیه برای برقراری ارتباط بین کلاینت و سرور. هر بار که شما سایتی رو باز می‌کنید دارید از این پروتوکل استفاده می‌کنید. در این پروتوکل سیستم شما میشه کلاینت و سروری که کد های سایت مقصد روش قرار داره میشه سرور.معماری REST: این معماری به ما کمک میکنه که API های مناسب و اصولی تری رو ایجاد کنیم. در حقیقت با استفاده از این معماری میتونیم در مواقع مورد نیاز API هایی بنویسیم که آدرس های یکسان ولی فعل های مختلفی دارن. برای مثال آدرس API ما ممکنه zalcademy.ir/api/v1/courses باشه که در اون ما میتونیم فعل های GET - PUT - POST - DELETE رو صدا بزنیم.مفاهیم STATELESS و STATEFULL در بک اند: سرور STATELESS به سروری گفته میشه که در اون ما هیچ چیزی رو توی سرور ذخیره نمی‌کنیم. در اینجا منظورمون از چیز اطلاعات مرتبط با کاربر هستش. سرور STATEFULL به سروری گفته میشه که بعضی از اطلاعات کاربر رو ذخیره میکنه و هر بار که کاربر ریکوئستی رو صدا میزنه قبلش اطلاعات از قبل ذخیره شده مخصوص اون کاربر رو هم فراخوانی و پردازش می‌کنه.خب تا اینجای کار ما تقریبا مفاهیم اولیه و مورد نیاز رو یاد گرفتیم. حالا وقت اون رسیده که سراغ فریمورک های طراحی وب بریم. این فریمورک ها رو توی حالت کلی میشه به سه دسته تقسیم کرد:Full-Stack FrameworkMicroframeworkAsynchronous Frameworkتوی دسته ی اول ما فریمورک های Full-Stack رو داریم. این دسته از فریمورک ها تقریبا هر چیزی که ما نیاز داشته باشیم رو توی خودشون جا میدن. به همین خاطر برای استفاده ازشون نیازی نیست سراغ فریمورک‌های جانبی برید و تمام کارتون (یا حداقل بخش زیادی از اون) توسط خود این فریمورک‌ها راه میوفتن.بعد از اون Microframework ها قرار می‌گیرن. این فریمورک‌ها مقداری سبک تر از فریمورک های دسته ی قبل هستن و گاها برای استفاده از بعضی از امکانات باید از ابزارهای دیگه ای در کنارشون استفاده کرد. برای مثال میشه گفت Django به عنوان یه Full-Stack فریمورک درون خودش یه ORM جا داده ولی نمیشه چنین چیزی رو توی Microframework ها دید.در نهایت هم میرسیم به دسته بندی فریمورک های Asynchronous. مزیت این دسته از فریمورک ها اینه که به شما امکان قرار دادن ریکوئست های HTTP ای رو میدن که باعث بلاک شدن سرور شما نمیشه. معنی این چیه؟ فرض کنید که شما یه اپلیکیشن دارید که تعداد کاربران فعال بالایی داره. انقدر بالا که این امکان وجود داره که در یک لحضه و به صورت همزمان به سرور شما 1000 ریکوئست جدید زده بشه. اگه شما از یه فریمورک Asynchronous استفاده کرده باشید، برای این مورد به هیچ مشکلی نمیخورید.در ادامه با هم از هر دسته بندی یه فریمورک رو بررسی میکنیم:استفاده از فریمورک Django: این فریمورک در دسته بندی Full-Stack Framework قرار میگیره. علتش اینه که تقریبا هر چیزی که یه برنامه نویس ممکنه نیاز داشته باشه رو در خودش قرار داده. هدف این فریمورک اینه که برنامه نویس‌ها بتونن در کوتاه ترین زمان ممکن، بهترین اپ ها رو بسازن. امروزه حدود 12000 وبسایت از Django استفاده می‌کنن و این باعث شده Django یکی از معروفترین فریمورک‌های پایتون بشه.استفاده از فریمورک Flask: این فریمورک در دسته بندی Microframework قرار می‌گیره. شاید نتونه امکاناتی مثل امکانات جنگو رو به شما بده اما قطعا خیلی از نیازهای شما رو رفع می‌کنه.یه نکته‌ای که بد نیست ازش مطلع باشید اینه که شما توی بعضی از این فریمورک‌ها با چیزی به اسم Template Engine آشنا می‌شید. بهتره این مفهوم رو نسبتا خوب کار کنید چون این مفهوم توی زبان‌های دیگه هم استفاده می‌شه و در نهایت کار ما رو راحت تر می‌کنه.بعد از این که با این فریمورک‌ها آشنا شدید باید بدونید که به عنوان یه دولوپر فول استک نیاز دارید تا از تکنولوژی‌های کدنویسی سمت کاربر هم آشنا باشید. توی شروع باید بتونید کدهای ظاهر سایتتون رو بنویسید و در نهایت می‌تونید سراغ موارد پیشرفته تر برید. اینحا قصد داریم تا با هم تکولوژی‌هایی که نیاز دارید رو یاد بگیرید.دانش‌های مورد نیاز برای Web Design:HTMLCSSJavascriptjQueryResponsive DesignMinificationاز مواردی که بالا به شما گفتیم، میشه گفت که HTML و CSS برای طراحی صفحات وب استفاده میشن. Javascript و jQuery برای این استفاده میشن که بتونیم یه مقدار کد زنی و لاجیک به صفحاتمون اضافه کنیم. بعد از اون Responsive Design هست که دانشیه که برای طراحی صفحات مناسب برای هر صفحه‌ی نمایشی با هر اندازه‌ای استفاده میشه و minification روشی هست که برای کم کردن حجم کدهای ما و به طبع اون بهبود سرعت بارگذاری صفحات ما استفاده میشه.هر چند که یادگیری موارد بالا برای تبدیل شدن به یه Ful Stack لازمه اما کافی نیست. ما باید بتونیم با استفاده از فریمورک‌های UI ظاهرهای خیلی بهتری رو به وجود بیاریم. برای این کار، ما باید سراغ فریمورک‌هایی بریم که به بعضی هاشون پایین اشاره میکنیم:BootstrapFoundationقدم بعدی‌ما اینه که بتونیم از فریمورک‌های javascript هم استفاده کنیم. این کار می‌تونه به ما کمک کنه تا بعد از ساخت API هایی که با اون‌ها توی بخش‌های فریمورک‌های وب پایتون باید آشنا شده باشیم، بتونیم یه داشبورد، یه پنل کاربری و یا در حالت کلی سایتی با ظاهر و امکانات مناسب تری برای کاربرانمون بسازیم.بعضی از این فریمورک‌ها و توضیحات مختصری درباره‌ی اون‌ها رو در پایین برای شما آوردیم:کتابخانه‌ی React: کتابخانه ی react به شما کمک میکنه که با استفاده از المنت‌های تعبیه شده در JSX که شبیه به HTML هستش، UI مناسبی رو طراحی کنید. هرچند که لایبرری‌های مناسبی هم وجود داره که در صورت نیاز می‌تونید از اون‌ها استفاده کنید. این فریمورک به شکلی نوشته شده که موارد مورد نیاز شما رو در خودش جا نداده اما از اون سمت این قضیه باعث میشه که ما بتونیم برای هر کاری از ماژول مختلفی استفاده کنیم و اون رو به react خودمون اضافه کنیم. در حالت کلی react به شکلی نوشته شده که میتونید به راحتی هر چیزی که بهش نیاز دارید رو بهش اضافه کنید.کتابخونه‌ی Angular: این کتابخونه بر خلاف react هر چیزی که ما ممکنه بهش نیاز داشته باشیم رو در خودش جا داده. مزیتی که به ما میده اینه که میتونیم به ساده ترین شکل ممکن و سریعترین حالت ممکن در صورتی که قالب HTML و CSS ما آماده باشه داشبورد مورد نظرمون رو بالا بیاریم.هر چند که لایبرری‌های خیلی زیادی وجود داره اما ما دو تا از معتبر ترین‌هاش رو بالا به شما نشون دادیم.خب تا اینجای کار پیشرفت خوبی داشتید، فرض کنید ما با دانشی که تا اینجای کار یاد گرفتیم تصمیم گرفتیم یه فروشگاه اینترنتی رو راه اندازی کنیم. فروشگاهمون رو نوشتیم و تصمیم گرفتیم تا هر هفته یه ایمیل حاوی کد تخفیف به خریداران برترمون بفرستیم. برای حل کردن این مشکل چه راهی رو پیشنهاد می‌کنید؟شاید یه روشی که به ذهنتون بخوره اینه که بتونید یه داشبورد رو بسازید که آخر هر هفته صاحب فروشگاه بیاد و توی یه فیلد یه عدد انتخاب کنه به عنوان درصد تخفیف و در نهایت هم یه دکمه رو فشار بده که باعث شه یه کد تخفیف توی دیتابیس ذخیره شه و اون کد تخفیف برای همه ایمیل شه.بیاید یه مشکل دیگه رو هم در نظر بگیریم. فرض کنید بعد از این که خرید انجام شد قصد دارید یه کاتالوگ با فرمت PDF از کالاهای مشابه برای کاربرتون ارسال کنید و روش یه کد تخفیف بزنید. خب این یه مقدار پیچیده تر میشه درست می‌گم؟مبحث بعدی ای که دارید اینه که باید با ابزاری آشنا بشید که بهتون کمک میکنه این مشکل‌ها رو حل کنید. به ابزاری که برای این کارها ساخته شده، Task Queue گفته میشه. Task Queue ها ابزاری هستن که به ما کمک میکنن کارهایی که زمان بر هستن رو به ترتیب اجرا کنیم. به جز این، به ما یه مزیت دیگه هم میدن و اون اینه که کمک می‌کنن تا ما بتونیم توی زمان‌های خاصی، و یا با تکرار خاصی کاری رو انجام بدیم. با استفاده از ابزاری که پایین قراره ازشون اسم ببریم، می‌تونید مشکل‌هایی که بالا گفته شد رو حل کنید. علاوه بر مواردی که بالا بهشون اشاره شد، دلیل اصلی استفاده از این ابزارها این هستش که شما می‌خواید توی سریعترین زمان به کاربر سایتتون یه پاسخ بدید و بعضی از کارها رو بعد از این که پاسخی به کاربرتون ارسال کردید انجام بدید.برای مثال ممکنه بخواید به کاربرتون اس ام اس ارسال کنید و بگید که سفارشش با موفقیت ثبت شده. شما می‌تونید قبل از این که پاسخ رو به کاربرتون نمایش بدید، به Task Queue استفاده شده اعلام کنید که توی اولین فرصت برای کاربرتون یه اس ام اس ارسال کنه. بلافاصله هم میتونید پاسخی که قراره به کاربرتون نمایش بدید رو، به سمت کاربر ارسال کنید. تا اینجای کار ما چیزهای زیادی یاد گرفتیم که وجود بخش زیادیشون برای پروژه‌ی ما گاهی حتی حیاطی هستن. ولی طبیعتا این لیست ما هنوز تموم نشده.برای این که بتونید به ادامه ی قسمت‌ها دسترسی داشته باشید کافیه که مارو فالو کنید.</description>
                <category>زال کادمی</category>
                <author>bshadmehr76</author>
                <pubDate>Wed, 16 Dec 2020 00:00:46 +0330</pubDate>
            </item>
                    <item>
                <title>برای این که بتونیم به خودمون بگیم Senior Python Developer چه چیزهایی باید بلد باشیم؟ (قسمت اول)</title>
                <link>https://virgool.io/zalcademy/%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A7%DB%8C%D9%86-%DA%A9%D9%87-%D8%A8%D8%AA%D9%88%D9%86%DB%8C%D9%85-%D8%A8%D9%87-%D8%AE%D9%88%D8%AF%D9%85%D9%88%D9%86-%D8%A8%DA%AF%DB%8C%D9%85-senior-python-developer-%DA%86%D9%87-%DA%86%DB%8C%D8%B2%D9%87%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%A8%D9%84%D8%AF-%D8%A8%D8%A7%D8%B4%DB%8C%D9%85-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-hmzjzk71d4in</link>
                <description>حرفه ای شدن توی هر کاری نیاز  به زمان زیادی داره. طبق گفته ی کتاب از ما بهتران، نوشته ی مالکوم گلدون،  برای این که ما بتونیم توی چیزی حرفه ای بشیم نیازه تا حدود 10000 ساعت وقت  بذاریم. این مقدار وقت و انرژی تقریبا معادل چهار سال و نیم کار تمام وقت  میشه. ولی اگه الان به دور و بر خودتون نگاه کنید افرادی رو میبینید که توی  زمانی خیلی کمتر از 10000 ساعت تونستن توی مسیری تبدیل به یه شخص حرفه ای  بشن. انجام این کار اونقدرها هم سخت نیست. فقط کافیه که مسیر درست رو طی  کنید.توی این مقاله قصد  داریم با هم بررسی کنیم چه چیزهایی رو بازمه یاد بگیریم که بتونیم به  خودمون بگیم Senior Python Developer. تمرکز این مقاله قراره توی زمینه ی  بک اند باشه.Full Stack Python Pathقبل از هر چیز، شما نیاز دارید تا مفاهیم اولیه ی پایتون رو یاد بگیرید. این موارد شامل دسته بندی های زیر میشن:DataTypesSyntaxError HandlingIO OperationsOOPMultithreadingاینا  موارد ساده ای هستن که با یادگیریشون میتونین بخش های دیگه رو شروع کنین.  البته موارد پیشرفته تری هم وجود داره. از اون موارد میشه به Generator ها و  یا برای مثال Decorator ها اشاره کرد. ولی نیازی نیست حتما توی شروع با  این موارد آشنا باشید. قطعا اگه روش مناسبی برای یادگیری پیش ببرید و روی  پروژه های زیادی کار کنید، با این موارد آشنا خواهید شد.مورد  بعدی ای که میتونه توی یادگیری شما خیلی موثر باشه، ابزاری به اسم Git  هستش. گیت به شما این امکان رو میده تا کدهاتون رو توی پرژن های مختلف  داشته باشید، توی تیم چند نفره به صورت همزمان بتونید روی پروژه ها کار  کنید و خیلی امکانات زیاد دیگه ای.بعد  از یادگیری مباحث مقدماتی، شما میتونید کار با دیتا ها رو شروع کنید.  منظور ما از دیتا یادگیری ذخیره ی اطلاعات، خواندن اطلاعات از منابع مختلف  هستش. اول از همه باید یه منبع اطلاعات رو پیدا کنید. پیشنهاد ما اینجا دو  چیز هستش:فایل ها CSVفراخوانی API های مختلف و کار کردن با Jsonبعد  از این که تونستید با این منابع اطلاعاتی کار کنید میتونید برید سراغ  ذخیره سازی اون ها. برای ذخیره سازی اطلاعات هم باید از دیتابیس استفاده  کرد. در ادامه ما برای شما لیست انواع دیتابیس رو آماده کردیم. میتونید با  استفاده از این لیست به تفاوت انواع دیتابیس ها و دلیل استفادشون پی ببرید.اول  از همه ما به شما دیتابیس های Relational رو معرفی میکنیم. این نوع از  دیتابیس ها اطلاعات رو به صورت یه سری جدول ذخیره میکنن. ما میتونیم عنصر  های هر جدول رو به هم وصل کنیم. برای مثال فض کنید شما قراره یه دیتابیس  برای یه اپلیکیشن موبایل داشته باشید. توی این اپلیکیشن کاربران شما قراره  که بعد از ثبت نام، پست هایی رو به اشتراک بذارن. خب بیاید با هم یه طراحی  ساده برای دیتابیس این ادلیکیشن رو داشته باشیم:ما قراره چه نوع اطلاعاتی رو توی دیتابیسمون ذخیره کنیم؟کاربرانپست هاشونهر کدوم از این اطلاعات چه چیزهایی رو داخل خودشون باید جا بدن؟کاربر:شماره ی همراهنامنام خانوادگیتاریخ و زمان ثبت نامپست:عنوانمتنکاربرخب  همونطور که تا اینجا دیدیم، ما قراره که این دو دسته اطلاعات رو ذخیره  کنیم. این دسته از اطلاعات هم به هم مرتبط هستن. هر چند که این ارتباط  میتونه به شکل پیچیده تری باشه (ما در اینجا قصدمون آموزش طراحی دیتابیس  نیست). خب، تا اینجای کار ما مشخص کردیم که هر کدوم از جدول های ما قراره  چه اطلاعاتی رو ذخیره کنن. توی دیتابیس های Relational وقتی اطلاعات به  صورت جدول ذخیره میشن، هر ردیف میشه دیتای مد نظر ما و هر ستون میشه  اطلاعات اون ردیف ها. بذارید با هم یه جدول ساده ازشون رسم کنیم:جدول ذخیره سازی اطلاعات در دیتابیس کاربرجدول ذخیره سازی اطلاعات در دیتابیس پست هاخب همونطور که میتونید ببینید  ما در ابتدا اومدیم و جدول هامون رو ساختیم. بعد از اون هم به هر کدوم از  جدول ها یه سری دیتا اضافه کردیم. البته توجه کنید که این موارد تنها  کارهایی نیستن که شما توی یه دیتابیس میتونید انجام بدید. کارهایی مثل  Indexing، داشتن چند دیتابیس فعال به صورت همزمان روی سرور های مختلف و کلی  موارد پیشرفته تر هم هستن که میتونید توی دیتابیس ها یاد بگیرید. برای  یادگیری دیتابیس های Relational شما میتونید از دیتابیس های زیر استفاده  کنید که در پست های بعدی هر کدوم رو با جزییات بیشتری توضیح خواهیم داد.لیست دیتابیس های Relational که میتونید با اون ها شروع به کار کنید:SQLiteMySQLPostgreSQLوقتی  تونستید توی دیتابیس های Relational دانش کافی رو به دست بیارید،‌ میتونید  سراغ ابزاری به اسم ORM (Object Realtional Mappers) برید. ORM ها به شما  کمک میکنن تا برقراری ارتباط با دیتابیس رو راحت تر انجام بدید. از ORM های  معروف Peewee هستش.بعد از  اون میتونید به سراغ دیتابیس ها NoSQL برید. دیتابیس های NoSQL به دیتابیس  هایی گفته میشه که اطلاعات رو به شیوه ای غیر از دیتابیس های SQL ای ذخیره  میکنن. در حالت کلی میشه دیتابیس های NoSQL رو به چهار دسته بندی تقسیم  کرد. ما توی این مقاله قصد داریم شما رو با دو تا از اون ها آشنا کنیم و  دلایل استفاده از اون ها رو به شما بگیم.دسته بندی های دیتابیس های NoSQL:Key-Value PairDocument-OrientedColumn-Family TableGraphدیتابیس های Key-Value pair:این  نوع از دیتابیس ها اطلاعات رو به صورت یه کلید و مقدار اون کلید ذخیره  میکنن. فرض کنید شما یه دیتابیس دارید که داخلش به x مقدار 5 رو میدید.  البته انواع مختلفی از داده ها رو میشه به عنوان value به این دیتابیس ها  داد. یکی از دیتابیس های معروف Key-Value دیتابیسی به اسم Redis هستش.  استفاده از این دیتابیس وقتی اهمیت پیدا میکنه که ما می خوایم سرعت  اپلیکیشمون رو افزایش بدیم. و یا ممکنه بخوایم بعضی از اطلاعات رو برای مدت  موقتی ذخیره کنیم. اطلاعات این دیتابیس به جای این که توی حافظه ی دائمی  سیستم ما ذخیره بشن، توی ram ذخیره میشن و به همین دلیل سرعت بسیار بیشتری  نسبت به دیتابیس های SQL ای دارن. میشه گفت یادگیری این دیتابیس یکی از  لازمه های تبدیل شدن به یه برنامه نویس ارشد هستش.دیتابیس های Document-Oriented:همونطور  که میدونید امروزه دیتاهایی که توی اینترنت وجود داره قابلیت این رو نداره  که یه ساختار مشخص براشون در نظر گرفته بشه. فرض کنید شما تصمیم گرفتید  اطلاعات تمام کاربران همه ی سایت ها رو ذخیره کنید. یکی از سایت ها ممکنه  بیاد و 5 تا دیتا از کاربرانش بگیره. یکی دیگه از سایت ها ممکنه 10 تا  بگیره و این 10 تا کاملا با اطلاعات سایت اول متفاوت هستن. حالا این رو در  مقیاس خیلی بزرگتری در نظر بگیرید. برای مثال شما نیاز دارید تا اطلاعات  100 سایت مختلف رو داشته باشید.مزیت  اصلی دیتابیس های Document-Oriented اینه شما نیازی ندارید برای دیتاهاتون  ساختار مشخصی داشته باشید. نیازی به تعریف جدول نیستش. البته معمولا  میتونید بهشون ساختار بدید ولی این یه نیاز نیست.توی  این دسته بندی ما به شما دیتابیس MongoDB رو معرفی میکنیم. MongoDB  دیتابیسی هستش که میتونه اطلاعات رو توی حالتی شبیه Json ذخیره کنه، میتونه  همزمان روی چند سیستم اجرا بشه، با این مزیت در صورتی که یکی از سرورها به  مشکلی بخورن ما دیتامون رو از دست نمیدیم. هرچند که گاهی آپدیت هایی که  انجام میدیم و یا اطلاعاتی که توی دیتابیس اضافه میکنیم همیشه روی همه ی  دیتابیس ها ذخیره نمیشن (راهکارهایی برای پیشگیری وجود داره).دیتابیس های NoSQL زیادی وجود دارن که هر کدوم برای ما مزیت های خودشون رو دارن.در  انتها این ما هستیم که تصمیم میگیریم کدوم یکی از دیتابیس ها برای ما  مناسب هستش. ما باید بر اساس نیازی که داریم دیتابیس مناسب رو برای پروژه ی  خودمون انتخاب کنبم.</description>
                <category>زال کادمی</category>
                <author>bshadmehr76</author>
                <pubDate>Tue, 15 Dec 2020 23:05:31 +0330</pubDate>
            </item>
            </channel>
</rss>