J'ai une question que j'ai essayé de répondre pendant un certain temps maintenant, mais ne peuvent pas comprendre:
Comment pensez-vous de la conception, ou de répartir les, Documents des documents?
Prendre un billet de Blog par exemple.
Le semi "relationnel" façon de le faire serait de créer quelques objets:
- Post
- L'utilisateur
- Commentaire
- Tag
- Extrait de
Cela fait beaucoup de sens. Mais je suis en train d'utiliser couchdb (pour toutes les raisons que c'est génial) pour modéliser la même chose et ça a été extrêmement difficile.
La plupart des messages de blog là vous donner un exemple simple de comment faire cela. Ils se sont contentés de le diviser de la même façon, mais dire que vous pouvez ajouter "arbitraire" des propriétés de chaque document, ce qui est certainement agréable. Donc, si vous voulez avoir quelque chose comme ceci dans CouchDB:
- La poste (avec des balises et des extraits de "pseudo" modèles dans la doc)
- Commentaire
- L'utilisateur
Certaines personnes disent même que vous pourrait jeter le Commentaire et l'Utilisateur, de sorte que vous auriez à ceci:
C'est très joli et facile à comprendre. Je comprends aussi la façon dont vous pouvez écrire des vues extraites juste les Commentaires de tous vos Post les documents, les mettre en Commentaire les modèles, même avec les Utilisateurs et les Tags.
Mais je pense, "pourquoi ne pas simplement mettre mon site entier en un seul document?":
Vous pouvez facilement faire des vues de trouver ce que tu voulais.
Alors la question que je me pose est, comment voulez-vous déterminer le moment de diviser le document en petits documents, ou le moment de faire les "RELATIONS" entre les documents?
Je pense qu'il serait beaucoup plus "Orienté Objet", et plus facile à la carte pour des Objets de Valeur, si elle était divisée comme suit:
... mais ensuite, il se lance à la recherche de plus comme une Base de données Relationnelle. Et bien souvent, je hériter de quelque chose qui ressemble à la "toute-site-dans-un-document", il est donc plus difficile à modéliser avec les relations.
J'ai lu beaucoup de choses sur comment et quand utiliser les Bases de données Relationnelles vs Document de Bases de données, ce qui n'est pas le problème ici. Je suis plus juste de se demander, ce qui est une bonne règle/principe à appliquer lors de la modélisation de données CouchDB.
Un autre exemple est avec des fichiers XML/données. Certaines données XML a imbrication de+ de 10 niveaux de profondeur, et je voudrais visualiser qu'en utilisant le même client (Ajax sur des Rails par exemple, ou Flex) que je voudrais rendre JSON de ActiveRecord, CouchRest, ou tout autre Objet Relational Mapper. Parfois, je reçois des fichiers XML énormes qui sont toute la structure du site, comme celle ci-dessous, et j'aurais besoin de la carte pour des Objets de Valeur à utiliser dans mon application Rails, donc je n'ai pas à écrire une autre façon de sérialisation/désérialisation des données:
Ainsi, le général CouchDB questions sont les suivantes:
- Quelles sont les règles/principes utilisez-vous pour diviser vos documents (rapports, etc)?
- Est-il correct de mettre le site en entier en un seul document?
- Si oui, comment avez-vous gérer la sérialisation/désérialisation des documents arbitraire de niveaux de profondeurs (comme le grand json exemple ci-dessus, ou l'exemple de xml)?
- Ou ne vous mettez pas dans VOs, avez-vous venez de décider "ceux-ci sont trop imbriqués pour Objet-Relationnel Carte, donc je vais juste y accéder à l'aide de matières XML/JSON méthodes"?
Merci beaucoup pour votre aide, le problème de la manière de partager vos données avec CouchDB a été difficile pour moi de dire "c'est comment je dois faire à partir de maintenant". J'espère y arriver bientôt.
J'ai étudié les sites suivants/projets.
- Des Données hiérarchiques dans CouchDB
- CouchDB Wiki
- Canapé - CouchDB App
- CouchDB Le Guide Définitif
- PeepCode CouchDB Screencast
- CouchRest
- CouchDB README
...mais ils n'ont toujours pas répondu à cette question.