درس هایی که از مدیریت صدها میلیون داده در MongoDB آموختم

در این پست، تجربیات واقعی را که در حین کار با صدها میلیون داده در MongoDB به دست آورده‌ام به اشتراک خواهم گذاشت.

همه داده ها را در یک مجموعه مونگو ذخیره نکنید

این بدترین اشتباهی بود که ما مرتکب شدیم که عامل اصلی همه مسائل شد. ما قبلاً 500 میلیون داده ساختاریافته پیچیده را در یک مجموعه ذخیره می کردیم که باعث عوارض جانبی زیر شد:

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

احتمالاً با افزایش روزانه داده ها، مشکلات حتی بیشتر خواهد شد.

ساختار سند بد

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

به دلیل بررسی وجود، اسکن پرس و جو کند انجام شد. در MongoDB، امکان ارائه شاخص های جزئی وجود دارد، اما در جایی که وجود فیلد بررسی می شود، واقعاً به خوبی کار نمی کند.

مثال زیر نشان می دهد null مقدار اختصاص داده شده برای phone به جای حذف کامل آن از سند.

{
  "_id":...

Source link