MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mieszanie PostgreSQL i MongoDB (jako backendy Django)

Od Django 1.2 możesz zdefiniować wiele połączeń z bazą danych w swoim settings.py . Następnie możesz użyć routerów bazodanowych aby poinformować Django, do której bazy danych ma się udać, w sposób przejrzysty dla Twojej aplikacji.

Zastrzeżenie: tak właśnie myślę powinno działać, nigdy nie używałem MongoDB w Django, ani nie testowałem, czy mój kod faktycznie działa. :)

settings.py

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

DATABASE_ROUTERS = ['path.to.ModelMetaRouter']

Modele

Następnie dodaj niestandardowe zmienne Meta do tabel geograficznych, aby zastąpić ich bazę danych. Nie dodawaj tego atrybutu do modeli, które mają trafić do domyślnej bazy danych.

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

Router bazy danych

I napisz router bazy danych, który będzie kierował wszystkimi modelami, które mają using zestaw atrybutów meta, do odpowiedniego połączenia:

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. Jak usunąć element z podwójnie zagnieżdżonej tablicy w dokumencie MongoDB.

  2. Obetnij kolekcję

  3. Dane wiosenne MongoDb:MappingMongoConverter usuń _class

  4. Mongoose Query do filtrowania tablicy i wypełniania powiązanej treści

  5. Usuń obiekt z zagnieżdżonej tablicy według wielu kryteriów