2017-10-07 11 views
2

Je suis nouveau à la base de données graphique et je regarde un POC dans ArangoDb. Quelle est la meilleure pratique lors de la conception d'une base de données? Plus précisément, est-ce que des types de nœuds différents mais apparentés devraient être dans des collections séparées ou dans la même collection? (Pensez à un scénario classique «étudiant/classe/emplacement/tuteur».)Les différents nœuds doivent-ils appartenir à différentes collections Arango?

Si le consensus général est de placer tout dans une collection alors quand aurais-je besoin de considérer plusieurs collections? Existe-t-il des considérations pour gérer un débit de transaction élevé, par exemple en enregistrant les relevés de température d'un grand nombre de dispositifs? Serait-ce un cas pour l'enregistrement d'informations sur un appareil dans une collection et des lectures dans une autre collection?

Répondre

2

Oui, je suggère de mettre différents types de nœuds/vertex dans des collections séparées. Donc, dans votre exemple, vous aurez 4 collections de vertex: "étudiants", "classes", "emplacements" et "tuteurs". Ensuite, vous voudrez probablement créer des collections de bordure, par ex. "HasAttended", pour stocker les bords des "étudiants" aux classes. Lors de la conception de la base de données, il peut être utile d'écrire le modèle de données sur une feuille de papier (ou vous pouvez utiliser un outil pour le visualiser/l'éditer).

Je ne connais pas votre cas d'utilisation exact, mais il me semble logique d'avoir une collection "devices" et une autre collection "temperatures". Ensuite, vous pouvez avoir une collection de bord qui stocke les bords entre "périphériques" et "températures"

+0

Venant d'un SGBDR traditionnel, c'est ainsi que je l'aurais abordé. Cependant, pour utiliser la fonction graphique d'Arango, tous les bords doivent être dans la même collection. Si c'est le cas, y a-t-il une raison pour que les nœuds ne soient pas dans la même collection? – SteveC

+0

Lorsque vous créez un graphique à partir de l'interface utilisateur, vous pouvez ajouter plus de collections de périphérie (cliquez sur ce "+"). Ainsi, par exemple, vous pouvez visualiser un graphique comme celui-ci: Person-IsFrom-> City-IsInCountry-> Country. Peu importe, oui: il peut y avoir des raisons importantes d'avoir des collections de bord séparées et des collections de vertex séparées. Veuillez optimiser votre modèle de données et le concevoir de manière efficace: cela aura des effets directs sur la façon dont vous allez écrire vos requêtes, et comment ces requêtes vont s'exécuter. Le modèle de données est toujours la première étape: si le modèle n'est pas optimisé, vous pouvez avoir des problèmes à un certain moment. – Santo