2010-02-25 7 views
3

En termes d'utilisation de la base de données, la dernière décennie a été l'âge de l'ORM avec des centaines de concurrents pour persister nos graphiques d'objets en RMDBS plaine à l'ancienne. Nous semblons maintenant assister à l'avènement de l'âge des bases de données documentaires. Thesedatabases sont hautement optimisés pour les documents sans schéma, mais sont également très attrayants pour leur capacité à évoluer et interroger un cluster en parallèle.Les bases de données orientées document sont-elles plus appropriées que les bases relationnelles pour les objets persistants?

Les bases de données orientées document possèdent également quelques avantages par rapport aux SGBDR pour les modèles de données persistants dans les conceptions orientées objet. Comme les tables sont sans schéma, vous pouvez stocker des objets appartenant à différentes classes dans une hiérarchie d'héritage côte à côte. En outre, à mesure que le modèle de domaine change, tant que le code peut gérer le retour d'objets à partir d'une ancienne version des classes de domaine, il est possible d'éviter la migration de la base de données entière à chaque modification. D'autre part, les avantages des performances des bases de données orientées documents semblent principalement se produire lors du stockage de 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 trouver, comme le blog, le gain en lecture semblerait être compensé par la peine d'avoir à écrire l'ensemble du blog "document" chaque fois qu'un nouveau commentaire est ajoutée. Il me semble que les bases de données documentaires peuvent apporter des avantages significatifs aux systèmes orientés objet si l'on prend un soin extrême à organiser les objets dans des graphes profonds optimisés pour la façon dont les données seront lues et écrites, mais cela signifie savoir les cas d'utilisation à l'avant. Dans le monde réel, nous ne savons souvent pas jusqu'à ce que nous ayons une implémentation en direct, nous pouvons profiler.

Est-ce que le cas des bases de données relationnelles et documentaires est celui 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 significatives sur une base de données orientée document.

Répondre

5

Eh bien, cela dépend de la structure de vos données et des schémas d'accès aux données.

Les bases de données de documents stockent et récupèrent des documents et l'unité stockée atomique de base est un document. Comme vous l'avez dit, vous devez penser à vos modèles d'accès aux données/cas d'utilisation pour créer un modèle de document intelligent. Lorsque votre modèle de domaine peut être divisé et partitionné à travers certains documents, une base de données de documents fonctionne comme un charme. Par exemple pour un logiciel de blog, un CMS ou un logiciel wiki, un document-db fonctionne extrêmement bien. Tant que vous pouvez trouver un bon moyen de compresser vos données dans un document, vous n'avez aucun problème. Mais n'essayez pas to fit a relational-model into a document-database. Dès que vos modèles d'accès aux données utilisent beaucoup de «navigation» sur les relations, les graphes ou les bases de données d'objets sont un choix plus naturel.

Une autre chose concerne les compromis de lecture/écriture-performance. Par exemple un blog-logiciel. Dans un modèle de données SGBDR transitoire, les données sont normalisées. Cela signifie que la lecture des données est coûteuse, car lire des tables différentes, calculer les relations avec les jointures etc pour lire un article de blog. En échange, changer une étiquette est peu coûteux. Par contre, dans une base de documents, la lecture d'un article de blog est bon marché, car il suffit de charger le post-document. Cependant, la mise à jour est probablement plus coûteuse, car vous devez stocker l'ensemble du document. Ou pire, passer par beaucoup de documents pour changer quelque chose (renommer un scénario-tag). Dans la plupart des systèmes, la lecture est beaucoup plus importante que l'écriture. Il est donc logique d'utiliser les magasins de données renormalisés.

Je pense que sur les grandes bases de données, la conception sans schéma peut avoir ses avantages. Dans RDBMS, vous devez mettre à niveau votre schéma, ce qui est un processus vraiment pénible. Surtout pour convertir les données existantes dans le nouveau schéma.Dans une base de données sans schéma, votre application doit gérer cela, ce qui donne plus de flexibilité. Par exemple, vous pouvez mettre à niveau le schéma à la volée, lorsqu'un ancien document est accessible. De cette façon, vous pouvez garder votre base de données géante en marche, tandis que l'application gère les anciennes versions à la volée.

+1

merci pour cela. Je suis à un discours MongoDB et le conférencier n'était pas très éclairant sur le sujet de la comparaison entre relationnel et documentaire. Cette réponse, avec l'exemple de mise à jour des balises en particulier, a été très utile. – Domenic

Questions connexes