Les bases de données orientées documents sont-elles destinées à remplacer les bases de données relationnelles?

Récemment, j'ai travaillé un peu avec MongoDB et je dois dire que je l'aime vraiment. Cependant, c'est un type de base de données complètement différent alors je suis utilisé. J'ai remarqué que c'est certainement mieux pour certains types de données, mais pour les bases de données fortement normalisées, ce n'est peut-être pas le meilleur choix.

Il me semble cependant qu'il peut complètement prendre la place de n'importe quelle base de données relationnelle que vous pourriez avoir et dans la plupart des cas mieux performer, ce qui est l'esprit ahurissant. Cela m'amène à poser quelques questions:

  1. les bases de données axées sur les documents sont-elles en cours de développement pour constituer la prochaine génération de bases de données et remplacer complètement les bases de données relationnelles?
  2. est-il possible que les projets utilisent à la fois une base de données orientée document et une base de données relationnelle côte à côte pour diverses données mieux adaptées à l'une ou l'autre?
  3. Si les bases de données orientées documents ne sont pas destinées à remplacer les bases de données relationnelles, alors quelqu'un aurait-il un exemple de structure de base de données qui serait absolument être mieux dans une base de données relationnelle (ou vice-versa)?
28
demandé sur Community 2010-05-19 17:52:07

7 réponses

Les bases de données orientées documents ont-elles été développées pour être la prochaine génération de bases de données et remplacer complètement les bases de données relationnelles?

Non. Les bases de données orientées documents (comme MongoDB) sont très bonnes pour le type de tâches que nous voyons généralement dans les sites Web modernes (recherche rapide d'éléments individuels ou de petits ensembles d'éléments).

Mais ils font de gros compromis avec les systèmes relationnels. Sans des choses comme la conformité à L'acide ils ne pourront pas pour remplacer certains SGBDR. Et si vous regardez des systèmes comme MongoDB, le manque de conformité acide est une grande raison pour laquelle il est si rapide.

Est-il possible que les projets utilisent à la fois une base de données orientée document et une base de données relationnelle côte à côte pour diverses données mieux adaptées à l'une ou l'autre?

Oui. En fait, je gère un très grand site Web de production qui utilise les deux. Le système a été démarré dans MySQL, mais nous en avons migré une partie vers MongoDB, b/C nous avons besoin d'un magasin clé-valeur et MySQL n'est tout simplement pas très bon pour trouver un élément dans un enregistrement de 150M.

Si les bases de données orientées documents ne sont pas destinées à remplacer les bases de données relationnelles, quelqu'un a-t-il un exemple de structure de base de données qui serait absolument préférable dans une base de données relationnelle (ou vice-versa)?

Les bases de données orientées Document {[20] } stockent des données facilement contenues dans "key-value" et simples, linéaires " parent-enfant" relation. Des exemples simples ici sont des choses comme les Blogs et les Wikis.

Cependant, les bases de données relationnelles ont toujours une longueur d'avance sur des choses comme les rapports, qui ont tendance à être "basés sur des ensembles".

Honnêtement, je peux voir un monde où la plupart des données sont "traitées" par une base de données orientée Document, mais où le reporting est fait dans une base de données relationnelle qui est mise à jour par Map-reduce jobs.

36
répondu Gates VP 2011-04-15 22:15:39

C'est vraiment une question d'aptitude à l'emploi.

Si vous voulez pouvoir joindre des tables ensemble et renvoyer un ensemble filtré de résultats, vous ne pouvez le faire qu'avec une base de données relationnelle. Si vous voulez des performances époustouflantes et des volumes de données incroyables, c'est à ce moment-là que les bases de données de la famille de colonnes ou orientées documents entrent en jeu.

C'est un compromis classique. Les bases de données relationnelles vous offrent toute une série de fonctionnalités, ce qui entraîne un coût de performance. Si vous ne pouvez pas joindre, indexer, analyser ou effectuer une toute autre liste de fonctionnalités, vous supprimez le besoin d'avoir une vue sur toutes les données, ce qui vous donne les performances et la distribution dont vous avez besoin pour croquer des données sérieuses.

Aussi, je vous recommande de suivre les blogs D'Ayende Rahien sur ce sujet.

Http://ayende.com/blog/

5
répondu user75525 2010-05-19 14:07:49

@Sohnee est sur place. Je pourrais ajouter que les bases de données relationnelles

  • sont excellents pour récupérer des informations dans des combinaisons inattendues-même si cela conduit parfois à la mauvaise idée de rapports détaillés exécutés sur des systèmes de production sensibles au temps plutôt que sur un entrepôt de données séparé.
  • sont une technologie mature où vous pouvez facilement trouver du personnel et des solutions bien testées à un certain nombre de problèmes (y compris les limites du modèle relationnel, ainsi que le implémentation imparfaite qui est SQL).

Demandez-vous ce que vous voulez faire, et quelles qualités sont importantes pour vous. Vous pouvez faire tout ce qui est lié à la programmation dans les scripts shell. Voulez-vous?

2
répondu Pontus Gagge 2010-05-19 14:17:39

Je continue à poser la même question, qui est ce qui m'a atterri ici. J'utilise à la fois MySQL et MongoDB (pas en tandem actuellement, bien que c'est une idée). Je dois honnêtement dire que je suis très heureux de ne plus jamais toucher à MySQL. Bien sûr, il y a la conformité "ACID" , mais avez-vous déjà eu besoin de réparer vos tables avec MySQL? Avez-vous déjà eu une base de données corrompue? Il se passe. Avez-vous déjà eu d'autres problèmes avec MySQL? Des conflits de serrure ou des serrures mortes? Des problèmes avec le clustering? Comment facile est-il pour installer et configurer?

MongoDB...Vous l'allumez et c'est fait....Ensuite, il est autosharding. C'est incroyablement simple et c'est aussi incroyablement rapide. Alors, pensez à ce sujet. Votre temps.

Non, ils n'ont pas de jointures mais c'est une déclaration complètement incorrecte de dire qu'elle réduit plus de 99% des besoins de gestion des données. Je reçois souvent l'opposition en essayant d'expliquer MongoDB, les gens ricanent même. Disons juste en face. Les gens ne veulent pas apprendre de nouvelles choses et ils pensent que ce qu'ils savoir est tout ce dont ils ont besoin. Bien sûr, vous pouvez vous en sortir en utilisant MySQL le reste de votre vie et construire vos sites web. Ça marche, nous savons que ça marche. Nous savons aussi qu'il échoue. Si ce n'était pas le cas, vous ne poseriez jamais la question et nous ne verrions probablement pas autant de bases de données orientées documents. Nous savons que, oui, il le fait à l'échelle, mais c'est une douleur à l'arrière de l'échelle.

Éliminons également le trafic et la mise à l'échelle de l'image. Sortez de l'installation. Maintenant, concentrons-nous sur l'utilisation. Quelle est votre expérience lors de L'utilisation de MySQL? Comment bien êtes-vous avec L'architecture MySQL et faites-vous des requêtes efficaces? Combien de temps passez-vous à regarder les requêtes avec EXPLAIN? Combien de temps passez-vous à faire des diagrammes de schéma? ... Je dis de prendre ce temps en arrière. C'est mieux dépensé ailleurs.

C'est mes deux cents. J'aime vraiment MongoDB et j'espère ne plus jamais utiliser MySQL et pour le type de sites web que je construis, il est très possible que je n'en aie pas besoin. Bien que j'essaie toujours de savoir quand je voudrais utiliser MySQL sur MongoDB, pas quand je Peut (avouons-le, Il stocke des données, félicitations, je pourrais aussi écrire une tonne de fichiers XML mais ce n'est pas une bonne idée), mais quand il serait avantageux d'utiliser l'un ou l'autre. En attendant, je vais faire mon travail avec MongoDB et avoir moins de maux de tête.

1
répondu Tom 2010-07-29 04:32:25

Tant que vous n'avez pas besoin de transactions multi-objets, MongoDB peut être un remplacement favorable pour un RDMBS, en particulier dans un contexte d'application web. La vitesse, l'absence de schéma et la modélisation de documents sont tous utiles dans ce domaine.

0
répondu Kyle Banker 2010-05-20 02:09:47

À mon avis, les bases de données orientées documents ne sont bonnes que pour

  1. bases de données quelles données sont mieux représentées à l'aide d'un modèle hiérarchique (arborescence). Ce n'est pas courant pour les bases de données de sites Web.
  2. bases de données avec une énorme quantité de données comme les bases de données Facebook et Amazon. Dans ce cas, il est nécessaire de sacrifier les avantages du modèle relationnel.
0
répondu Bassem 2011-11-25 21:03:24

AFAIK, les bases de données de documents n'ont pas de jointure. C'est à peu près un show-stopper pour > 99% des besoins de gestion de données.

Comme le souligne Matthew Flaschen dans les commentaires, même sur le bureau, les bases de données telles que SQLite introduisent la sémantique SQL dans les zones qui ont traditionnellement utilisé des formats de fichiers de propriété ou XML.

-2
répondu Marcelo Cantos 2010-05-20 08:27:37