2011-05-02 8 views
4

Lorsque vous effectuez des applications multi-locataires à l'aide d'un RDMBS, j'utilise des colonnes tenantId dans chaque table pour indiquer à quel locataire appartient une ligne.Modèle multi-tentant et nosql?

Comment le ferais-je dans une DocumentDatabase? Prenons mongodb par exemple. Est-ce que DBRef est le chemin à parcourir? Ou suis-je coincé dans la pensée relationnelle? Ou utiliseriez-vous autre chose qu'un documentdb?

(je suis assez nouveau pour NoSQL)

Répondre

4

Si vous avez besoin de Multitenancy sous MongoDB, vous pouvez utiliser une collection différente pour chaque locataire. Si les données sont partagées entre tous les locataires, je place tenir une liste des locataires pour chaque entrée comme ceci:

doc: { 
    _id: doc1 
    ... // your objects here 
    tenants: [ tenant1, tenant2, tenant17 ] 
} 

Puis, quand je fais une recherche ou si vous voulez une vue de la base de données, vous devez interroger avec le locataire concerné:

db.mycoll.find({ someField : someValue, tenants : tenant2 });