البحث عن توصيات لخادم DB * في الذاكرة البسيطة (لا يلزم استمرار) [مغلق

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

سؤال

يجب أن تدعم اتصالات متعددة ، ويفضل عبر ODBC. سيتم تشغيل العملاء كعمليات منفصلة على نفس الجهاز. لا حاجة إلى الثبات ، لأن العملاء سوف يتعاملون مع الثبات في مكان آخر. يتم كتابة العملاء في C ++ إذا كان مهمًا.

البيانات بسيطة للغاية ، إنها مجموعة من الخرائط ثنائية الاتجاه غير ذات صلة. الوصول إما مباشرة من حيث القيمة أو عن طريق نطاق (between X and Y)، لا توجد تحديثات. لا نحتاج بالفعل إلى SQL هنا ، لذلك يمكن أيضًا النظر في حلول غير SQL.

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

تعديلات متعددة:

  1. النظام الأساسي هو Linux
  2. قرص ذاكرة الوصول العشوائي ليس خيارًا لأسباب أمنية - لا نريد أن يتمكن أي شخص لديه حق الوصول إلى الجهاز من عرض البيانات
  3. يجب أن تستمر البيانات فقط في النموذج المشفر ، لذلك يجب ألا يستمر الحل إما للبيانات على الإطلاق أو يسمح بتصفية/مكون إضافي محدد من قبل المستخدم للاستمرار.
هل كانت مفيدة؟

المحلول

لمجرد إلمامي به ، سأذهب مع MySQL. لاستخدامها كقاعدة بيانات في الذاكرة ، استخدم الذاكرة كنوع الجدول. Redis هي قاعدة بيانات NOSQL في الذاكرة والتي من المحتمل أن تكون مناسبة تمامًا لهذا (تعمل في الذاكرة ، مع كتابة القرص للثبات فقط والتي يمكن تعطيلها).

نصائح أخرى

أي سبب معين لعدم استخدام SQLite مع فتح RAM DB؟

قرص ذاكرة الوصول العشوائي ليس خيارًا لأسباب أمنية - لا نريد أن يتمكن أي شخص لديه حق الوصول إلى الجهاز من عرض البيانات

ليس لديك اي حظ. يمكن لأي شخص لديه إمكانية الوصول إلى الجهاز عرض البيانات من/proc/$ pid/mem على أي حال.

إذا كنت تتحدث عن الوصول غير الجذري من استخدام دليل/tmp/$/طريقة مع CHMOD 700.

فيما يلي خدعة يمكنك استخدامها تحت Linux ، وتسمى "Lazy Unmount".

  1. تركيب TMPFS في مكان ما
  2. بدء بعض العملية (ES) لاستخدامها ، والتي chdir () في هذا الدليل. يمكنك استخدام مثيل MySQL ؛ تقوم MySQL دائمًا بعمل chdir إلى دليل البيانات الخاص به.
  3. بعد أن بدأت العملية بنجاح ، Umount tmpfs مع خيار -L (كسول).

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

لاحظ أن هذا لا يوقف الجذر بأي حال من الأحوال من الحصول على البيانات في TMPFS ، فقط يجعل الأمر أكثر صعوبة.

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

محاولة Boost.Multiindex. ليس خيارًا واضحًا ولكنه يعتمد على مفاهيم DB العلائقية.

يتم استعارة مفهوم الفهرسة المتعددة على نفس المجموعة من العناصر من مصطلحات قاعدة البيانات العلائقية ويسمح بمواصفات هياكل البيانات المعقدة بروح الجداول العلائقية المفهرسة حيث لا تكفي مجموعات وخرائط بسيطة. يتم توفير مجموعة واسعة من المؤشرات ، على غرار حاويات STL مماثلة مثل STD :: SET ، STD :: LIST ومجموعات الهاوية.

استخدم mySQL مع datadir = tmpfs قمت بتركيبها لهذا الغرض. ستحتاج إلى طهي بعض البرنامج النصي بدء التشغيل الذي يقوم بتثبيت قاعدة البيانات (باستخدام MySQL_INSTALL_DB أو شيء من هذا القبيل) في وقت التمهيد ، بالطبع ، حيث ستفقد جميع البيانات.

memcached يمكن أن يكون حل قابلية للتطبيق. إنه متجر قيمة رئيسي يمكن تعيينه لعقد القيم لفترة معينة من الوقت ، وهو قابل للتطوير وبسيط الإعداد والبدء في استخدامه. كما يتم تشغيله في جميع أنواع البيئات. إليك موقع ويكي لمزيد من المعلومات, ، خاصة وأن الصفحة الرئيسية ليست مفيدة تقريبًا.

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