آموزش عملی NoSQL

صفر تا صد مفاهیم دیتابیس‌های غیررابطه‌ای Elasticsearch | Neo4j | Cassandra | Redis | MongoDB

avataravataravatar

و ۲۲۴ نفر دیگر ثبت‌نام کرده‌اند.

آموزش NoSQL

بیشترین

میزان رشد در انواع پایگاه داده در ۱۰ سال گذشته

شروعی

برای کار با داده‌های حجیم و Big Data

۱۲۰,۰۰۰ دلار

میانگین درآمد سالانه یک متخصص NoSQL در آمریکا

مناسب‌ترین

پایگاه‌های داده برای کار با داده‌های مختلف

معرفی

مخاطبین

پیش‌نیازها

سرفصل‌ها

اساتید

0 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1

معرفی دوره

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

    • section item

      این دوره مناسب شما است اگر...

      مشتاقید به بازار پردرآمد برنامه‌نویسی و حوزه‌ی نرم‌افزار وارد شده و آینده‌ی شغلی خود را رقم بزنید.

      برای پروژه‌های شخصی یا کاری خود نیاز به یادگیری سریع زبان SQL دارید.

      بازار کار و حقوق بالای برنامه‌نویسان در داخل و خارج ایران برایتان جذاب است.

      می‌خواهید NoSQL را به صورت عملی و یکبار برای همیشه به شکل اصولی بیاموزید.

    • section item

      این دوره مناسب شما نیست اگر...

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

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

      حاضر نیستید در هفته ۵ ساعت برای یادگیری، پیشرفت و رشد درآمدتان زمان بگذارید.

      می‌خواهید NoSQL را به طور سطحی و گذرا بیاموزید.

    • پیش‌نیازها

    • لازم است...

      section item

      علاقه و پشتکار داشته باشید.

      section item

      با یک زبان برنامه‌نویسی (ترجیحاً پایتون) آشنایی داشته باشید.

    • لازم نیست...

      section item

      در رشته‌ی کامپیوتر تحصیل کرده باشید.

    سرفصل‌های دوره

    certificate

    اساتید و مربیان دوره

    teacher's avatar

    متین معینی

    طراحی و تولید

    مسئول تیم آموزش تکنیکال در کوئرا
    teacher's avatar

    یونس محمودی

    طراحی و تولید

    دانشجوی کارشناسی مهندسی کامپیوتر دانشگاه حکیم سبزواری
    teacher's avatar

    معین کیانی

    طراحی و تولید

    عضو تیم آموزش بک‌اند کوئرا
    teacher's avatar

    نیما حیدری‌نسب

    طراحی و تولید

    دانشجوی مهندسی کامپیوتر دانشگاه شهید بهشتی | دستیار آموزشی دانشگاه شهید بهشتی | مدیر فنی در کوئرا
    college

    آموزش عملی NoSQL

    feature

    ۲۰ تمرین

    feature

    گواهی معتبر

    feature

    عضو پارک علم و فناوری شریف

    و ۲۲۷ نفر دیگر ثبت‌نام کرده‌اند.

    feature

    ۲۰ تمرین

    feature

    گواهی معتبر

    feature

    عضو پارک علم و فناوری شریف

    سوالات متداول











    آموزش NoSQL (پایگاه داده غیررابطه‌ای)

    پایگاه داده غیررابطه‌ای یا NoSQL چیست؟

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

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

    اما مقیاس‌پذیری افقی چیست و چرا برای ما حائز اهمیت است؟ مقیاس پذیری افقی در مقابل مقیاس پذیری عمودی (Vertical Scaling) است که به معنای افزودن توان و حافظه‌ی بیشتر به سیستم موجود است. در مقیاس پذیری افقی ما میتوانیم بدون تغییر سیستم فعلی به افزودن سیستم‌های بیشتر (Nodes) بپردازیم. دلیل اهمیت مقیاس پذیری افقی این است که روشی به مراتب کم‌هزینه‌تر از مقیاس‌پذیری افقی بوده و از لحاظ کارایی (Performance) بهتر است.

    تاریخچه NoSQL

    عبارت NoSQL ابتدا در سال  ۱۹۹۸، توسط Johan Oskarsson و برای هماهنگی یک جلسه به منظور صحبت در مورد پایگاه داده‌های غیررابطه‌ای بیان شد. Johan از NoSQL# در توییتر استفاده کرد که صرفا به دلیل کوتاه و بیادماندنی بودن آن انتخاب شده بود و کمک می‌کرد تا این جلسه بر سر زبان‌ها بیفتد. 

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

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

    تفاوت SQL و NoSQL

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

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

    عدم تطابق Impedance در پایگاه داده‌های رابطه ای

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

    انواع پایگاه داده‌های NoSQL

    این نوع پایگاه‌ داده‌ها به ۴ دسته زیر تقسیم می‌شوند:

    •  مقدار و کلید
    • پایگاه داده مستندی
    • خانواده‌ای از ستون‌ها
    • پایگاه داده گرافی

    که در ادامه به بررسی هر یک از این‌ها می‌پردازیم.

    پایگاه داده مقدار و کلید (Key Value Stores)

    این نوع از پایگاه داده، ساده‌ترین نوع پایگاه داده غیررابطه‌ای است که داده‌ها در آن، توسط یک کلید ذخیره شده و در دسترس قرار می‌گیرند. این داده‌ها می‌توانند به فرم String ،Integer و یا Array باشند. پایگاه داده مقدار و کلید ساختار مشخصی نداشته و از این جهت انعطاف پذیری بسیار بالایی دارد. مهم‌ترین مزایای این نوع پایگاه داده عملکرد(Performance) خوب، تأخیر کم و قابلیت توسعه بالا است.

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

    از مهم‌ترین مثال‌های پایگاه داده مقدار و کلید می‌توان به موارد زیر اشاره کرد:

    • Dynamo DB
    • Redis
    • ZooKeeper

    پایگاه داده مستندی (Document Databases)

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

    اما ظاهر این فایل‌ها به چه صورت است؟ در واقع این فایل‌ها داده‌ها را به صورت کلید و مقدار ذخیره می‌کنند که به نام به آن Field نیز می‌گویند.

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

    • MongoDB
    • Couchbase
    • RavenDB

    خانواده‌ای از ستون‌ها (Column-Family Databases)

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

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

    پایگاه داده گرافی (Graph Databases)

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

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

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

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

    • Neo4j
    • Amazon Neptune
    • ArangoDB

    مزایای استفاده از پایگاه داده‌های NoSQL

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

    ۱.مقیاس‌پذیری بالا

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

    اجرای مقیاس‌بندی عمودی برخلاف مقیاس‌بندی افقی چندان آسان نیست. نمونه‌هایی از پایگاه داده‌های مقیاس افقی MongoDB، Cassandra و غیره هستند. NoSQL به دلیل مقیاس‌پذیری بالای خود می‌تواند حجم عظیمی از داده‌ها را مدیریت کند.

    ۲.انعطاف‌پذیری

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

    ۳.دسترسی بالا

    ویژگی تکرار( Replication Feature) که در پایگاه‌های داده NoSQL به صورت خودکار اجرا می‌شود، آن را بسیار در دسترس می‌سازد زیرا در صورت هرگونه مشکل، داده‌ها خود را به حالت ثابت قبلی برمی‌گردانند.

    ۴. توانایی مدیریت حجم زیادی از داده

    پایگاه‌های داده NoSQL می‌توانند حجم زیادی از داده‌ها و ترافیک را به راحتی مدیریت کنند. این موضوع آن‌ها را به گزینه مناسبی برای برنامه‌هایی که نیاز به مدیریت حجم زیادی از داده یا ترافیک دارند تبدیل می‌کند.

    ۵.کارایی بالا (Performance)

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

    ۶.هزینه پایین‌

    پایگاه داده های NoSQL اغلب مقرون به صرفه تر از پایگاه های داده رابطه ای سنتی هستند، زیرا معمولاً پیچیدگی کمتری دارند و به سخت افزار یا نرم افزار گران قیمت نیاز ندارند.

    معایب استفاده از پایگاه داده‌های NoSQL

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

    ۱. نبود استاندارد مشخص

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

    ۲.عدم انطباق کامل با ACID

    پایگاه‌های داده NoSQL کاملاً با ACID سازگار نیستند، به این معنی که ثبات (Consistency)، یکپارچگی (Integrity) و دوام داده‌ها (Durability) را تضمین نمی‌کنند. این عدم انطباق می‌تواند برای برنامه‌هایی که این موضوعات در آن‌ها حیاتی است مشکل‌زا باشد.

    ۳.عدم پشتیبانی از کوئری‌های پیچیده

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

    ۴.نابالغ بودن

    پایگاه‌های داده NoSQL نسبتا جدید هستند و فاقد بلوغ پایگاه‌های داده رابطه‌ای سنتی هستند. این موضوع می‌تواند آن‌ها را نسبت به پایگاه داده‌های سنتی غیر قابل اعتماد‌تر کند.