2013-08-22 10 views
1

J'ai des difficultés à trouver un modèle mongodb performant. J'ai 2 millions d'employés. J'ai besoin de stocker un tableau d'identifiants de superviseur, qui peut accéder à un employé. Les données d'image comme ceci ..performances mongodb avec grand tableau dans un document

{ 
'fullName':'Jonathan Smith', 
'employeeId':'8675309', 
'supervisors':[1234,7654,45676,34543,56545] 
} 

Chaque tableau pourrait avoir des centaines d'éléments. Les éléments peuvent également fluctuer. Donc, je devrai effectuer rapidement $ puts et $ pulls pour ajouter et soustraire des éléments du tableau. Un bon exemple de fonctionnement serait .. nous avons un superviseur 5555 qui a maintenant accès à 510 000 employés. Je dois donc mettre à jour ces 510 000 employés, en ajoutant 5555 à ces tableaux d'employés.

Une requête serait alors, donnez-moi tous les employés auxquels le superviseur 5555 a accès.

est-il une meilleure façon de le faire? Y a-t-il des choses que je peux faire pour assurer la performance?

Répondre

1

Il semble que ces 510 000 employés pourraient appartenir à une classe ou à une entité différente de la simple «employés gérés par le superviseur 5555». Appelez cette classe "A". Les employés seraient marqués comme appartenant à la classe "A" (et peut-être d'autres classes), et 5555 serait marqué comme le gestionnaire de "A", mais pas des employés individuels. Cela sous-entend qu'il est plus probable que le gestionnaire de la classe «A» change, que tous les 510 000 employés tombent dans la catégorie «A».

+0

Ok, je vois ce que vous dites. Cela garderait la liste des éléments du tableau pf plus petit, en raison de la face que les superviseurs pourraient éventuellement avoir le même groupe A. Disons que j'ai pris cette approche. Qu'en est-il du fait que j'ai encore 2 millions d'employés et que j'ai besoin d'effectuer des opérations push et pull à travers ces employés en ajoutant des identifiants de groupe. Un problème avec la performance? – FarscapePROJ

+0

2 millions de documents ne sont pas beaucoup. À moins que vous ayez fréquemment besoin de mettre à jour tous ces documents en temps réel, avec une réponse interactive, ce n'est pas grave. Vous devriez pouvoir mettre à jour quelques milliers de documents par seconde. – drmirror

+1

J'ai récemment écrit un billet de blog sur la croissance de tableaux dans MongoDB: http://goo.gl/eDcV5z Vous pouvez y voir une référence pour ce comportement. –

Questions connexes