Des bases de données orientées document plus approprié que les objets relationnels pour persister?

StackOverflow https://stackoverflow.com/questions/2336182

Question

En termes d'utilisation de bases de données, la dernière décennie a été l'âge de l'ORM avec des centaines concurrents à persister nos graphes d'objets dans RMDBS ancienne plaine. Maintenant, nous semblons assister à la venue de l'âge des bases de données orientées document. Ces bases de données sont hautement optimisées pour les documents sans schéma, mais sont également très attractifs pour leur capacité à monter en charge et d'interroger un cluster en parallèle.

bases de données orientées document détiennent également quelques avantages par rapport aux années SGBDR pour la persistance des modèles de données dans la conception orientée objet. Comme les tables sont sans schéma, on peut stocker des objets appartenant à des classes différentes dans un côté par côté hiérarchie d'héritage. En outre, comme le modèle de domaine change, tant que le code peut faire face à se remettre des objets à partir d'une ancienne version des classes de domaine, on peut éviter d'avoir à migrer la base de données tout à chaque changement.

D'autre part, les avantages de performance des bases de données orientées document apparaissent principalement à venir quand le stockage des documents plus profonds. En termes orientés objet, les classes qui sont composées d'autres classes, par exemple, un billet de blog et ses commentaires. Dans la plupart des exemples de ce que je peux venir avec si, comme le blog un, le gain en matière d'accès de lecture semble être compensée par la peine d'avoir à écrire le « document » après tout blog chaque fois qu'un nouveau commentaire est ajouté.

Il semble à moi comme si les bases de données orientées document peuvent apporter des avantages importants pour les systèmes orientés objet si l'on prend soin d'organiser les objets graphiques profonds optimisés pour la façon dont les données seront lues et écrites, mais cela signifie connaître la cas d'utilisation à l'avant. Dans le monde réel, souvent nous ne savons pas jusqu'à ce que nous avons en fait une mise en œuvre en direct, nous pouvons le profil.

est le cas des bases de données orientées document consanguine contre l'un des balançoires et des ronds-points? Je suis intéressé par les opinions et les conseils des gens, en particulier si quelqu'un a construit des applications importantes sur une base de données orientée document.

Était-ce utile?

La solution

Eh bien cela dépend de vos données est structuré et sur les données d'accès-modèles.

bases de données de documents stocker et récupérer des documents et l'unité atomique stockée de base est un document. Comme vous l'avez dit, vous devez penser à vos habitudes d'accès aux données / cas d'utilisation pour créer un smart document modèle. Lorsque votre modèle de domaine peut être divisé et partagé entre certains documents, un document de base de données fonctionne comme un charme. Par exemple, pour un logiciel de blog, un CMS ou un wiki-logiciel un document-db fonctionne très bien. Tant que vous pouvez trouver un bon moyen de presser vos données dans un document que vous n'avez aucun problème. Mais ne pas essayer de pour adapter un modèle relationnel dans un document base de données.  Dès que les modèles que vous-accès aux données utilisent beaucoup de « navigation » sur les relations, bases de données objet graphique ou sont un choix plus naturel.

Une autre chose est à propos de lecture / écriture performance offs commerciales. Par exemple un logiciel de blog. Dans un SGBDR transitoire modèle de données les données sont normalisées. Cela signifie que la lecture des données est cher, parce que lire des tables différentes, calculer les relations avec les jointures etc lire un blog post. En échange, la modification d'un tag est bon marché. En revanche, dans un document de base de données à lire un blog post est pas cher, parce que vous chargez juste le post-document. Cependant la mise à jour est probablement plus cher, parce que vous devez stocker tout le document. Ou pire, passer par beaucoup de documents pour changer quelque chose (renommer une balise-scénario). Dans la plupart des systèmes, la lecture est beaucoup plus importante que l'écriture. Il est donc logique d'utiliser réellement les magasins de données renormalisée.

Je pense que sur grandes bases de données de la conception sans schéma peut avoir ses avantages. En SGBDR vous devez mettre à jour le schéma qui vous est un processus très douloureux. Surtout pour convertir les données existantes au nouveau schéma. Dans une base de données sans schéma, vous application doit faire face à cela, ce qui donne plus de flexibilité. Par exemple, vous pouvez mettre à jour le schéma à la volée, lorsqu'un ancien document est l'accès. De cette façon, vous pouvez garder votre base de données géante en marche, alors que l'application gère les anciennes versions à la volée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top