memcachedb مقابل mongodb مقابل couchdb من حيث حل التخزين المؤقت القائم على الملف؟

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

سؤال

نحتاج إلى حل للتخزين المؤقت الذي يقوم بشكل أساسي بتخزين بيانات (ملفات نصية) في أي مكان من 3 أيام إلى أسبوع بناءً على تفضيلات المستخدم والمعايير. في هذه الحالة ، لا منطق بالنسبة لنا للتخزين المؤقت للذاكرة. تمت الإشارة إلى Memcachedb ومع ذلك فكرت أيضًا في بعض حلول SQL.

يستخدم تطبيقنا الحالي RDMS (MySQL) وأعتقد أنه من المنطقي استخدام memcachedb ولكن NOSQL يناشد لأنه شيء أكثر في الأفق. ومع ذلك ، لم نقم بنشر تطبيق مستوى الإنتاج بموجب NOSQL ولا يستقر الأشياء التجريبية بشكل جيد مع الإدارة/المستثمرين. أي كيف ما هي أفكارك وكيف يمكنك معالجتها؟

شكرا

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

المحلول

CouchDB و MongoDB كلاهما قواعد بيانات رائعة ، لكنهما خيارات فظيعة لطبقة ذاكرة التخزين المؤقت أعلى RDBMs الموجودة لديك. إلى جانب حقيقة أنها لا تزال غير ناضجة إلى حد ما ، فإنها لا تتناسب مع الغرض على الإطلاق. أيضًا ، من الأفضل أن تكون أفضل حالًا بدون طبقة ذاكرة التخزين المؤقت أكثر من استخدام CouchDB أو MongoDB-فهي كلاهما أبطأ لقراءة/كتابة بسيطة من MySQL. نعم ، قواعد بيانات NOSQL "رائعة" ، لكن هذا لا يعني أنه يجب عليك استخدامها لشيء لم يكن من المفترض القيام به.

كنت أذهب مع memcached ، لأن الأمر يتعلق بأسرع وأخف شيء ستجده ، وهو معروف ومدعوم جيدًا.

نصائح أخرى

إذا كنت قلقًا بشأن النداء إلى الإدارة والمستثمرين ، والنظام الحالي (ذكرت MySQL) ، فلماذا تتغير؟ أنت تنتقل من مشروع مستقر إلى حد ما إلى المشاريع التي لا تزال موجودة في الإصدار التجريبي ، وما هي القيمة التي تضيفها إذا كان النظام الحالي يعمل بالفعل؟

كما ذكر أعلاه ، تحتوي جميع موارد CouchDB على etags.

ما لم يذكر أنه يمكنك وضعه أي محلول التخزين المؤقت HTTP أمام CouchDB وجعله يقوم بالتخزين المؤقت القائم على ETAG. بهذه الطريقة يمكنك استخدام الورنيش ، nginx ، كل ما تريد.

سألقي نظرة على كاساندرا ( http://cassandra.apache.org/ ). لقد جربت Memcachedb و Couchdb ، وجدت بطريقة ما كاساندرا أكثر جاذبية (Dunno حول PHP منذ أن أعمل مع Coldfusion). هنا السؤال ذي الصلة وحدة كاساندرا PHP

يقوم CouchDB بالفعل ببعض التخزين المؤقت: عندما تحصل على مستند ، يرسل الخادم أيضًا رأس HTTP ETAG (هو نفسه مراجعة المستند في CouchDB).

في المرة التالية التي يسأل فيها المتصفح عن نفس المستند الذي يرسله ETAG المستلمة. إذا لم يتم تعديل المستند ، يستجيب الخادم برمز HTTP 304 لم يتم تعديلها ويسترجع متصفحك المستند من ذاكرة التخزين المؤقت المحلية.

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

لاكتمال خيار جيد آخر هو ريديس. يمكنك الحصول على أداء مماثل لـ Memcache ولكن Redis يدعم أيضًا العديد من هياكل البيانات (التجزئة والقوائم والمجموعة والمجموعات المصنفة) والعمليات الذرية.

إذا كنت قد تم استمرارها ، فيجب عليك التحقق من Redis. لديها كل وظائف memecached (وأكثر) جنبا إلى جنب مع الثبات.

لم أجربها بنفسي ، لكنني أتذكر أنني قرأت أن Redis دعم أيضًا واجهة برمجة تطبيقات Memcached أيضًا.

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