نمایش نتایج: از شماره 1 تا 10 , از مجموع 15

موضوع: استفاده از پایگاه های nosql برای ذخیره سازی 300 میلیون رکورد اطلاعات

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #8
    عضو انجمن
    تاریخ عضویت
    Sep 2010
    نوشته ها
    713
    تشکر تشکر کرده 
    566
    تشکر تشکر شده 
    1,153
    تشکر شده در
    790 پست

    پیش فرض پاسخ : استفاده از پایگاه های nosql برای ذخیره سازی 300 میلیون رکورد اطلاعات

    نقل قول نوشته اصلی توسط AtrafNet نمایش پست ها
    جناب جسارته حق با شماست سرعت کار این تابع file_get_contents بالاست اما به دلیل اینکه تمامی محتویات فایل رو در رم buffer میکنه مصرف رم خیلی زیادی می تونه در فایل های حجیم داشته باشه.
    برای همین اکثراً در کار با فایل های حجیم در PHP پیشنهاد میکنن که به جای file_get_contents از تابع fopen برای ایجاد یک file pointer و سپس از تابع fgets برای خواندن تیکه تیکه فایل (مثلاً خط به خط) استفاده کنن.
    چون اینطوری تابع fgets فقط همون مقدار از فایل که نیازه رو تو مموری بافر میکنه و نه ممکنه که اخطار سر ریز بافر در حجم های خیلی بالا پیش بیاد و نه مشکل مصرف بیش از حد رم داره.
    نمونه کد در این لینک: http://stackoverflow.com/questions/1...e-files-in-php که البته طبق گفته این لینک که درست هم هست علاوه بر مشکل سرعت و بافر در حجم های خیلی زیاد ممکنه مشکل Time Out هم پیش بیاد.

    همچنین درباره سرعت دیتابیس نسبت به فایل هم پیشنهاد میکنم لینک های زیر رو مطالعه کنید:

    http://stackoverflow.com/questions/6...database-speed
    http://stackoverflow.com/questions/8...e-access-speed


    درسته فایل دسترسی سریع تری داره اما در مقیاس اطلاعاتی خیلی زیاد برای خود مدیر سایت مشکل ساز میشه و حتی بعداً اگه بخواد سایت رو بفروشه نمی تونه.
    به نظر بنده هم همین موضوع هست که کار با یک فایل بسیار بسیار بزرگ در حد 20 گیگ ( حدود 300 میلیون خط ) در یک سرور معمولی بسیار سخت هست . به دو دلیل . اول اینکه شما باید یک فایل رو مدام در حال ادیت قرار بدید ( اگر دیتابیس ایستا باشه مثل تیبل پست های وردپرس مشکلی نیست ) ولی اگر یک دیتابیس با این حجم مدام در حال نوشتن و ویرایش باشه قطعا به مشکل خواهد خورد دقیقا مثل موتور MyISAM که کوئری ها در صف قرار میگیرن

    بنده خودم الان سخت به دنبال روشی هستم که سرعت کار با دیتابیسم رو افزایش بده و قطعا فردا دیتابیس رو در یک فایل متنی مثل csv میریزم و تست میکنم . البته که خود phpmyadmin از موتور csv پشتیبانی میکنه ولی هیچ کس توصیه نمیکنه

    - - - Updated - - -

    نقل قول نوشته اصلی توسط phpcoding نمایش پست ها
    اشتباه شما و یه سری دیگه از دوستان اینه که فک کردید خط فرمان php هم مثل ویندوزه . درسته اگه یک فایل با سیصد میلیون لاین رو داخل ویندوز باز کنید نه تنها نرم افزار میزبان هنگ میکنه بلکه مجبور میشید سیستم رو ری استارت کنید . ولی پی اچ پی مگه ویندوزه که بخواد فایلی رو بخونه و هنگ کنه ؟
    بله دوست عزیز یک فایل با سیصد میلیون لاین از یک دیتابیس خیلی خیلی خیلی سبک تره . بخاطر زیاد بودن محتوای فایل هم سرعت کمتر نمیشه . در صورت زیاد بودن فایل ها سرعت کم میشه ولی وقتی فقط یه فایل باشه با میلیون ها لاین سرعت به مشکلی نمیخوره . چون فقط یک کوئری برای خوندن فایل هست اونم این :
    کد PHP:
    file_get_contents("address.txt"); 
    وسلام . حالا هر چند خط که میخواد باشه . سرعتش بالاس !!!
    البته کوئری زیاد هست ولی بدترین کوئری این کوئری ای که معرفی کردید هست به دلیل اینکه تمام فایل به یکباره در سیستم باز میشه بدون هیچ لیمیتیشنی . حتی دیتابیس رو هم لیمیت قرار میدن براش چه برسه به یک فایل چند ده گیگی . شما از nosql در فایل های چندین گیگی دینامیک استفاده میکنید ؟
    ویرایش توسط hoka : March 25th, 2017 در ساعت 01:12

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. پاسخ ها: 45
    آخرين نوشته: November 27th, 2016, 07:25
  2. پاسخ ها: 2
    آخرين نوشته: August 7th, 2016, 12:12
  3. پاسخ ها: 2
    آخرين نوشته: November 13th, 2014, 02:08
  4. پاسخ ها: 0
    آخرين نوشته: November 14th, 2012, 15:37

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •