MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

एक पायथन एप्लिकेशन कैसे लिखें जो एकाधिक डेटाबेस का समर्थन करता है

Django एकाधिक डेटाबेस का समर्थन करता है इसलिए उनके बीच स्विच करने के लिए आपको बस कुछ कोड चाहिए।

यदि आपने दस्तावेज़ पढ़ लिए हैं तो आप देखेंगे कि Django आपको अपने स्वयं के कस्टम 'राउटर' वर्ग की आपूर्ति करने की अनुमति देता है जो यह तय करता है कि किसी भी क्वेरी के लिए किस डेटाबेस का उपयोग करना है:
https://docs.djangoproject.com/en/1.6/topics/db/multi-db/# राउटर का उपयोग करना

चूंकि आप कहते हैं कि आप "फ्रंट एंड पर" कौन सा डीबी चुनना चाहते हैं, तो संभवतः आपकी साइट का प्रत्येक उपयोगकर्ता एक अलग डेटाबेस बैकएंड चुन सकता है। यह एक समस्या प्रस्तुत करता है क्योंकि डीबी राउटर वर्तमान http अनुरोध और उपयोगकर्ता के बारे में कुछ नहीं जानता है।

मेरा सुझाव है कि आप वर्तमान अनुरोध वस्तु को संग्रहीत करने के लिए इस 'थ्रेडलोकल' मिडलवेयर का उपयोग करें ताकि आप इसे अपने कस्टम राउटर से एक्सेस कर सकें:
https://github.com/jedie/django-tools/blob/master/django_tools/middlewares/ThreadLocal.py

मान लें कि आप उपयोगकर्ता के चुने हुए बैकएंड को सत्र में सहेजते हैं request.session['db_name'] . के रूप में - आपका राउटर कुछ इस तरह दिखेगा:

from django_tools.middlewares import ThreadLocal

class RequestRouter(object):
    def db_for_read(self, model, **hints):
        request = ThreadLocal.get_current_request()
        return request.session.get('db_name', 'default')

    def db_for_write(self, model, **hints):
        request = ThreadLocal.get_current_request()
        return request.session.get('db_name', 'default')

    def allow_relation(self, obj1, obj2, **hints):
        return True

    def allow_syncdb(self, db, model):
        return True



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB में संग्रहीत प्रक्रिया

  2. ISODate के लिए --query के साथ mongoexport का उपयोग करें

  3. मॉड्यूल के बीच डीबी साझा करने के लिए वैश्विक चर का उपयोग करें

  4. नेवला उप-दस्तावेज़ बनाम नेस्टेड स्कीमा

  5. MongoDB एकत्रीकरण में सरणी तत्व का क्षेत्र जोड़ें