سؤال

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

يعتمد الجهاز المضمن حول معالج الذراع 9 يعمل في 220 ميجا هرتز.

يجب أن يكون هناك قاعدة بيانات من الإدخالات 50 ألف (قد تزيد إلى 250k) لكل منها 1K من البيانات (بحد أقصى 8 قدم). هذا تقريبي - يمكنني محاولة الحصول على أرقام أكثر دقة إذا لزم الأمر.

يقومون حاليا باستخدام SQLLITE 2 والتخطيط للانتقال إلى SQLLITE 3.

دون بدء حرب الشعلة - أنا مكشوف D / B NewBie فقط ابحث عن المشورة - هل هذا قرار "الأفضل"؟ أدرك أن هذا قد يكون "متى هي قطعة من السلسلة؟" السؤال، ولكن يتم الترحيب بأي مؤشرات Woudl بشكل كبير. لا أمانع في القيام بالكثير من القراءة والبحث، ولكن فقط تأمل في أن أخرجني إلى بداية الطيران. شكرا.

ملاحظة: مرة أخرى، قد لا يلتصق بإعادة كتابة إجمالي، حتى من Linux مضمن، ولكن التبديل إلى البيئة الاقتصادية الكيميائية، لا تقلق كثيرا حول تحويل وقت واحد بين تنسيقات D / B. أوه، والوصول إلى أن تكون نادرة، على الأكثر كل بضع ثوان.


تحرير: حسنا، يبدو أن لديهم إدخالات 30 ألفا (قد تصل إلى 100 ألف أو أكثر) من 5 أو 6 حقول فقط، ولكن 3 منهم على الأقل يمكن أن يكون مفتاح بحث للسجل. إنهم يلعبون مع "عدم وجود D / B على الإطلاق، لأن البيانات بسيطة للغاية"، لكن يبدو لي أنه مع مفاتيح متعددة، لم نتمكن من استخدام الأشياء الفاخرة مثل QuickSort () اكتب البحث (Recursive، Binary Search ). أي أفكار حول "لا D / B"، فقط هياكل البيانات؟

راجع للشغل، مفتاح واحد هو 800K - لست متأكدا من مدى مقبض SQLLite أن (ربما مع "لا D / B" لا بد لي من التجزئة أن 800K لشيء أصغر؟)

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

المحلول

أيضا SQLite هي قاعدة البيانات التي تم اختيارها بواسطة جميع أنظمة التشغيل المحمولة تقريبا. Android و iPhone OS و Symbian Ship With Sqlite مما يجعلني أعتقد أن القوى العاملة تم إنفاقها على تحسينه للمعالج في هذه الهواتف (دائما ما يقرب من الذراع).

نصائح أخرى

كنت ألتصق مع SQLite، وهي مدعومة على نطاق واسع وغني جدا في الميزات.

  • يدعي Firebird (Interbase سابقا) أن تعمل بشكل جيد.

  • HypersonicQL (HQL) صغير وسريع يدعي أيضا أنه مناسب للاستخدام المدمج.

للأسف، ليس لدي تجربة شخصية لإجراء نسخ احتياطي إما المطالبة.

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

إذا كنت تريد بديل، ثم berkeleydb. يستحق النظر في. اعتادت أن تكون مملوكة من قبل برامج Sleepycat، ولكن متوفر الآن من أوراكل. إنه محرك قاعدة بيانات Barebones؛ هو برمجة مباشرة (بدلا من SQL) الأمامية. يتم استخدامه كجزء من المحرك الأساسي في العديد من قواعد البيانات الرئيسية، وكما قاعدة البيانات في العديد من الأجهزة المضمنة - اعتاد أن يكون شائعا بشكل خاص لإدارة جداول التوجيه في أجهزة التوجيه. يميل إلى التغاضي عنه في هذه الأيام للحصول على المزيد من الإعدادات المألوفة، لكنني عثرت عليه أن تكون لائقة صلبة، صلبة وللأرقام التي تتحدث عنها، يمكن أن تكون صاعقة سريعة.

سأقترح sqlite3 أيضا. يتم استخدامه من قبل العديد من التطبيقات الشهيرة.

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

في وقت متأخر من 8 سنوات، ولكن كحدث: لقد كان لدي خبرة جيدة باستخدام مدير قاعدة بيانات Raima.. وبعد إذا كنت تبحث عن بصمة صغيرة DB، فيمكنها الاستمرار إلى 40K. أحد الأسباب التي أحبها RDM هي استقلال المنصة، وهي محمولة عبر آلات 32 بت و 64 بت وفيما بين الهندسة الهندية الكبيرة والقليل وكذلك الدعم لمعظم أنظمة التشغيل، مما يعني أنه يمكنك استخدامه على مضمونة لينكس والبيئة البيئية كما هو مذكور في أول وظيفة. ويكون الأداء يتحسن كما تضيف أجهزة ومستخدمين أفضل بدلا sqlite.

أنا لست على دراية النظام بتضمينه، لكن iPhone استخدم ARM9 و sqlite. كما DB.

النشرة الإخبارية 01-11-11-10 Embedded.com هل وظيفة لطيفة تغطي هذا الموضوع. يمكن العثور على النشرة الإخبارية في embedded.com: Embedded.com النشرة الإخبارية (1-11-10): تضمين قواعد البيانات.

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