دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۸
  • فروردین

جلسه ۲۹ : عملیات اتمی در MongoDB

  • دسته‌بندی‌ها :
جلسه ۲۹ : عملیات اتمی در MongoDB
    • جزئیات
    • نوع محتواآموزش تصویری

       مقدمه

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

      عملیات اتمی در MongoDB

      مدل داده برای عملیات اتمی

      رویکرد توصیه شده برای حفظ اتمی بودن این است که تمام اطلاعات مربوطه را حفظ کند.

      همچنین  به طور مرتب در یک سند تکاملی با استفاده از اسناد embedded به روز رسانی شود.

      با این کار اطمینان حاصل می شود که همه به روز رسانی ها برای یک سند تک اتمی هستند.

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

      مثال : 

      در این سند ما اطلاعات مشتری  که محصول را خریداری کرده در فیلد product_bought_by ذخیره کرده ایم.

      سپس، هر زمان که مشتری جدید خریداری می کند، ابتدا محصول مورد نظر را با استفاده از فیلد product_available بررسی می کنیم.

      اگر در دسترس باشد، مقدار فیلد product_available را کاهش می دهیم و همچنین سند خریداری شده مشتری جدید را در فیلد product_bought_by وارد می کنیم.

      ما از دستور findAndModify برای این قابلیت استفاده خواهیم کرد زیرا این سند را به همان شیوه جستجو  و به روزرسانی می کند.

      مثال : 

      با رویکرد ما از سند تعبیه شده و با استفاده از query findAndModify اطمینان حاصل می شود :

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

      در این مورد، ابتدا محصول مورد نظر را با استفاده از اولین کوئری بررسی خواهیم کرد.

      سپس در کوئری دوم، اطلاعات خرید را به روزرسانی می کنیم.

      کلام آخر

      با این حال، ممکن است که بین اجرای این دو کوئری ، برخی دیگر از کاربران این محصول را خریداری کنند و دیگر در دسترس نباشد.

      بدون اطلاع از این، کوئری دوم اطلاعات خرید را بر اساس نتیجه اولین کوئری به روز رسانی می کند.

      این عمل پایگاه داده را متناقض می کند زیرا ما یک محصول را که در دسترس نیست فروختیم.

      QR:  جلسه ۲۹ : عملیات اتمی در MongoDB
      به اشتراک بگذارید