PDA

View Full Version : حجم بالای دیتابیس در MongoDB ؟؟



amir001
دوشنبه 01 اردیبهشت 1393, 09:06 صبح
سلام دوستان

من MongoDB را نصب کردم و از طریق خط فرمانش چند رکورد را توش ذخیره کردم.

وقتی فایل های دیتابیس اون را بررسی کردم دیدم که حدود 160 مگابایت هست.... (فقط برای سه یا چهار رکورد)

اگر تعداد رکوردهام 1000 تا بشه چی میشه؟ آیا با زیاد شدن رکوردها همینطور حجم بالا میره یا اینکه در یک مقدار خاصی ثابت میشه؟

آیا توی دیتابیس های دیگه مثل کاساندرا هم حجم دیتابیس همینطوری زیاده؟؟

مبین رنجبر
دوشنبه 01 اردیبهشت 1393, 19:07 عصر
سلام دوستان

من MongoDB را نصب کردم و از طریق خط فرمانش چند رکورد را توش ذخیره کردم.

وقتی فایل های دیتابیس اون را بررسی کردم دیدم که حدود 160 مگابایت هست.... (فقط برای سه یا چهار رکورد)

اگر تعداد رکوردهام 1000 تا بشه چی میشه؟ آیا با زیاد شدن رکوردها همینطور حجم بالا میره یا اینکه در یک مقدار خاصی ثابت میشه؟

آیا توی دیتابیس های دیگه مثل کاساندرا هم حجم دیتابیس همینطوری زیاده؟؟

دلایل زیادی برای درک این ابهام است.مهم ترین دلیل این مشکل(البته نمی توان آنرا یک مشکل نامید) پیش تخصیص خود مانگو دی بی است.مانگو دی بی برای اینکه از تکه تکه شدن فایل داده ای جلوگیری کند فایل داده ای خود را اندازه مشخصی تولید میکند.به طور مثال ممکن است فایل داده ها اندازه 1 گیگابایت داشته باشد ولی 90% آن خالی باشد.برای جلوگیری از این کار می توانید سرور mongod را با پارامتر noprealloc اجرا کنید.البته خود مانگو دی بی پیشنهاد میکند که پارامتر noprealloc را فقط در حالت تست و زمانی که حذف اطلاعات زیادی دارید اجرا کنید.راه حل کمبود فضای خالی بر روی دیسک استفاده از دستورات compact و repairDatabase است که فضاهای تکه تکه را به هم می چسباند(Defragmentation).

دلایلی دیگر در این (http://docs.mongodb.org/manual/faq/storage/#faq-disk-size) لینک شرح داده شده است.

دیتابیس کاساندرا سیاست های مخصوص به خودش را دارد و الزاما مشابه مانگو دی بی عمل نمی کند.

amir001
چهارشنبه 03 اردیبهشت 1393, 10:42 صبح
آقا یه سوال :

آیا این حجم همینطور زیاد میشه؟

مثلا تعداد رکوردهای من اگر دوبرابر شد حجم دیتابیس هم دوبرابر میشه؟؟؟

مبین رنجبر
چهارشنبه 03 اردیبهشت 1393, 15:57 عصر
آقا یه سوال :

آیا این حجم همینطور زیاد میشه؟

مثلا تعداد رکوردهای من اگر دوبرابر شد حجم دیتابیس هم دوبرابر میشه؟؟؟

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