ما هي الطريقة الأكثر كفاءة لتحميل البيانات من ملف إلى مجموعة عند الطلب؟

StackOverflow https://stackoverflow.com/questions/2434971

سؤال

أنا أعمل على مشروع Java الذي يسمح للمستخدمين بتحليل ملفات متعددة مع آلاف الخطوط المحتملة. سيتم تخزين معلومات المعلومات في كائنات مختلفة، والتي سيتم إضافتها بعد ذلك إلى مجموعة.

نظرا لأن GUI لن يحمل تحميل كل هذه الكائنات في وقت واحد واحتفظ بها في الذاكرة، فأنا أبحث عن طريقة فعالة لتحميل / تفريغ البيانات من الملفات، بحيث يتم تحميل البيانات فقط في المجموعة عندما يطلب المستخدم وبعد

أنا فقط خيارات التقييم الآن. لقد فكرت أيضا في القضية حيث، بعد تحميل مجموعة فرعية من البيانات في المجموعة، وتقديمها على واجهة المستخدم الرسومية، وأفضل طريقة لإعادة تحميل البيانات المرصودة مسبقا. إعادة تشغيل محلل / ملء جمع / ملء واجهة المستخدم الرسومية؟ أو ربما ابحث عن طريقة للحفاظ على المجموعة في الذاكرة، أو تسلسل / تحيز التجميع نفسه؟

أعلم أن التحميل / تفريغ مجموعات فرعية من البيانات يمكن أن تصبح صعبة إذا تم تنفيذ نوع من تصفية البيانات. دعنا نقول أنني أتصفية على الهوية، لذلك ستتضمن مجموعتي الفرعية الجديدة بيانات من مجموعتين فرعيتين سابقا تم تحليلها. لن تكون هذه مشكلة في أن أحتفظ بنسخة رئيسية من البيانات بأكملها في الذاكرة.

لقد قرأت أن مجموعات Google جيدة وكفاءة عند التعامل مع كميات كبيرة من البيانات، وتقدم طرق تبسيط الكثير من الأشياء، لذلك قد يوفر هذا بديلا للسماح لي بالحفاظ على المجموعة في الذاكرة. هذا هو مجرد التحدث العام. السؤال حول المجموعة التي يجب استخدامها هي شيء منفصل ومعقد.

هل تعرف ما هي التوصية العامة حول هذا النوع من المهمة؟ أود أن أسمع ما قمت به مع سيناريوهات مماثلة.

يمكنني تقديم المزيد من التفاصيل إذا لزم الأمر.

هل كانت مفيدة؟

المحلول

يمكنك تضمين قاعدة بيانات في التطبيق، مثل hsqldb.. وبعد بهذه الطريقة تحليل الملفات في المرة الأولى، ثم استخدم SQL للاستعلام البسيط والمعقدة.

HSQLDB (قاعدة بيانات Hypersql) هو محرك قاعدة بيانات SQL العلائقية الرائدة مكتوبة في Java. يحتوي على برنامج تشغيل JDBC ودعم تقريبا ANSI-92 SQL (تنسيق شجرة BNF) بالإضافة إلى العديد من التحسينات SQL: 2008. إنه يوفر محرك قاعدة بيانات سريع وسريع يوفر جداول في الذاكرة والقرص ودعم أوضاع الخادم المضمنةوبعد بالإضافة إلى ذلك، يتضمن أدوات مثل أداة SQL سطر الأوامر وأدوات Query Query.

نصائح أخرى

إذا كان لديك الكثير من البيانات، والكثير من الملفات، وكنت قصيرة على الذاكرة، فيمكنك القيام بمسح أولي من الملف إلى فهرسه. إذا تم تقسيم الملف إلى سجلات بواسطة موجزات خط، وأنت تعرف كيفية قراءة السجل، فيمكنك فهرسة سجلاتك بواسطة مواقع البايت. في وقت لاحق، إذا كنت ترغب في قراءة مجموعة معينة من غير المعمول، فسوف تقوم بإجراء بحث سريع للعثور على نطاقات البايت التي تحتاج إلى قراءتها، وقراءة تلك من Inputstream الملف. عندما لا تحتاج إلى هذه العناصر بعد الآن، سيتم تقليلها. لن تعقد المزيد من العناصر أكثر مما تحتاج إلى كومة الكومة.

سيكون هذا حلا بسيطا. أنا متأكد من أنه يمكنك العثور على مكتبة لتزويدك بمزيد من الميزات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top