Orientée objet bases de données sembler une idée vraiment cool pour moi, pas besoin de s'inquiéter à propos de la cartographie de votre modèle de domaine pour votre modèle de base de données, pas de déconner avec le SQL ou outils ORM. La façon dont je le comprends, relationnel DBs offrir certains avantages quand il y a des quantités massives de données, de recherche et d'indexation doivent être faites. À mon avis, 99% des sites web ne sont pas massives, et les problèmes de l'entreprise n'ont jamais besoin d'être pensé, pourquoi ne pas OO DBs plus largement utilisé?
Réponses
Trop de publicités?Pourquoi nous avons abandonné l'Objet de Bases de données
Un temps, j'étais partie d'un Solaris/C++ projet qui a utilisé l'Objectivité de l'objet de base de données. Nous avons finalement passé le projet au cours de Sybase. Ce fut d'environ 10 ans, donc je suis sûr que beaucoup de choses ont changé depuis, mais quelques observations s'appliquent toujours.
L'application était un transporteur de classe système de télécommunications.
- Les fonctionnalités de base était sympa. Vous faites référence à un objet et la magie apparaît dans la mémoire. Si votre problème de programmation se résume à avoir un grand graphe d'objets (par opposition à des données tabulaires) c'est une victoire définitive.
- Il y avait quelques relatives à la stabilité "early adopter" des problèmes. Vu que la société est toujours en activité, il est sûr de supposer qu'ils sont fixes.
- Nous avons voulu permettre au client de définir leur propre schéma. Ce fut un énorme problème, car vous donnez l'objet de base de données un cahier des charges et il crache un fichier d'en-tête qui définit l'objet. Ce n'est certainement pas propice à la post-compilation de définition de schéma, qui est une certaine force de bases de données SQL.
- Le client l'a perçu comme étant une nouvelle technologie expérimentale. Si vous êtes familier avec l'telecom world, vous savez ce n'est pas une recommandation.
- Les bases de données SQL ont des tonnes d'outils pour travailler avec des schémas, administration de base de données, la génération de l'INTERFACE utilisateur, sauvegarde, etc. Nous étions en train d'écrire chaque petit morceau de nous-mêmes.
- J'ai eu une mauvaise expérience de travail avec certains de l'utilisateur précoce objectologists dans ce groupe. Si vous êtes familier avec le DailyWTF, ce sont là les Vrais,les Faux,FileNotFound les gars.
Tout en essayant de répondre au client de personnalisation, notre chef objectologist est venu avec quelques classes de données appelé les Lignes et les Colonnes. C'était quand il est devenu évident que, pour notre application, nous étions tout simplement beaucoup mieux de passer avec une base de données relationnelle.
De toute façon, c'était mon expérience avec l'Objet de la DBs, j'aimerais entendre quelques autres (j'espère que plus heureux!) expériences avec eux.
Je me sens souvent ça se résume à réfléchir les gens du modèle relationnel étant le standard de facto parce que c'est ce que tout le monde utilise depuis X années.
** Avertissement: je suis dans mes années 20; la suivante vient de notes de recherche et non pas de l'expérience, donc peut-être inexactes.*
Il semble que dans les premiers jours de bases de données, autour des années 1950/60 réseau, objet, bases de données relationnelles et tous avaient un pied d'égalité. Relationnel gagné simplement en raison de la commercialisation (grâce à IBM et quelques concurrents directs) et, depuis lors, a eu toute l'attention et de fonds, poussé dans cette direction menant à un grand progrès vu sur les autres modèles.
Puis, au cours des années 70, nous avons vu l'émergence de l'objet de bases de données dans la recherche avant d'être lancé dans le courant des années 80, frapper à leur rythme dans le milieu des années 90 à environ le même temps, IBM a sorti serveur lotus notes (plus tard lotus domino), qui a permis à intégrer un nouveau type de base de données: le document db. Ceci, en conjonction avec lotus notes, très bien fait. Comme l'a fait l'Objet de bases de données. Pour un tandis que, de toute façon.
Ensuite, le marketing gars a commencé à nouveau. Beaucoup de bruit sur le déplacement de la façon dont le déplacement de l'héritage du système relationnel a été plus facile de se déplacer à nouveau des Sgbdr plutôt que les autres modèles (même si les trucs de parler à la dbs a été OO - cela n'a pas d'importance).
Et c'est là où nous en sommes aujourd'hui. Les gens utilisent des Sgbdr parce que... les gens utilisent des Sgbdr.
Si les gens étaient pour commencer à utiliser l'autre la persistance des données, les modèles et les pousser pour les fonctionnalités dont ils ont besoin plutôt que de se plaindre et de revenir à des Sgbdr, nous pourrions voir une croissance similaire de la maturité, les plates-formes stables. Nous voyons certaines mesures en vue de cela maintenant avec certains des nouveaux projets OpenSource, mais ce n'est pas assez.
Souvent, les gens oublient, c'est que les données qu'ils sont le stockage n'est souvent pas bien assis dans un SGBDR, mais ils vont faire tout ce qu'ils peuvent fudge en un seul. Nous voyons souvent des cas où nous avons besoin de travailler avec un grand nombre de semi-structurées, peu de données liées. Nous avons besoin de les stocker, de les indexer et de rechercher rapidement. Actuellement, il y a peu, voire aucun (none viennent à l'esprit), de solutions à cette situation. Nous avons donc grunt, commutateur de notre esprit relationnel de mode, et de commencer à rédiger nos schémas du mieux que nous pouvons, en sachant que nous sommes en imposant une structure que quelques mois en bas de la ligne ne sera pas nu toute ressemblance avec les données que nous avons commencé avec.
CouchDB a commencé par un sentier avec une solution pour cela. Il stocke les données semi-structurées, des documents et des allowa vous pour créer des vues pour récupérer ces données avec ses relations.
La meilleure chose à faire est de consulter vos données, de travailler sur la façon dont vous allez utiliser ces données, le regard sur ce qui serait la meilleure façon de les stocker.
Ainsi, lorsque l'on travaille avec:
beaucoup de chiffres (par exemple. stock/share/informations sur les prix) et besoin pour exécuter agrégées sommes/rapports sur ces données, le bâton avec les bases de données relationnelles.
un énorme tas de tuples et vous êtes en train de faire simple look-ups, une clé/valeur-db est imbattable.
un "monde réel" le modèle avec lequel vous avez besoin de persévérance, ne cherchez pas plus loin que de OODB.
les "petits" morceaux de connexes/méta-données autour d'un élément clé, comme le contact/adresse-l'information de livre ou un catalogue de produits, puis un document de la base de données est probablement la voie à suivre.
travail avec beaucoup de contenu/copier/mots (par exemple. pages web, blogs, documents techniques qui font référence à d'autres tech docs), plus précisément dans le "web" de l'arène, vous ne pouvez vraiment pas battre une bonne XML db (plus précisément, pour l'inter-documents, la XInclude spec pour relier les fragments de document a fait un formidable travail autorisant les mises à jour de données à référence).
Ce qui est également important de garder à l'esprit est de savoir comment vous allez travailler avec ces données. Comme avec la plupart des choses avec le développement, la cueillette de X ou Y, car ils sont cool ne veut pas dire qu'ils fonctionnent bien. XML obtient une mauvaise réputation parce que les gens ne fonctionnent pas avec lui dans le droit chemin. Il fonctionne mieux lorsqu'elle gère aux côtés de ses autres technologies connexes: XQuery Et XPath de l'interrogation, de XSL pour la traduction/templating, XInclude pour lier et de fusionner les données des fragments, et XUpdate pour la manipulation. Envelopper le tout dans une native xml, base de données et vous avez un très bon environnement pour travailler avec XML.
"Le Grand Collisionneur de Hadrons du CERN, en Suisse, utilise une Objectivité DB. La base de données est actuellement testé dans des centaines de téraoctets à des débits de données jusqu'à 35 MO/seconde."
c'est à dire: Le Plus cher de l'expérience dans l'histoire de l'Homme utilise un OODBMS.
La maturité et la Simplicité sont les deux principaux facteurs de l'absence de OODBMSs utilisé. En termes généraux OODBMS est un Adolescent, par rapport à la patiné et assaisonné des Sgbdr. Les gens font confiance à cette technologie éprouvée derrière des Sgbdr et se méfient de l'Arriviste Youngin' avec sa nouvelle approche. SQL est un moyen simple de communiquer avec le "Gestionnaire de Données" (le MS de SGBDR), alors que OO équivalents sont immatures et les gens trouvent qu'il est difficile de les utiliser pour communiquer ses intentions à l' "Gestionnaire de Données".
La raison OO est adopté pour le LHC, c'est que ces vieilles méthodes éprouvées atteindre leur capacité innée à effectuer. Une capacité qui en temps normal n'est jamais vraiment nécessaires. Le LHC a besoin d'énormes débit et de stockage qui Sgbdr peut réaliser, mais sont sous la normale pour OODBMSs delà d'un certain point.
Dans les situations normales, toutes les transactions fiscales de chaque être humain, et un inventaire détaillé de chaque communication interpersonnelle lors d'une instance de temps; est insignifiante par rapport à la Systémique exige d'observer les événements imprévisibles de la physique Quantique royaume.
Oh et MySQL n'est pas cher ... comme de la bière gratuite. Tout le monde aime la bière gratuite.
j'ai fait une réponse ici avant,
Relationnel
- SQL et les normes
- facile à modèle
- pouvez utiliser seulement la norme et des types de fournisseurs
- l'intégrité référentielle (matematically solide relationnel de la théorie des ensembles)
- beaucoup d'outils et base de données des implémentations
- des données séparées de programme
- la gestion du stockage et à extrémité élevé de soutien de l'infrastructure de
- de la transaction et de la gestion de la concurrence fait à l'intérieur de
- Le Modèle relationnel est Basée sur la Valeur à savoir les lignes sont identifiées par des clés primaires
Cons
- pas de type personnalisé
- pas extensible types de données
- d'adaptation d'impédance
- ne peut pas exprimer les relations d'imbrication
- ne peut pas utiliser des entités complexes comme une seule unité
- nécessité de définir des clés et des différents types de relations dans le modèle de données du niveau
- rédiger des procédures pour la gestion des versions, des transactions si nécessaire
Objet DB
- Haute performance
- Plus vite que pas de jointures nécessaires
- Inhérente mécanisme de contrôle de version
- Une interface de navigation pour les opérations (comme le graphique de la traversée)
- Objet Langage de Requête de récupérer des objets de manière déclarative
- types de données complexes
- l'identité de l'objet ie. equals() dans lequel l'identité de l'objet est indépendante de la valeur et de mises à jour
- facilite le partage d'objets
- les classes et les hiérarchies d'héritage et de l'encapsulation)
- soutien pour les relations
- intégré à une persistance de la langue comme de la FOAD
- soutien pour l'atomicité
- soutien pour les relations imbriquées
- modélisation de la sémantique
Cons
- Aucun fondement mathématique comme RDB (voir Codd)
- les inconvénients de l'orientation de l'objet
- la persistance difficile pour les structures complexes, certaines données doivent être transitoire
Objet-bases de données Relationnelles (Vous pourriez avoir vu Udt!)
- support pour les types de données complexes comme la collecte, multisets etc
- orientée objet de la modélisation des données
- SQL étendu et riche des types de
- soutien pour UDT inhertance
- puissant langage de requête
Différentes approches (OO, Relationnel ou OODB) peut être nécessaire pour différentes applications
Références
L'avantage de l'utilisation de bases de données relationnelles pour les grands corpus
Base De Données Relationnelle Base De Données Relationnelle
Les avantages d'une base de données relationnelle
L'Orienté Objet Système De Base De Données Manifeste
Systèmes De Base De Données Orientée Objet
Objet-Relationnel des Bases de données dans les SGBD
L'exhaustivité des Critères pour Objet de Base de données Relationnelles les Systèmes de
Comparaisons
http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems
http://en.wikipedia.org/wiki/Comparison_of_object_database_management_systems
http://en.wikipedia.org/wiki/Comparison_of_object-relational_database_management_systems
Cela peut sembler une réponse stupide mais... Ils ne sont pas largement utilisés, car ils ne sont pas largement utilisés - je pense que le problème avec des personnes n'utilisant pas OODBs est que plus de gens se sentent à l'aise avec SQL etc. (parce qu'ils le connaissent déjà bien, et parce qu'ils savent que tout le monde l'utilise)