web-dev-qa-db-fra.com

Équivalent d'ERD pour MongoDB?

Quel serait l'équivalent d'ERD pour une base de données NoSQL telle que MongoDB?

41
Catalin Braescu

Il semble que vous ayez posé une question similaire sur Quora .

Comme mentionné ici, l'ERD est simplement une cartographie des données que vous avez l'intention de stocker et des relations entre ces données.

Vous pouvez toujours créer une ERD avec MongoDB car vous souhaitez toujours suivre les données et les relations. La grande différence est que MongoDB n'a pas de jointures, donc lorsque vous traduisez l'ERD en un schéma réel, vous devrez prendre des décisions spécifiques concernant la mise en œuvre des relations.

En particulier, vous devrez prendre la décision "embed vs. reference" pour décider comment ces données seront réellement stockées. Les relations sont toujours autorisées, mais pas appliquées. De nombreux wrappers pour MongoDB fournissent en fait des recherches dans les collections pour résumer une partie de cette complexité.

Même si MongoDB n'applique pas de schéma, il n'est pas recommandé de procéder complètement au hasard. La modélisation des données que vous prévoyez d'avoir dans le système est toujours une très bonne idée et c'est ce que l'ERD vous fournit.

Donc je suppose que l'équivalent de l'ERD est l'ERD ?

31
Gates VP

Je pense à la même question depuis un certain temps. Et je suis arrivé à la conclusion suivante: si les bases de données NoSQL sont généralement sans schéma, vous n'avez pas réellement de "schéma" à illustrer dans un diagramme.

Ainsi, je pense que vous devriez adopter une approche "par l'exemple". Vous pouvez dessiner quelques mindmaps illustrant à quoi ressembleraient vos données lorsqu'elles sont stockées dans une base de données NoSQL telle que MongoDB.

Et comme ces bases de données sont très dynamiques, vous pouvez également créer des mindmaps dérivées pour montrer comment les données d'aujourd'hui pourraient évoluer dans le temps.

Jetez également un œil à ce sujet.

Confusion à propos de la conception NoSQL

2
Gabriel C

Je ne connais aucun moyen standard de schématiser un "schéma" orienté document.

Je suis sûr que vous pourriez utiliser un ERD pour cartographier vos schémas, mais comme les bases de données de documents ne prennent pas vraiment en charge - ou plus important encore - les relations entre les données, cela ne serait aussi utile que votre code a été discipliné pour appliquer en interne de telles relations .

2
Rob Raisch

Vous pouvez également utiliser un diagramme de classes UML à la place.

2
sinha

Moon Modeler prend en charge la conception de schéma pour MongoDB. Il permet aux utilisateurs de définir des diagrammes avec des structures imbriquées.

1
Vaclav

MongoDB prend en charge les "jointures", mais pas dans le sens SQL de INNER JOIN (la jointure SQL par défaut). Alors que le concept de "jointure" est généralement associé à SQL, MongoDB possède le cadre d'agrégation avec ses étapes de pipeline de traitement des données. L'étape du pipeline $ lookup est utilisée pour créer l'équivalent d'un LEFT JOIN en SQL. C'est-à-dire que tous les documents à gauche d'une relation passeront par le pipeline, ainsi que tous les documents liés à droite de la relation. Les documents sont modifiés pour inclure la relation dans les nouveaux documents.

Par conséquent, je postule que les diagrammes de relation d'entité ont un rôle dans MongoDB. Les documents sont certainement liés les uns aux autres dans la base de données, et nous devrions avoir une visualisation de ces relations, y compris la relation de cardinalité, par ex. pleine participation, participation partielle, entités faibles/fortes, etc.

Bien sûr, MongoDB introduit également le concept de documents intégrés et de documents référencés, et je soutiens donc qu'il ajoute une saveur supplémentaire au modèle de l'ERD. Et je voudrais certainement voir les relations intégrées et référencées cartographiées dans un diagramme visuel.

La question restante est donc ce qui est là-bas? Quels sont les avantages de Mongoose pour NodeJS? Mongoid pour Ruby? etc. Si vous vérifiez les référentiels respectifs pour leurs ORM (Object Relational Mappers) correspondants, alors vous verrez qu'il y a des ERD pour eux. Mais en termes d'exhaustivité, il y a peut-être beaucoup à désirer et la communauté open source est la bienvenue pour apporter des contributions.

https://www.npmjs.com/package/mongoose-erd

https://rubygems.org/gems/railroady

0
Donato