جافا جزءا لا يتجزأ من قواعد البيانات المقارنة [مغلقة]

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

سؤال

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

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

شكرا لك.

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

المحلول

إما

  • HSQLDB - تستخدم أوبن أوفيس, اختبار ومستقرة.انها سهلة الاستخدام.إذا كنت ترغب في تعديل db-البيانات ، يمكنك فقط فتح الملف وتحرير إدراج البيانات.

أو

  • H2 - يقال أن تكون أسرع (من قبل المطور ، الذي صمم أصلا hsqldb أيضا)

أي واحد يمكنك استخدام ما يصل إلى لك ، اعتمادا كم أداء وكم الاستقرار التي تحتاج إليها.

المطور من H2 قد طرح جميل تقييم الأداء:
http://www.h2database.com/html/performance.html

نصائح أخرى

يمكنني استخدام أباتشي دربي الى حد كبير كل من بلدي جزءا لا يتجزأ من احتياجات قاعدة البيانات.يمكنك أيضا استخدام الشمس Java DB التي تقوم على دربي ولكن أحدث إصدار من ديربي بكثير أحدث.وهو يدعم الكثير من الخيارات التجارية الأصلية قواعد البيانات دعم ولكن أصغر بكثير و أسهل إلى تضمين.لقد كان بعض جداول قاعدة البيانات مع أكثر من مليون السجلات مع أي قضايا.

اعتدت على استخدام HSQLDB سرعتها سرعة الصوت حوالي 3 سنوات.كان لديه بعض مشاكل الأداء في ذلك الوقت وأنا التبديل إلى ديربي من ذلك لأن هذه القضايا.ديربي تم الصلبة حتى عندما كان في حاضنة في أباتشي.

كنت بحاجة إلى استخدام جافا جزءا لا يتجزأ من قاعدة البيانات في واحدة من بلدي المشاريع فعلت الكثير من البحوث فهم إيجابيات وسلبيات كل البيانات الخاصة بنا.كتبت مدونة سرد إيجابيات وسلبيات الشعبية جزءا لا يتجزأ جافا قواعد البيانات (H2 ، HSQLDB ، ديربي ، ObjectDB, Neo4j, OrientDB) ، هل يمكن أن يكون نظرة على ذلك.اخترت H2 كما اعتقد انها الانسب متطلبات بلدي.رابط المدونة: http://sayrohan.blogspot.in/2012/12/choosing-light-weight-java-database.html نأمل أن يساعد!

كنت أذهب مع H2, أداء المقصود هو أفضل بكثير من ديربي.قراءة http://www.h2database.com/html/performance.html للحصول على مزيد من المعلومات.

HSQLDB هو مرشح جيد (حقيقة أنه يستخدم في أوبن أوفيس قد أقنعت البعض منكم) ، ولكن هذه الصغيرة بمحض التطبيق ، لماذا لا تستخدم كائن قاعدة البيانات (بدلا من الكلاسيكية relationnal قاعدة البيانات) ?

اعتدت DB4O في واحدة من بلدي المشاريع و أنا راض جدا مع ذلك.يجري وجوه المنحى, أنت لا تحتاج إلى كل السبات طبقة يمكن إدراج مباشرة/تحديث/حذف/الاستعلام الكائنات !وعلاوة على ذلك, كنت لا داعي للقلق حول المخطط, يمكنك مباشرة العمل مع الكائنات و DB4O بالباقي !

أوافق على أن ذلك قد يستغرق بعض الوقت لتعتاد على هذا النوع الجديد من قاعدة البيانات ، ولكن تحقق DB40 التعليمي لنرى كيف يجعل من السهل العمل مع ديسيبل !

تحرير:كما قال في تصريحات DB4O يعالج تلقائيا في إصدارات أحدث من الطبقات.وعلاوة على ذلك ، أداة التصفح وتحديث قاعدة البيانات خارج التطبيق هو متاح هنا : http://code.google.com/p/db4o-om/

Java DB (الشمس توزيع أباتشي ديربي) الآن السفن في JDK 6!

كنت أريد أن أفعل شيئا مثل جيسون كوهين قد تم التفكير هذا يبدو أسهل طريقة يجري في JDK توزيعة (التي الأسبوع الماضي هو الآن شرط بلدي التطبيق).أو ربما أنا فقط كسول بهذه الطريقة.

نحن نستخدم HSQLDB في الإنتاج كما في "التكوين" خيار التطبيق لدينا.أنها تسمح للناس المحاكمة من دون مشاحنات من إعداد بيانات حقيقية.

ومع ذلك نحن لا لا الدعم للاستخدام العادي.الأسباب عديدة:

  1. يبطئ بشكل متناسب مع حجم البيانات.
  2. يصعب الوصول إليها من خارج التطبيق (على سبيل المثالعن تقارير مخصصة).
  3. المعاملات / disk-sync من الصعب الحصول على حق, لذلك فمن السهل أن تفقد البيانات.

على الأقل (2) و (3), هناك طرق حوله لكنه من الصعب ؛ انها أسهل بكثير على سبيل المثالتثبيت الخلية.

neo4j هو:

جزءا لا يتجزأ من القرص بالكامل استنادا إلى المعاملات جافا استمرار المحرك الذي يقوم بتخزين البيانات المهيكلة في الرسوم البيانية بدلا من الجداول

لم تتح لي فرصة لمحاولة ذلك حتى الآن - ولكن يبدو واعدا جدا.ملاحظة هذه ليست قاعدة بيانات SQL - الكائن البياني يتم استمرت لك - لذلك قد لا تكون مناسبة القائمة الخاصة بك التطبيق.

مقارنة جيدة أداة يمكن العثور عليها هنا: http://www.jpab.org/All/All/All.html

لاحظ أيضا وجها لوجه DBMS/JPA مقارنات

أنا مروحة كبيرة من DB4O على حد سواء .Net و Java.

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

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

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

أنا واجهت نفس المشكلة منذ بعض الوقت.لم تعرف أي قاعدة بيانات ، لذلك أول حل المستخدمة ديربي (أو HSQLDB?), وكنت في وقت لاحق قادرا على التبديل إلى HSQLDB (أو الدربي ؟ لا أتذكر أي حل عملت) مرة واحدة كنت قد تحدد أين أنا القضايا (المتعلقة الأداء) و الحل الذي من شأنه أن يعمل حقا بالنسبة لي.

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

HSQLDB قد يسبب مشاكل كبيرة في تطبيقات ليست تماما أن مستقر.

أفضل ما سمعت (لا خبرة ومع ذلك) هو berkleyDB.ولكن إلا إذا كنت مفتوحة المصدر ، فإنه سوف يكلفك ذراع وساق للاستخدام بسبب الترخيص...ترى هذا http://www.oracle.com/technology/software/products/berkeley-db/htdocs/licensing.html للحصول على التفاصيل.

ps.berkleyDB ليست قواعد البيانات العلائقية في حال كنت لم تعرف.

لقد استخدمت دربي أنا أكره حقا هو تحويل نوع بيانات الوظائف ، وبخاصة التاريخ/الوقت الوظائف.(عدد نوع)<--> Varchar تحويل انها الألم.

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

أحدث ديربي النسخة تحويل نوع البيانات

أنا شخصيا صالح HSQLDB ، ولكن في الغالب لأنه كان أول من حاولت.

H2 هو أن يكون أسرع ويوفر أجمل واجهة المستخدم الرسومية الواجهة (الذي هو عام و يعمل مع أي برنامج تشغيل JDBC بالمناسبة).

على الأقل HSQLDB, H2 و ديربي توفر ملقم وسائط والتي هي كبيرة للتنمية ، لأنه يمكنك الوصول إلى DB مع التطبيق الخاص بك وبعض أداة في نفس الوقت (وهو جزءا لا يتجزأ من الوضع عادة لا تسمح).

أعتقد أنني تأخرت قليلا (الكثير أواخر;-)) إلى هذا المنصب, ولكن أود أن أضيف Perst, مفتوح المصدر, وجوه المنحى جزءا لا يتجزأ من قاعدة بيانات Java &.صافي.للنظر فيها.Perst هو مفتوح المصدر / المزدوج الترخيص جزءا لا يتجزأ من قاعدة بيانات Java.توزيع متوافق مع منصة جوجل الروبوت ، ويشمل أيضا Perst Lite for Java ME.لقد بنيت حتى الروبوت القياسية و أنتجت المستند التقني حول هذا الموضوع...يمكنك إلقاء نظرة هنا: http://www.mcobject.com/index.cfm?fuseaction=download&pageid=581§ionid=133

كل خير ، كريس

إذا أنا الصحيح H2 هو من نفس الرجال الذين كتب HSQLDB.الكثير على نحو أفضل إذا كنت تثق المعايير على الموقع.أيضا ، هناك بعض فكرة أن الشمس المجتمع قفز بسرعة كبيرة جدا في ديربي.

أدرك أنك ذكرت SQL التصفح, ولكن كل شيء آخر في سؤالك يجعلني أريد أن أقترح عليك أيضا أن تنظر في DB4O, الذي هو عظيم كائن بسيط DB.

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