نمایش نتایج 1 تا 14 از 14

نام تاپیک: مشاوره: خروجی اکسل در تعداد رکورد بالا

  1. #1

    Lightbulb مشاوره: خروجی اکسل در تعداد رکورد بالا

    با سلام و خسته نباشید خدمت همکاران

    بنده قصد تعداد زیادی داکیومنت از پایگاه داده خودم که elasticsearch هست بخونم و در یک فایل اکسل ذخیره کنم
    در هربار اکسپورت تعدادی رکورد بالای 1 میلیون هست
    سیستم هم به این صورت طراحی شده که کاربر بر روی گزینه 'خروجی اکسل' کلیک میکنه میره و چند ساعت بعد میاد و خروجی خودش رو تحویل میگیره در حال حاضر برای تعداد رکورد زیر 100 هزارتا مشکل نداره ولی وقتی تعداد رکورد زیاد میشه ram‌زیادی از سرور میکشه و عملا دسترسی به سرور غیر ممکن میشه

    من دو تا روش به ذهنم اومده برای ذخیره سازی رکورد ها بر روی اکسل میخواستم ببینم روش دیگه ایی هم داره یا نه
    ۱- گرفتن رکوردها از دیتابیس (ده هزارتا ده هزارتا) و ذخیره در یک آرایه و در انتها ایجاد فایل توسط php-excel
    2- گرفتن ده هزارتا رکورد از دیتابیس و ایجاد فایل توسط php-excel و خواندن ده هزارتای بعدی و اضافه کردن به انتهای فایل توسط php-excel

    من از اصلا سرعت اجرا برام مهم نیست فقط میخوام ram زیادی اشغال نشه

  2. #2

    نقل قول: مشاوره: خروجی اکسل در تعداد رکورد بالا

    بایستی تعداد کمتری خروجی گرفت
    یعنی یک میلیون رکورد رو هرچه ریز کنی از رم کمتری استفاده میکنی
    مثلا از هر بار درخواست که میره سمت فایل اکسل 500 رکورد بگیری و پردازش کنی و 500 تای بعدی و ...
    البته سوال پیش میاد که به ازای هر بار درخواست یک بار فایل اکسل بایستی لود بشه تا بشه خروجی گرفت
    یه سری پارامترها هست که میشه بهش بگی از کدام رکورد بخون تا کدوم رکورد
    نکته : هرچی از آیتم های بیشتر توی آرایه استفاده کنی از رم بیشتری مصرف میکنی

  3. #3

    نقل قول: مشاوره: خروجی اکسل در تعداد رکورد بالا

    نقل قول نوشته شده توسط 680100 مشاهده تاپیک
    بایستی تعداد کمتری خروجی گرفت
    یعنی یک میلیون رکورد رو هرچه ریز کنی از رم کمتری استفاده میکنی
    مثلا از هر بار درخواست که میره سمت فایل اکسل 500 رکورد بگیری و پردازش کنی و 500 تای بعدی و ...
    البته سوال پیش میاد که به ازای هر بار درخواست یک بار فایل اکسل بایستی لود بشه تا بشه خروجی گرفت
    یه سری پارامترها هست که میشه بهش بگی از کدام رکورد بخون تا کدوم رکورد
    نکته : هرچی از آیتم های بیشتر توی آرایه استفاده کنی از رم بیشتری مصرف میکنی
    شما پیشنهاد میکنید من 500 تا بخونم بریزم تو فایل و بعد 500 تای بعدی؟

  4. #4

    نقل قول: مشاوره: خروجی اکسل در تعداد رکورد بالا

    یه سوال
    آیا این فایل اکسل ثابت هست ؟ و فقط میخواید این فایل رو پردازش کنید ؟
    یا فایل داینامیک هست مثلا به ازای هر روز یک فایل وجود دارد ؟




    اگر ثابت هست نظر من اینه که فایل اکسل رو ایمپورت کنی تو دیتابس و اندیکس گذاری مشخص و دقیق روی جدول بدید تا سرعت پردازش رو به حد خیلی زیاد بالا ببرید

    من حدود 2 ماه پیش این مشکل رو داشتم که قیقا یک میلیون رکورد تو اکسل وجود داشت که بایستی پردازش میکردم
    بهترین حالت برای من ساخت جدول و پیاده سازی فیلدهای مورد نیاز بود و اندیکس گذاری که سرعت کار من رو به حدی بالا برد
    بدون اندیکس گذاری من روزانه 1000 تا 2000 رکورد می تونستم پردازش کنم که اندیکس گذاری تو عرض 2 ساعت کار پردازش من تمام شد
    تو این حالت من 100 تا 100 تا رکورد از دیتابیس میگرفتم

  5. #5

    نقل قول: مشاوره: خروجی اکسل در تعداد رکورد بالا

    نقل قول نوشته شده توسط 680100 مشاهده تاپیک
    یه سوال
    آیا این فایل اکسل ثابت هست ؟ و فقط میخواید این فایل رو پردازش کنید ؟
    یا فایل داینامیک هست مثلا به ازای هر روز یک فایل وجود دارد ؟


    اگر ثابت هست نظر من اینه که فایل اکسل رو ایمپورت کنی تو دیتابس و اندیکس گذاری مشخص و دقیق روی جدول بدید تا سرعت پردازش رو به حد خیلی زیاد بالا ببرید

    من حدود 2 ماه پیش این مشکل رو داشتم که قیقا یک میلیون رکورد تو اکسل وجود داشت که بایستی پردازش میکردم
    بهترین حالت برای من ساخت جدول و پیاده سازی فیلدهای مورد نیاز بود و اندیکس گذاری که سرعت کار من رو به حدی بالا برد
    بدون اندیکس گذاری من روزانه 1000 تا 2000 رکورد می تونستم پردازش کنم که اندیکس گذاری تو عرض 2 ساعت کار پردازش من تمام شد
    تو این حالت من 100 تا 100 تا رکورد از دیتابیس میگرفتم
    منظور من اینه ۱۰۰ تا رکورد از دیتابیس میگرفتیم میریختین تو اکسل یا نه توی ارایه نگه می داشتین اخرکار همشو باهم میریزین تو اکسل؟

  6. #6

    نقل قول: مشاوره: خروجی اکسل در تعداد رکورد بالا

    نقل قول نوشته شده توسط vahid78 مشاهده تاپیک
    منظور من اینه ۱۰۰ تا رکورد از دیتابیس میگرفتیم میریختین تو اکسل یا نه توی ارایه نگه می داشتین اخرکار همشو باهم میریزین تو اکسل؟
    وقتی فایل اکسل رو تبدیل کردم به sql نیاز کارم نبود اون رو دوباره تبدیل کنم به اکسل (البته توی export گرفتن می تونی فرمت CSV اکسل رو انتخاب کنی و این فایل رو تبدیل کنی به اکسل) .
    در کل کارهای من با دیتابیس بود .

    از دیتابیس خروجی میگرفتم 100 تا 100 تا بعد به آرایه نسبت میدادم و از آرایه استفاده میکردم

  7. #7

    نقل قول: مشاوره: خروجی اکسل در تعداد رکورد بالا

    من خودم دارم از دیتابیس خروجی میگیرم و نیازی ندارم که بریزم تو دیتابیس

    فقط بهینه ترین حالت خروجی گرفتن برام مهمه

  8. #8
    کاربر دائمی آواتار Unique
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    ایران - اصفهان
    پست
    3,199

    نقل قول: مشاوره: خروجی اکسل در تعداد رکورد بالا

    من اصلا نمیدونم یک میلیون رکورد توی اکسل به چه دردی میخوره ! یعنی معمولا اطلاعات تفسیره شده و محدود شده و فیلتر شده را میریزن توی excel اما خوب اینم سناریویی هست برای خودش. تا حالا امتحان نکردم و نمیدونم دقیقا دنبال این هستی که mysql حافظه کمتری استفاده کنه یا php process.
    نمیدونم تا حالا unbuffered query زدی یا نه ! اما میدونم که اگه unbyffered بزنی کل اطلاعات توی memory نمیاد و از سمت mysql میتونی یکی یکی fetch کنی. اینجا توی سایت php.net کامل توضیح داده.

  9. #9

    نقل قول: مشاوره: خروجی اکسل در تعداد رکورد بالا

    نقل قول نوشته شده توسط Unique مشاهده تاپیک
    من اصلا نمیدونم یک میلیون رکورد توی اکسل به چه دردی میخوره ! یعنی معمولا اطلاعات تفسیره شده و محدود شده و فیلتر شده را میریزن توی excel اما خوب اینم سناریویی هست برای خودش. تا حالا امتحان نکردم و نمیدونم دقیقا دنبال این هستی که mysql حافظه کمتری استفاده کنه یا php process.
    نمیدونم تا حالا unbuffered query زدی یا نه ! اما میدونم که اگه unbyffered بزنی کل اطلاعات توی memory نمیاد و از سمت mysql میتونی یکی یکی fetch کنی. اینجا توی سایت php.net کامل توضیح داده.
    دقیقا منم میدونم یک میلیون رکورد تو اکسل هیچ فایده ایی نداره ولی فقط مشتری هست دیگه پا فشاری زیادی رو این قسمت از کار داره

    دیتای من تو mySQL نیست
    من از Elasticsearch استفاده می کنم

  10. #10
    کاربر دائمی آواتار Unique
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    ایران - اصفهان
    پست
    3,199

    نقل قول: مشاوره: خروجی اکسل در تعداد رکورد بالا

    وقتی توی انجمن PHP سوال میپرسی اصل را روی MySQL میگذارم ! متاسفانه چیزی از Elasticsearch نمیدونم اما میتونی توی stackoverflow در مورد مباحث memoey مرتبط بپرسی !

  11. #11

    نقل قول: مشاوره: خروجی اکسل در تعداد رکورد بالا

    نقل قول نوشته شده توسط Unique مشاهده تاپیک
    وقتی توی انجمن PHP سوال میپرسی اصل را روی MySQL میگذارم ! متاسفانه چیزی از Elasticsearch نمیدونم اما میتونی توی stackoverflow در مورد مباحث memoey مرتبط بپرسی !
    متاسفانه این یک فکر اشتباه هست که PHP پایگاه داده دیفالتش mySQL هست
    من تو پست اولم ذکر کردم که از الستیک دارم داده هامو میخونم
    و اسکریپتی که داره این اطلاعات را میخونه با PHP‌ نوشته شده


    به هرحال ممنون از ارسال پاسختون

  12. #12
    کاربر دائمی آواتار Unique
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    ایران - اصفهان
    پست
    3,199

    نقل قول: مشاوره: خروجی اکسل در تعداد رکورد بالا

    متاسفانه این یک فکر اشتباه هست که PHP پایگاه داده دیفالتش mySQL هست
    دلیلش اینه که PHP بهترین همخوانی و پرفورمانس را با MySQL داره.

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

  13. #13

    نقل قول: مشاوره: خروجی اکسل در تعداد رکورد بالا

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

    شما خروجی اکسل میخواید از رکوردهای دیتابیس

    یه راه حل پیشنهاد میدم

    با استفاده از بافر کوئری که دوستومن اشاره کرد یا گرفتن xتا xتا رکورد از دیتابیس و append رکورد یا رکورد ها به فایل txt . هر رکورد در یک خط جدید PHP_EOL .
    بعد این فایل تکست رو تبدیل کنی به اکسل
    البته داده ها جوری توی فایل txt ذخیره بشند که بعدا بتونید جدا سازی کنید و هر کدوم فیلدها بره توی cell مربوط به خودش .

    مثلا

    1|نام و نام خانوادگی|سن|جنسیت|تحصیلات

    اینجا با کاراکتر | میتونی این فیلدها رو از هم جدا کنید

  14. #14

    نقل قول: مشاوره: خروجی اکسل در تعداد رکورد بالا

    نقل قول نوشته شده توسط 680100 مشاهده تاپیک
    تا این لحظه فکر میکردم که میخواید داده های اکسل رو پردازش کنید .

    شما خروجی اکسل میخواید از رکوردهای دیتابیس

    یه راه حل پیشنهاد میدم

    با استفاده از بافر کوئری که دوستومن اشاره کرد یا گرفتن xتا xتا رکورد از دیتابیس و append رکورد یا رکورد ها به فایل txt . هر رکورد در یک خط جدید PHP_EOL .
    بعد این فایل تکست رو تبدیل کنی به اکسل
    البته داده ها جوری توی فایل txt ذخیره بشند که بعدا بتونید جدا سازی کنید و هر کدوم فیلدها بره توی cell مربوط به خودش .

    مثلا

    1|نام و نام خانوادگی|سن|جنسیت|تحصیلات

    اینجا با کاراکتر | میتونی این فیلدها رو از هم جدا کنید
    دقيقا همين كار رو كردم و ركوردها را با fputcsv در انتهاي يك فايل csv ريختم

    و در اخر همين فايل را به مشتري ميدم

    راحت!

تاپیک های مشابه

  1. انتخاب پایگاه داده در تعداد رکورد بالا
    نوشته شده توسط ua741_1 در بخش برنامه نویسی مبتنی بر Microsoft .Net Framework
    پاسخ: 2
    آخرین پست: جمعه 14 آبان 1395, 23:47 عصر
  2. انتخاب پایگاه داده در تعداد رکورد بالا
    نوشته شده توسط ua741_1 در بخش Access
    پاسخ: 1
    آخرین پست: دوشنبه 26 مهر 1395, 18:22 عصر
  3. پاسخ: 0
    آخرین پست: دوشنبه 18 دی 1391, 10:06 صبح
  4. حرفه ای: شیوه نمایش تعداد رکورد بالا در GRID
    نوشته شده توسط HjSoft در بخش مطالب مرتبط با بانکهای اطلاعاتی در VB6
    پاسخ: 3
    آخرین پست: شنبه 23 مرداد 1389, 00:36 صبح
  5. تعداد رکورد بالا در فرم
    نوشته شده توسط quack در بخش برنامه نویسی در Delphi
    پاسخ: 11
    آخرین پست: پنج شنبه 23 شهریور 1385, 18:57 عصر

قوانین ایجاد تاپیک در تالار

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