سؤال

أنا حاليا أحاول db4o (نسخة جافا) و أنا أحب ما أرى.ولكن أنا لا يمكن أن تساعد أتساءل كيف أنها لا تؤدي في الحي الحقيقي (الويب)البيئة.هل من أحد لديه أي تجارب (جيدة أو سيئة) مشاركة حول تشغيل db4o?

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

المحلول

نحن تشغيل DB40 .صافي نسخة كبيرة العميل/الخادم المشروع.

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

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

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

منطقة أخرى من الألم كان نص البحث.DB4O نص البحث هو الآن أبطأ بكثير من SQL فهرسة نص كامل.(سوف يقولون لك هذا صريح على الموقع.) والخبر السار هو أنه من السهل أن الإعداد نص محرك البحث في أعلى DB4O.على مشروعنا, لدينا التوصيل Lucene.NET فهرسة الحقول النصية نريد.

بعض واجهات برمجة التطبيقات لا يبدو أن العمل مثل GetField واجهات برمجة التطبيقات المفيدة في تطبيق قاعدة بيانات ترقيات.(على سبيل المثال ، لقد سميت عقار وتريد ترقية الكائنات الموجودة في قاعدة البيانات, تحتاج إلى استخدام هذه "انعكاس" واجهات برمجة التطبيقات إلى العثور على كائنات في قاعدة البيانات.واجهات برمجة التطبيقات الأخرى مثل [فهرس] سمة لا تعمل في مستقر 6.4 نسخة ، و يجب عليك بدلا من ذلك تحديد المؤشرات باستخدام تكوين().مؤشر("someField") ، وهي ليست بقوة كتبته.

شهدنا أداء تدهور أكبر قاعدة البيانات الخاصة بك.لدينا 1GB قاعدة البيانات الآن ما زالت الأمور بسرعة ، ولكن ليس بالسرعة عندما بدأنا مع قاعدة بيانات صغيرة.

وجدنا مسألة أخرى حيث Db4O.GetByID سيتم إغلاق قاعدة البيانات إذا كان معرف لم يعد موجودا في قاعدة البيانات.

لقد وجدت الأم بناء جملة الاستعلام (أكثر طبيعية ، لغة متكاملة جملة الاستفسارات) هو الآن أبطأ بكثير أقل ودية الصودا الاستعلامات.وذلك بدلا من الكتابة:

// C# syntax for "Find all MyFoos with Bar == 23".
// (Note the Java syntax is more verbose using the Predicate class.)
IList<MyFoo> results = db4o.Query<MyFoo>(input => input.Bar == 23);

بدلا من أن لطيفة الاستعلام رمز عليك قبيحة الصودا الاستعلام الذي هو سلسلة مقرها وليس كتابة بشدة.

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

DB4O الدعم الكريم:لقد تحدثت معهم عبر الهاتف عدة مرات وحصلوا على معلومات مفيدة.المستخدم المنتديات القادم إلى لا قيمة لها ، ومع ذلك ، تقريبا كل الأسئلة دون رد.بهم جيرة تعقب علة يتلقى الكثير من الاهتمام ، لذا إذا كنت قد حصلت على المزعجة الخلل في ملف على جيرة على ذلك في كثير من الأحيان سوف تحصل على ثابت.(لدينا 2 الأخطاء التي تم إصلاحها, و آخر واحد التي حصلت مصححة في نصف الطريق.)

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

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

نصائح أخرى

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

غوران

المشكلة الرئيسية التي واجهتها مع ذلك هو تقديم التقارير.هناك لا يبدو أن هناك أي طريقة لتشغيل تقارير فعالة ضد db4o مصدر البيانات.

جودا, يبدو أنك لا تستخدم شفافة التنشيط الذي هو سمة من سمات أحدث نسخة الانتاج (7.4)?ربما إذا قمت بتحديد النسخة التي تستخدمها قد يكون هناك غيرها من القضايا التي هي الآن تحل في أحدث إصدار ؟

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