Java قاعدة البيانات المضمنة ث / القدرة على تخزين ملف واحد

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

  •  18-09-2019
  •  | 
  •  

سؤال

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

هل هناك قاعدة بيانات Java المضمنة ذات السمعة الطيبة هناك خيار تخزين البيانات في ملف واحد؟ الوحيد الذي أدركه هو SQLite (ربط جافا المتاحة). حاولت H2 و HSQLDB ولكن من خارج الصندوق أنها تبدو لإنشاء العديد من الملفات، ومن المستحسن للغاية بالنسبة لي أن يكون لدي قاعدة بيانات في ملف واحد.

تعديل: الأداء السريع بشكل معقول هو مهم. تخزين الكائنات ليست كذلك؛ بالنسبة لمخاوف الأداء، أحتاج إلا إلى تخزين الأعداد الصحيحة والقطرات. (+ بعض الأوتار ولكن لا شيء أمر بالغ الأهمية)

تحرير 2: كفاءة بيانات التخزين مهمة لمجموعات البيانات الكبيرة، لذلك XML خارج.

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

المحلول 10

أعتقد الآن أنني سأستمر في استخدام HDF5 لتخزين البيانات المستمرة، بالاقتران مع H2 أو بعض قاعدة البيانات الأخرى لفهرسة في الذاكرة. لا أستطيع الحصول على SQLite لاستخدام النقط باستخدام برنامج تشغيل Java لدي، ولا يمكنني الحصول على Firebird وتشغيلها، ولا أثق في H2 مع Page_Store بعد.

نصائح أخرى

قاعدة بيانات النتريت http://www.dizitart.org/nitrite-database.html.

قاعدة بيانات NOSQL Object (NO2 AKA NITRITE) هي مخزن مستند مفتوح المصدر NOSQL المدمج مكتوب في Java مع Mongodb مثل API. وهو يدعم كلا من الذاكرة والمخزن المستمر في الملفات الفردية.

إذا كنت بحاجة فقط إلى قراءة الوصول ثم H2 قادر على اقرأ ملفات قاعدة البيانات من ملف مضغوط.

وبالمثل، إذا كنت لا تحتاج إلى الثبات، فمن الممكن أن يكون لديك إصدار في الذاكرة فقط من H2.

إذا كنت بحاجة إلى الوصول إلى كل من القراءة / الكتابة الوصول والمثابرة، فيمكنك حظا مؤقتا مع قواعد بيانات SQL-Type القياسية، حيث أن هذه جميعها تحافظ بشكل موحد على ملفات الفهرس والبيانات بشكل منفصل.

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

بمجرد أن استخدم قاعدة بيانات كائن محفوظة بياناتها إلى ملف. لديها جافا وواجهة .NET. قد تريد أن تتحقق منه. تسمى DB4O..

كرونيكل خريطة هي قاعدة بيانات جافا النقية المضمنة.

  • يخزن البيانات في ملف واحد، أي

    ChronicleMap<Integer, String> map = ChronicleMap
        .of(Integer.class, String.class)
        .averageValue("my-value")
        .entries(10_000)
        .createPersistedTo(databaseFile);
    
  • خريطة كرونيكل ناضجة (لا توجد بصق تخزين شديدة أبلغت منذ أشهر، في حين أنها في الاستخدام النشط).

  • المعايير الإجمالية تظهر أن خريطة الكروني هي الأسرع و أكثر كفاءة الذاكرة متجر القيمة الرئيسية ل Java.

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

إخلاء المسئولية: أنا مطور خريطة كرونيكل.

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

هذا ليس محرك SQL، ولكن إذا كنت تستخدم عيد الميلاد مع xstream, ، يمكنك بسهولة إنشاء ملف XML واحد مع جميع بياناتك. (Prevayler يدعوها ملف لقطة.)

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

قد ترغب في التحقق JDBM - نستخدمها في العديد من المشاريع، وهي سريعة جدا. يستخدم ملفات 2 (ملف قاعدة بيانات وملف سجل) إذا كنت تستخدمه لتطبيقات نوع الحمض، ولكن يمكنك الانتقال مباشرة إلى الوصول المباشر إلى قاعدة البيانات (بدون ملف سجل) إذا كنت لا تحتاج إلى حمض صلب.

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

منذ أن ذكرت SQLite، أفترض أنك لا تمانع في DB الأصلي (طالما تتوفر ترابط جافا الجيدة). Firebird. يعمل بشكل جيد مع Java، وكذلك تخزين ملف واحد افتراضيا.

سيكون كل من H2 و HSQLDB خيارات ممتازة، إذا لم يكن لديك متطلبات الملفات الفردية.

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