MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

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

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 efficaces pour le type de tâches que nous voyons généralement dans les sites Web modernes (recherches rapides 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é ACID, ils ne pourront pas remplacer certains RDBMS. Et si vous regardez des systèmes comme MongoDB, le manque de conformité ACID est l'une des principales raisons pour lesquelles il est si rapide.

Est-il possible que les projets feraient mieux d'utiliser à la fois une base de données orientée document et une base de données relationnelle côte à côte pour différentes données qui conviennent mieux à l'une ou à l'autre ?

Oui. En fait, je dirige un très grand site Web de production qui utilise les deux. Le système a été lancé dans MySQL, mais nous en avons migré une partie vers MongoDB, car nous avons besoin d'un magasin de valeurs clés et MySQL n'est tout simplement pas très bon pour trouver un élément dans 150 millions d'enregistrements.

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

Bases de données orientées documents sont d'excellentes données de stockage facilement contenues dans des relations "clé-valeur" et simples et linéaires "parent-enfant". Voici des exemples simples comme les blogs et les wikis.

Cependant, les bases de données relationnelles ont toujours une longueur d'avance sur des éléments tels que 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 effectué dans une base de données relationnelle qui est mise à jour par les tâches Map-reduce.