سؤال

أنا حاليا أحاول اختيار قاعدة بيانات البائع.

أنا فقط أبحث عن بعض الآراء الشخصية من زملائه في قاعدة بيانات المطورين هناك.

سؤالي هو خاصة تستهدف الأشخاص الذين:

1) استخدمت الذاكرة الرئيسية DB (MMDB) يدعم النسخ المتماثل إلى القرص (الهجين) من قبل (أي ExtremeDB)

أو

2) استخدمت Versant كائن قاعدة البيانات و/أو والموضوعية قاعدة البيانات و/أو التقدم ObjectStore

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

طلبي هو التجارية في الوقت الحقيقي (قراءة:عالية الأداء) وجوه المنحى C++ نظم المعلومات الجغرافية نوع من التطبيق ، حيث أننا بحاجة إلى القيام بالكثير من lat/lon البحث (أيوبالنظر إلى منطقة العثور على كافة مطابقة الأهداف ضمن منطقة...R-شجرة مؤشر).

أنواع البيانات التي ترغب في مخزن في قاعدة البيانات كلها غرار ككائنات و أنها تجعل استخدام std::قائمة الأمراض المنقولة جنسيا::ناقلات ، لذا من الطبيعي كائن قاعدة البيانات يبدو منطقيا.لقد قرأت من خلال ما يكفي من المواد لإقناع نفسي أن RDBMS التقليدي ربما ليس ما أنا حقا تبحث عن من حيث

  1. الأداء (ينضم أو متعددة الجداول الديناميكية طول البيانات مثل قائمة/ناقلات)
  2. سهولة البرمجة (مقاومة عدم التوافق)

ومع ذلك ، من حيث الأداء ،

  1. إدخال البيانات يتم إدخالها إلى النظام في حوالي 40 MB/s.

  2. ومن ثم فإن النظام سوف تفعل أيضا إدراج في قاعدة البيانات بمعدل ما يقرب من 350 تدرج في الثانية (حيث كل كائن يختلف من 64KB إلى 128 كيلوبايت),

  3. قاعدة البيانات باستمرار أن البحث يتم من خلال مواضيع متعددة.

أنا أفهم أن كل كائن DBs ذكرتها هنا استخدام ذاكرة التخزين المؤقت لتخزين كائنات قاعدة البيانات.ExtremeDB يدعي أنه منذ انها مصممة خصيصا الذاكرة ، فإنه يمكن تجنب النفقات العامة من التخزين المؤقت المنطق ، وما إلى ذلك.رؤية المزيد من خلال البحث في قوقل:الذاكرة الرئيسية مقابلذاكرة الوصول العشوائي القرص قواعد البيانات:لينكس على أساس المعيار

لذا..أنا مشوشة قليلا.يمكن أن الكائن DBs أن تستخدم في الوقت الحقيقي النظام ؟ هو "سريع" كما MMDB?

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

المحلول

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

على MMDB يمكن الاستفادة من هذا عن طريق التخلي عن مفهوم أن استمرت البيانات لا يجب بالضرورة أن "مباراة" في رام البيانات.

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

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

مرة واحدة السجلات بشكل صحيح الموحدة في المخزن الرئيسي ، سجلات يتم تجاهل (أو إعادة استخدام).

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

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

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

حتى في هذه الطريقة ، MMDB يمكن أن يكون أسرع من OODB الذي لديه عقد مع القرص ، والحفاظ على سجلات القرص صفحات.في هذه الطريقة ، OODB يمكن أن يكون أبطأ حتى لو كان كامل DB تناسبها في ذاكرة الوصول العشوائي و هو صحيح مؤقتا, ببساطة لأنك تتحمل عمليات القرص الخارجي من سجل العمليات أثناء العمليات العادية, مباراة MMDB حيث أن هذه العمليات تحدث بأنها "الصيانة" المهمة التي يمكن من المقرر خلال الوقت و/أو وقت هادئ.

ما إذا كان أي من هذه النظم يمكن أن تلبي لك الأداء الفعلي يحتاج, لا أستطيع أن أقول.

نصائح أخرى

الظهر ينتهي من قواعد البيانات (القارئ والكاتب عمليات التخزين المؤقت, قفل إدارة txn ملفات السجل ، حمض دلالات) ، RDBs و OODB هي في الواقع مشابهة جدا هنا.الفرق هو واجهة مبرمج التطبيقات.البيانات الخاصة بك نموذج معقد يتكون من الكثير من الطبقات مع ريال الميراث العلاقات ؟ ثم OO جيدة.هو مسطحة نسبيا و بسيطة ؟ ثم انتقل RDB.ما هي طبيعة العلاقات ؟ هو مؤشر مثل وتعيين ؟ ثم انتقل RDB.هو أكثر تعقيدا ، مثل (أمر) قائمة, مجموعة, الخريطة ؟ ثم عليك أن تذهب OO.أيضا هل لديك تطبيق مستقل دون الحاجة إلى الاندماج مع تطبيقات أخرى ؟ ثم OO هو موافق.هل لديك لتبادل البيانات مع تطبيقات أخرى (أيعدة تطبيقات الوصول إلى نفس قاعدة البيانات)?ثم إنها صفقة خاسرة OO, و يجب أن العصا مع RDB.هو مخطط قاعدة البيانات الخاصة بك مستقرة أو هل تتوقع أن تتطور في كثير من الأحيان ؟ OODBs سيئة الإعلان مخطط التطور, لذلك إذا كنت تتوقع تغييرات متكررة, العصا مع RDBs.

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