Pourquoi les bases de données orientées objet ne sont-elles pas autant utilisées que les bases de données relationnelles? [fermé]

18

J'ai rencontré de nombreux systèmes de gestion de bases de données relationnelles (SGBDR). Mais récemment, j'ai utilisé hibernate, ce qui m'a fait commencer à me demander pourquoi les bases de données orientées objet ne sont pas plus populaires.

Si les langages orientés objet comme Java ou C # sont si populaires, alors pourquoi les systèmes de gestion de base de données orientée objet (OODBMS) ne sont-ils pas plus populaires aussi?

Rachel
la source
1
L'approche "NoSQL" est aujourd'hui extrêmement populaire. Les SGBDR sont limités et limitatifs et, heureusement, ils perdent rapidement du terrain.
SK-logic
Qu'appelez-vous oodb? hibernate est juste un framework pour communiquer avec rdbms avec une interface oo.
Simon Bergot
2
Une question similaire a été posée en 2009 sur SO, voir stackoverflow.com/questions/1350044/… À mon humble avis, presque toutes les réponses données sont toujours valables aujourd'hui.
Doc Brown
@Simon by oodb, je veux dire des bases de données orientées objet
1
@Simon: Versant est un oodb (j'ai vu en production dans deux sociétés différentes).
Giorgio

Réponses:

11

Il y a plusieurs raisons.

  1. De nombreux développeurs ne sont expérimentés que dans la modélisation de données relationnelles. Pour utiliser les bases de données OO, ils devraient apprendre une manière complètement différente de modéliser et de penser aux données. C'est soit très difficile, soit assez long.
  2. Les bases de données relationnelles ont eu beaucoup de temps pour mûrir. Même les bases de données relationnelles libres disposent de techniques avancées d'optimisation et d'indexation. De plus, les données relationnelles sont faciles à stocker et à indexer. On ne peut pas en dire autant des bases de données OO.
  3. Quand des modèles relationnels et OO ont commencé à émerger. Relational avait un énorme avantage sur le fait qu'il était mathématiquement «correct» et qu'il avait sa norme pour l'enregistrement et l'interrogation des données. OO n'avait rien de tel.
  4. [spéculation] Beaucoup de grands acteurs mettent beaucoup de ressources pour créer leurs bases de données relationnelles. Il serait contre-productif de prendre en charge les bases de données OO à la place. Beaucoup d'entre eux ont plutôt investi dans l'intégration des principes OO dans le modèle relationnel, ce qui rend la plupart des bases de données actuelles dites relationnelles objet. OMI, ces modèles sont pires que relationnels purs ou OO purs. [/ Spéculation]
  5. [délire] La dernière chose à noter est que de nombreux développeurs ne comprennent pas vraiment la façon OO de modéliser les données. Il en résulte généralement des modèles anémiques sous-optimaux. De nombreuses sociétés de développement, qui s'appuient sur des développeurs bon marché et inexpérimentés, préfèrent choisir un modèle relationnel simple, qui est enseigné dans tous les collèges CS, plutôt que de choisir une approche OO difficile et non éprouvée. [/ Rant]
Euphorique
la source
5
Je suis d'accord avec tous vos points sauf le dernier. Je pense que c'est plus facile pour les développeurs de gâcher les bases de données relationnelles que les bases de données d'objets. Les clés composites et les relations rompues sont très courantes, mais il me semble au moins un peu plus difficile de gâcher une hiérarchie de classes.
Tjaart
@Tjaart gâcher les hiérarchies de classes semble être la norme pour la plupart des développeurs d'OO.
Bent
10

Lorsque les bases de données sont apparues pour la première fois, la POO n'était pas encore le moyen de programmer. Les bases de données relationnelles, en revanche, ont gagné beaucoup de traction. Et SQL introduit dans les années 80 par IBM est rapidement devenu la lingua franca de toutes les bases de données.

Lorsque la POO est devenue populaire, il y a eu quelques tentatives, mais il y a quelques problèmes. Tout d'abord, le vrai OODBMS est vraiment difficile à implémenter. Dans le cas d'une base de données relationnelle, une table et les index associés sont des structures assez simples (par exemple, les arbres B). Une autre raison est qu'il y a beaucoup de théorie derrière le modèle relationnel, il est directement dérivé de la théorie des ensembles mathématiques. Il existe des moyens connus pour concevoir correctement une base de données relationnelle (pensez à la normalisation, etc.). Enfin et surtout, les gens se sont déjà beaucoup habitués à SQL.

Dans la plupart des cas, les solutions NoSQL modernes ne sont pas vraiment un pas vers OODBMS. Beaucoup d'entre eux sont encore relationnels, seulement dépouillés JOINs. Peu d'entre eux sont en fait des magasins d'objets mais ne sont pas vraiment des OODBMS, car ils ne sont pas conscients des relations entre les objets.

Encore une autre raison pour laquelle il n'y a pas une telle poussée forte pour OODBMS est qu'il existe une solution "OODBMS du pauvre" - ORMs. Cela a gagné en popularité, car ils sont soutenus par des moteurs de base de données bien connus, stables et testés, mais ils fournissent le mappage aux objets. Bien sûr, ce ne sont pas de vrais OODB.

vartec
la source
"Encore une autre raison pour laquelle il n'y a pas une telle poussée pour OODBMS est qu'il existe une solution" OODBMS du pauvre "- les ORM.": Très bon point! +1.
Giorgio
Ce n'est pas vrai. MUMPS a été conçu en 1966 et seulement en 1974, le premier projet de recherche a été lancé par IBM pour développer le System R, le premier SGBDR mondial. Oracle n'a publié ses premiers RDBM de qualité commerciale qu'en 1979, la même année où InterSystems M a été dévoilé. La question est de savoir ce qui s'est passé après cela. La réponse est probablement que les ODBMS n'étaient pas optimisés pour la génération de rapports, alors que la majorité des cas d'utilisation des applications LOB présentent un déséquilibre important en lecture-écriture par rapport aux lectures.
Alexey Zimarev
-2

OODBMS est bon pour stocker des données complexes. Cependant, la plupart du temps, même lorsque vous utilisez des langages OO, les données nécessaires sont relativement simples. Les SGBDR traditionnels sont donc plus adaptés.

Pieter B
la source
2
Les données ne sont presque jamais simples, et je pense que vous ne parvenez pas à expliquer pourquoi OODB n'est pas plus populaire car, après tout, ORM se porte très bien.
Tjaart