2011-08-26 3 views
0

Pour la première fois, je veux voir une autre base de données que SQL Server pour mon développement. MongoDB est une bonne alternative pour mon projet.De SQL Server à MONGODB: problème de conception

Ce qui est difficile à comprendre, c'est «la conception» de MONGODB pour moi.

utilisateur (tableau)

Id 
Name 
Address 

Amis (tableau)

IdUser 
IdFriends 

Avec cette table SQL, je veux permettre à un utilisateur de est devenu un ami d'un autre utilisateur comme Facebook.

Quel est le meilleur design pour MongoDB?

Répondre

3

Tenir compte des amis à l'intérieur de nidification Ids User document:

{ 
    _id: 7, 
    name: "Johnny", 
    address: "Acme St.", 
    friends: [8, 9, 15] 
} 

D'une part, vous n'avez pas besoin rejoint chercher des amis (au moins) ids, parce que tout est imbriqué dans un seul document et le schéma ressemble plus agréable. D'autre part - pour aller chercher les amis réels, vous avez un problème N + 1. Cependant, la récupération par id est plutôt bon marché, pensez également à la mise en cache.

+0

Ok, supposons que j'ai 1000 ou 10.000 amis? – Dada

+0

La limite de taille de document MongoDB est de 16 Mo ([SERVER-431] (https://jira.mongodb.org/browse/SERVER-431)), il existe également des opérations pour travailler avec des tableaux imbriqués sans extraire le tableau entier lui-même. –