تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ محسن محمدخانی
انتخاب ساختار مناسب در یک collection
کیوان علی محمدی حل شده توسط کیوان علی محمدی

سلام
فرض کنیم ما داریم یکسری اطلاعات در mongo یا elasticsearch  ذخیره  میکنیم  
تعداد این object   بسیار زیاد هستش در اولین مرحله 5000 هزار هستش و فیلد‌های داخل object هم ممکنه در طول توسعه پروژه زیاد بشه
ما  تعداد زیادی  get در یک ثانیه  در این collection یا index داریم و همچنین edit فیلد‌های زیادی داخل object  و ممکنه تعداد زیادی delete هم در آینده داشته باشیم
به فرمت زیر نگاه کنید 
کدوم فرمت در این حالت مناسب هستش ؟ و چرا؟
فیلد id یکتا هستش و به هیچ عنوان ما دو تا object با یک id نداریم مثل id که در mysql هستش
هیچ وقت دو تا object مقدار id برابر با btn-1 نمیشه
اکثر جستجو ما در object‌های  این collection یا index با id هستش ولی ممکنه با فیلدهای دیگه ای هم بخواهیم جستجو کنیم

 

[
  {
    "id": "btn-1",
    "filed_1": "value_1",
    "filed_2": "value_2",
    "filed_3": "value_3",
    "filed_4": "value_4",
    "filed_5": "value_5"
  },
  {
    "id": "btn-2",
    "filed_1": "value_1",
    "filed_2": "value_2",
    "filed_3": "value_3",
    "filed_4": "value_4",
    "filed_5": "value_5"
  },
  {
    "id": "btn-3",
    "filed_1": "value_1",
    "filed_2": "value_2",
    "filed_3": "value_3",
    "filed_4": "value_4",
    "filed_5": "value_5"
  },
  {
    "id": "btn-4",
    "filed_1": "value_1",
    "filed_2": "value_2",
    "filed_3": "value_3",
    "filed_4": "value_4",
    "filed_5": "value_5"
  },
  {
    "id": "btn-5",
    "filed_1": "value_1",
    "filed_2": "value_2",
    "filed_3": "value_3",
    "filed_4": "value_4",
    "filed_5": "value_5"
  },
  ...
]

============================================================

{
  "btn-1": {
    "filed_1": "value_1",
    "filed_2": "value_2",
    "filed_3": "value_3",
    "filed_4": "value_4",
    "filed_5": "value_5"
  },
  "btn-2": {
    "filed_1": "value_1",
    "filed_2": "value_2",
    "filed_3": "value_3",
    "filed_4": "value_4",
    "filed_5": "value_5"
  },
  "btn-3": {
    "filed_1": "value_1",
    "filed_2": "value_2",
    "filed_3": "value_3",
    "filed_4": "value_4",
    "filed_5": "value_5"
  },
  "btn-4": {
    "filed_1": "value_1",
    "filed_2": "value_2",
    "filed_3": "value_3",
    "filed_4": "value_4",
    "filed_5": "value_5"
  },
  "btn-5": {
    "filed_1": "value_1",
    "filed_2": "value_2",
    "filed_3": "value_3",
    "filed_4": "value_4",
    "filed_5": "value_5"
  },
  ...
}

 


 

سلام به نظرم بهتره از روش شماره 1 استفاده کنید. چون اینطوری برای هر آبجکت یک دایکیومنت مجزا ایجاد میشه و ایندکس گذاری اون هم بهتره.

بهترین پاسخ
کیوان علی محمدی ۰۱ خرداد ۱۴۰۰، ۱۱:۰۲