سؤال

أنا أتخذ قرارًا بشأن قاعدة بيانات مدمجة في تطبيق Java Servlet القادم. أنا وصلت إلى اثنين من المتنافسين النهائيين: SQLite مع SQLiteJDBC "Pure Java" برامج التشغيل مقابل Java DB (المعروف أيضًا باسم Derby).

فيما يلي معايير القاتل الخاصة بي: يجب أن يتم تشغيل التطبيق على أي نظام تشغيل يدعم Java ، وتحديداً لدينا مضيفات Solaris و CentOs و Windows X86 و Windows X64 التي ستحتاج جميعًا إلى تشغيل التطبيق. ولا يجب أن يتضمن التثبيت شيئًا أكثر من نسخ ملف الحرب إلى مجلد نشر الخادم الهدف والسماح للخادم بعمل الباقي (وهو ليس أكثر من مجرد نسخ سحاب إلى الخادم المستهدف ثم السماح للخادم بفصل التطبيق وتشغيل التطبيق). يجب ألا يكون هناك أي شيء يتجول مع الثنائيات الأصلية كجزء من التثبيت ، ولا يوجد منطق إعداد إضافي. (هذا ليس في الواقع متطلباتي ، إنه الشركة ، لجميع التطبيقات المستندة إلى Servlet ، لكني أحب ذلك).

أعلم أن Derby (Java DB) يفي بالمعايير المذكورة أعلاه. لقد فعلت ذلك مرة أو مرتين. لكني أحب حقًا بنية ملف SQLite وحقيقة أن مجتمع SQLite أكبر بحوالي 20 مرة من Derby. لديّ أيضًا خوف من أن أوراكل ستقتل ديربي يومًا ما ، حيث أصبح لديهم الآن خمسة منتجات قاعدة بيانات منافسة تحت مظلةها ولا يمكن أن تستمر إلى الأبد. من المحتمل أن تكون ديربي أول ضحية عندما تبدأ التدبير المنزلي.

لذلك ، كنت أنظر إلى SQLitejdbc ، الذي يدعي أنه يحتوي على سائقي JDBC "JAVA" لـ SQLite. الآن ، سأفهم "جافا النقية" على أنه لا توجد تبعيات لنظام التشغيل أو مكتبات إضافية ، يمكن للمرء تشغيل السائق في أي JVM على أي نظام تشغيل. لذلك ، أذهب وأحصل على ملف الجرة مع برامج تشغيل جافا النقية. وكوني النوع الغريب ، أنا أنظر بداخله. ثم لاحظت أنه يحتوي على 4 ملفات في الجذر مع ".lib" امتدادات ، على النحو التالي:

Linux-AMD64.lib
Linux-X86.lib
Mac-universal.lib
Win-X86.lib

حسنًا ، ما الأمر مع ذلك؟ هل هذه مثل المكتبات الأصلية لنظام التشغيل المسماة؟ إذا كان الأمر كذلك ، هل يمكنني افتراض تشغيل برنامج تشغيل Java الخالص هذا فقط على منصة مع ملف LIB مناسب في الجرة؟ إذا كان هذا هو الحال ، فسيتعين عليّ أن أخرج sqlite من قائمة المتنافسين ، لأن Winx64 و Solaris هما أهم اثنين من نظام التشغيل هنا.

أو ربما أسيء تفسيره وسائق جافا النقي هو حقًا جافا نقي وسيتم تشغيله في أي JVM؟

جميع الردود موضع ترحيب !!!

شكرا مقدما ، جون

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

المحلول

إذا فهمت بشكل صحيح ، فإن SQLiteJDBC نفسها عبارة عن برنامج تشغيل من النوع 4 JDBC ، لكن لا يزال يتطلب بعض التكامل الثنائي الأصلي مع منصة التشغيل المضيفة لأن SQLite لا يزال حلاً يعتمد على C وليس لديه طبقة تكامل/بروتوكول الشبكة مثل SQL*Net لـ Oracle بقدر ما أعرف. تذكر الصفحة الرئيسية SQLiteJDBC تطبيق "NETTERVM" لأي لغة تدعمها مجلس التعاون الخليجي ، لذلك يبدو من الممكن نشر المنصات عبر أينما توجد بيئة وقت تشغيل GCC. لم يكن هناك ذكر لسولاريس.

نصائح أخرى

http://www.xerial.org/trac/xerial/wiki/SQLitejdbc - يوفر تطبيق Java خالص ، على الرغم من أنه يستخدم ملفات .LIB المقدمة حيثما أمكن ذلك لأنها أسرع.

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