«۲۵ میلیون سلول اکسل را با ۷ مگابایت حافظه استریم کرد»۱۴۰۵ تیر ۵, جمعه
برنامه_نویسی ۲۲ خرداد ۱۴۰۵

«۲۵ میلیون سلول اکسل را با ۷ مگابایت حافظه استریم کرد»

یک تیم توسعه‌گر در پلتفرم حاکمیت هویت، با ترکیب SXSSFWorkbook، بارگذاری مستقیم به S3 و فشرده‌سازی زنده، توانست ۲۵ میلیون سلول Excel را در فایل‌های ZIP خروجی کند، بدون اینکه حافظه بیش از ۷ مگابایت مصرف شود. هر مرحله از پردازش با اندازه ثابت تعریف شد و هیچ‌کدام به حجم داده وابسته نبود. این روش اجازه داد تا چهار خروجی همزمان روی پادهای ۴ گیگابایتی بدون خطای OutOfMemory اجرا شود.

«۲۵ میلیون سلول اکسل را با ۷ مگابایت حافظه استریم کرد»

چرا مهمه؟

حافظهٔ مصرفی در تولید گزارش‌های بزرگ Excel معمولاً به چند گیگابایت می‌رسید و باعث سقوط سرویس می‌شد. با این معماری، مصرف حافظه ثابت در حدود ۷ مگابایت باقی می‌ماند، بنابراین می‌توان همزمان چندین خروجی بزرگ را بدون خطر OOM اجرا کرد. تیم‌های امنیت و تحلیل‌گر که به گزارش‌های مقیاس‌پذیر نیاز دارند، می‌توانند از این روش برای ارائهٔ سریع و پایدار داده‌ها به مشتریان استفاده کنند. خواننده باید این خبر را مهم بداند چون نشان می‌دهد محدودیت‌های فنی می‌توانند با طراحی لایه‌ای حل شوند و هزینهٔ زیرساخت کاهش یابد.

به درد کی می‌خوره؟

• مهندسان بک‌اند جاوا • تیم‌های DevOps که با محدودیت حافظه سرویس‌ها سروکار دارند • متخصصان داده که گزارش‌های بزرگ Excel می‌سازند • مدیران فنی زیرساخت‌های ابری

تو عمل چی کار کنیم؟

با مطالعهٔ این راهکار می‌توانید معماری مشابهی برای خروجی‌های بزرگ خود پیاده کنید؛ یعنی پردازش داده‌ها به صورت صفحه‌بندی‌شده، استفاده از SXSSFWorkbook با پنجرهٔ ردیف محدود، بارگذاری موقت به S3 و فشرده‌سازی زندهٔ ZIP. این کار باعث می‌شود حافظهٔ مصرفی ثابت بماند و نیازی به افزایش منابع سرور نباشد.

نظر BlueIT News

پیشنهاد می‌کنیم برای پروژه‌های بزرگ خروجی Excel، از ترکیب SXSSFWorkbook و خروجی‌استریم‌های چندبخشی S3 استفاده کنید؛ این ترکیب نه تنها هزینهٔ حافظه را کاهش می‌دهد، بلکه مقیاس‌پذیری سرویس را تضمین می‌کند.