MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Смесване на PostgreSQL и MongoDB (като Django backends)

От Django 1.2 можете да дефинирате множество връзки към база данни във вашия settings.py . След това можете да използвате рутери за бази данни да кажете на Django коя база данни да отиде, прозрачно за вашето приложение.

Отказ от отговорност: така мисля би трябвало да работи, никога не съм използвал MongoDB в Django, нито съм тествал дали кодът ми действително работи. :)

settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django_mongodb_engine',
        'NAME': 'mydata',
        ...
    }
    'geodata' {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'geodata',
        ...
    }
}

DATABASE_ROUTERS = ['path.to.ModelMetaRouter']

Модели

След това добавете персонализирани мета променливи към вашите географски таблици, за да замените тяхната база данни. Не добавяйте този атрибут към модели, за които се предполага, че отиват в базата данни по подразбиране.

class SomeGeoModel(models.Model):
    ...
    class Meta:
        using = 'geodata'

Рутер за база данни

И напишете рутер за база данни, който да насочва всички модели, които имат using набор от мета атрибути към съответната връзка:

class ModelMetaRouter(object):
    def db_for_read(self, model, **hints):
        return getattr(model._meta, 'using', None)

    def db_for_write(self, model, **hints):
        return getattr(model._meta, 'using', None)

    def allow_relation(self, obj1, obj2, **hints):
        # only allow relations within a single database
        if getattr(obj1._meta, 'using', None) == getattr(obj2._meta, 'using', None):
            return True
        return None

    def allow_syncdb(self, db, model):
        if db == getattr(model._meta, 'using', 'default'):
            return True
        return None


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 2 начина за изтриване на база данни в MongoDB

  2. MongoDB $acos

  3. Грешка:getaddrinfo ENOTFOUND в nodejs за get call

  4. Как да инсталирате MongoDB на Windows система?

  5. Какъв е добър избор на база данни за малко .NET приложение?