آراء حول NetCDF vs HDF5 لتخزين البيانات العلمية؟

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

  •  21-08-2019
  •  | 
  •  

سؤال

هل لدى أي شخص ما يكفي من الخبرة مع NetCDF وHDF5 لإعطاء بعض الإيجابيات/السلبيات عنها كوسيلة لتخزين البيانات العلمية؟

لقد استخدمت HDF5 وأرغب في القراءة/الكتابة عبر Java ولكن الواجهة عبارة عن غلاف حول مكتبات C، الأمر الذي وجدته مربكًا، لذا يبدو NetCDF مثيرًا للاهتمام ولكني لا أعرف شيئًا عنه تقريبًا.

يحرر: طلبي مخصص "فقط" لتسجيل البيانات، حتى أحصل على ملف به تنسيق يصف نفسه بنفسه.تتمثل الميزات المهمة بالنسبة لي في القدرة على إضافة بيانات تعريف عشوائية، والحصول على وصول سريع للكتابة لإلحاق مصفوفات البايت، والتزامن مع كاتب واحد/متعدد القراء (يفضل بشدة ولكن ليس ضروريًا.تقول مستندات NetCDF أن لديهم SWMR لكنهم لا يذكرون ما إذا كانوا يدعمون أي آلية لضمان عدم تمكن كاتبين من فتح نفس الملف في وقت واحد مع نتائج كارثية).أنا أحب الجانب الهرمي لـ HDF5 (على وجه الخصوص I حب التسلسل الهرمي للرسم البياني الموجه، وهو أكثر مرونة بكثير من التسلسل الهرمي الذي يشبه نظام الملفات "العادي"، وأنا أقرأ مستندات NetCDF الآن ...إذا كان يسمح بمجموعة بيانات واحدة فقط لكل ملف، فمن المحتمل ألا يعمل ذلك بالنسبة لي.:(

تحديث - يشبه NetCDF-جافا يقرأ من ملفات netCDF-4 ولكنه يكتب فقط من ملفات netCDF-3 التي لا تدعم المجموعات الهرمية.الرتق.

تحديث 2009-14 يوليو:لقد بدأت أشعر بالانزعاج حقًا من HDF5 في Java.المكتبة المتاحة ليست رائعة ولديها بعض العوائق الرئيسية التي تتعلق بطبقات تجريد Java (أنواع البيانات المركبة).تنسيق ملف رائع للغة C ولكن يبدو أنني خسرت للتو.>:(

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

المحلول

أقترح عليك بشدة استخدام HDF5 بدلاً من NetCDF.NetCDF مسطح، ويصبح متسخًا جدًا بعد فترة إذا لم تتمكن من تصنيف الأشياء.وبطبيعة الحال، فإن التصنيف هو أيضا موضوع للنقاش، ولكن على الأقل لديك هذه المرونة.

لقد أجرينا تقييمًا دقيقًا لـ HDF5 مقابل.NetCDF عندما كتبت Q5Cost، وكانت النتيجة النهائية لـ HDF5.

نصائح أخرى

يجب أن أعترف أن استخدام HDF5 أسهل بكثير على المدى الطويل.ليس من الصعب إدخال هياكل بيانات بسيطة في تنسيق NetCDF، ولكن معالجتها لاحقًا تمثل نوعًا من الألم.

يرمز الحرف "H" في HDF5 إلى كلمة "heirarchical"، والتي تُرجمت (بالنسبة لي على أي حال) إلى طريقة سهلة حقًا لمعالجة البيانات، بمجرد تحريك العقد والإشارة إلى العقد من أماكن أخرى.

هل يمكنني أن أسأل ما هو نوع هذا المشروع؟أستخدم كلاهما في الكثير من مهام النمذجة العلمية HPC.هل يمكنني أن أفترض أنك تفعل الشيء نفسه؟إذا كان الأمر كذلك، فإن الاتجاه الذي أراه هو انتقال الأشخاص إلى HDF5، ولكن قد يكون ذلك مختلفًا في مجالك المحدد.

ومع ذلك، في نهاية المطاف، حظا سعيدا!

يمكن لـ NetCDF، بدءًا من الإصدار 4.0 (2008)، قراءة وكتابة معظم ملفات HDF5، ويوفر الوصول إلى الميزات الهرمية لـ HDF5 عبر نموذج البيانات المحسن.

HDF5 غني جدًا بالميزات، ويحتوي على بعض ميزات الأداء الرائعة.

يحتوي NetCDF على واجهة برمجة تطبيقات أبسط وقاعدة أدوات أوسع بكثير.هناك العديد من الأدوات التي تتعامل مع بيانات netCDF.

أعلم أن هذا منشور قديم، وقد أشار الملصق الأصلي إلى أنهم انتقلوا إلى أبعد من ذلك، ولكن بالنسبة لأي شخص ينتهي به الأمر هنا... فإن مكتبة netCDF-Java (اعتبارًا من 4.3.13) تتمتع بدعم كتابة netCDF-4 عبر مكتبة netCDF Cإنه لا يزال في مرحلة تجريبية، لكنه يعمل تعليق هو بالتأكيد موضع تقدير!

يرجى الاطلاع على netCDF-Java مرجع المستندات لمزيد من التفاصيل.

حاول كتابة بعض نماذج التطبيقات الصغيرة في كل منها، وقارن التجربة.إذا كانت قابلية التوسع المستقبلية للتعليمات البرمجية الخاصة بك إلى التنفيذ المتوازي (عبر MPI أو ما شابه) أمرًا مهمًا بالنسبة لك، فأنا أعلم أن HDF لديه تطبيق موازٍ، والذي يعمل الأشخاص باستمرار على تحسينه.لست متأكدًا من NetCDF.

التعديل المتأخر:لNetCDF، هناك الآن NetCDF الموازي من أرجون.إنه يعمل بشكل جيد، وفريق التطوير نشط جدًا في تحسينه بشكل أكبر.

1) مكتبة Netcdf-4 C هي طبقة أعلى مكتبة HDF-5 C.تعتبر واجهة برمجة التطبيقات (API) أبسط من مكتبة HDF5، ولكن في النهاية لديك نفس الوظيفة تقريبًا.لا يدعم Netcdf الرسوم البيانية، لكن HDF5 يدعمها.في الواقع، HDF لا يمنع الدورات في الرسم البياني الخاص بك على ما أعتقد.

2) تحتوي مجموعة HDF على Java API أعلى مكتبة HDF-5 C.

3) يحتوي Unidata على مكتبة Netcdf-Java وهي عبارة عن Java خالصة، ولكن يمكنها قراءة HDF-5 فقط.

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

تحديث: في الواقع، اتضح أنه على الرغم من أن NetCDF-3 لا يدعم القيم الموقعة، إلا أن NetCDF-4 يدعم القيم الموقعة، على الرغم من أن واجهة برمجة تطبيقات NetCDF في Java لتحديد التوقيع هي ملتوية قليلا.

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