2010-11-18 32 views
3

Je l'avais vu Entity Attribute Value dans beaucoup de contextes avant que j'ai réellement appris ce que son nom était. C'est cette technique qui surgit souvent quand au lieu de stocker des données dans les colonnes de la base de données, vous le retournez et avez une table avec des colonnes Entity, Attrbute, Value et chaque élément de données devient une ligne dans cette table. Parfois, c'est aussi connu comme «Open-Schema».Structures de valeur d'attribut d'entité (EAV)?

C'est bon pour certaines choses, mauvais pour d'autres choses. Ce wikipedia article a une bonne discussion de la théorie derrière elle.

Il semble que ce soit le genre de technique souvent utilisée qui devrait avoir des Frameworks ou des moteurs ou des bases de données NoSQL ou des outils logiciels généraux pour le construire et le supporter.

Alors, en connaissez-vous? Je suis particulièrement intéressé par la pile Microsoft (.Net, SQL Server, etc.), mais aussi par d'autres piles de technologies.

Par exemple, voici un projet à build an ASP.NET EAV engine qui est exactement ce que je cherche, mais apparemment n'a jamais commencé.

Répondre

6

Si vous pouvez vivre avec les inconvénients des bases de données NoSQL, la meilleure façon d'approcher le modèle EAV est avec une alternative NoSQL comme CouchDB ou MongoDB. Ces bases de données offrent un design "schemaless" qui permet à chaque rangée d'avoir son propre schéma. Faire un EAV avec un SGBDR traditionnel demande des problèmes car l'interrogation devient très difficile et la performance souffre plus le jeu de données est grand.

Une alternative que j'ai utilisée avec succès dans le passé est de combiner un SGBDR avec une variante NOSQL (MySql et MongoDB). J'utilise MySQL pour stocker les données EAV (gagner l'intégrité transactionnelle), et j'utilise MongoDB comme un magasin de rapports pour contourner les problèmes d'interrogation avec le modèle EAV.

0

Je vais faire rouler la balle avec un j'ai trouvé via this blog post:

Une première version bêta pour un cadre SQL Server EAV:

http://eav.codeplex.com/
« Un motif exemple EAV pour SQL Server avec: Tableaux et index, Intégrité référentielle partielle, Typage partiel des données, Vues pouvant être mises à jour (comme la table SQL normale) "

Fournit des scripts SQL à télécharger, here.

1

Vous pouvez le stocker en SQL-XML, en donnant une libo tho, mais vous pouvez faire la de/sérialisation en .NET, puis en l'insérant dans X-LINQ.

La performance sera également un problème énorme évidemment.