Base de données EAV avantages/Inconvénients et les solutions de rechange
J'ai été à la recherche d'une solution de base de données pour permettre aux champs définis par l'utilisateur et valeurs (permettant un nombre illimité). Au premier coup d'œil, EAV semblait être la bonne, mais après un peu de lecture, je ne suis pas sûr.
Quels sont les avantages et les inconvénients de VAE?
Est il une autre solution de base de données méthode pour permettre à l'utilisateur défini des attributs, des champs et des valeurs?
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas pour être considérée comme une réponse exhaustive, mais juste quelques points sur le sujet.
Puisque la question est aussi étiqueté avec le
[sql]
tag, permettez-moi de dire que, en général, les bases de données relationnelles ne sont pas particulièrement adapté pour le stockage de données à l'aide de la EAV modèle. Vous pouvez toujours concevoir un modèle EAV en SQL, mais vous aurez à sacrifier de nombreux avantages qu'une base de données relationnelle pourrait donner. Non seulement vous ne serez pas en mesure d'appliquer l'intégrité référentielle, utiliser des types de données SQL de valeurs et d'appliquer les attributs obligatoires, mais même les requêtes de base peut devenir difficile à écrire. En fait, pour surmonter cette limitation, plusieurs EAV solutions s'appuient sur la duplication des données, au lieu de se joindre avec des tables liées, qui comme vous pouvez l'imaginer, a de nombreux inconvénients.Si vous avez vraiment besoin d'un schemaless design", permettant à un nombre illimité d'attributs", votre meilleur pari est probablement d'utiliser un NoSQL solution. Même si les faiblesses de VAE par rapport aux bases de données relationnelles s'appliquent également aux NoSQL des solutions de rechange, il vous sera proposé des fonctionnalités supplémentaires qui sont difficiles à atteindre avec les classiques des bases de données SQL. Par exemple, habituellement NoSQL les banques de données peuvent être mises à l'échelle beaucoup plus facile que les bases de données relationnelles, simplement parce qu'ils ont été conçus pour résoudre une sorte de problème d'évolutivité, et elles ont délibérément abandonné fonctionnalités qui rendent difficile mise à l'échelle.
De nombreuses plateformes d'informatique en nuage (tels que ceux proposés par Amazon, Google et Microsoft) sont en vedette des banques de données basé sur le modèle EAV, où un nombre quelconque d'attributs peuvent être associés à une entité donnée. Si vous envisagez de déployer vos applications vers le cloud, vous pouvez considérer cela comme un avantage commercial, ainsi qu'une technique, en raison de la forte concurrence entre les grands fournisseurs est de pousser la valeur-à-ratios de coûts à des niveaux très élevés, à force de poussée sur les caractéristiques et les pousser vers le bas les financiers et les coûts de mise en œuvre.
type
par exemple).Ont un coup d'oeil à posgtres hstore http://www.postgresql.org/docs/9.0/static/hstore.html
cela va faire exactement ce que vous voulez sans que la plupart des inconvénients
La Flux De Plate-Forme propose l'alternative basée sur Flux (en fait, c'est le Modèle de Domaine), Champs et Affectations entités.
Une alternative consiste à modifier le schéma de base de données basée sur la saisie de l'utilisateur: par exemple lorsque l'utilisateur veut un nouveau champ, puis ajouter une colonne correspondante de la base de données.