Question

Y at-il une base de données hiérarchique open-source ou l'émulation au-dessus des SGBDR existantes?

Je suis à la recherche d'un DMBS (ou plugin SGBDR existant) qui permet de stocker des données et permet d'effectuer des requêtes hiérarchiques sur des données hiérarchiques (quelque chose comme « SELECT LEVEL ... CONNECT BY ... », « SELECT PARENT ... " par exemple). Je sais qu'il ya un certain soutien à Oracle, mais est-il une solution plus complexe?

Était-ce utile?

La solution

Il n'y a pas un plugin standardisé pour ce faire. Je l'ai regardé plus d'une fois. Cependant, il y a un certain nombre d'options. Voir de ma question précédente sur le même sujet:

Quelles sont les options pour stocker des données hiérarchiques dans une base de données relationnelle?

En bref, si vous utilisez une table avec ID et ParentID (liste de a.k.a. contiguïté) vous utilisez des expressions de table commune avec la plupart des bases de données (CONNECT BY Oracle étant l'une des exceptions les plus notables). OTO, quelque chose comme chemin matérialisé ou des ensembles imbriqués peut être un meilleur ajustement pour votre situation - par exemple la capacité de trouver facilement « lignée » où avec la liste de contiguïté ceci est une opération coûteuse.

En général, ce qui finit par se produire avec un système qui doit travailler de façon intensive avec des données hiérarchiques, par exemple un CMS, est qu'il met en œuvre plus d'une de ces solutions. L'hypothèse est fortement lit comme suit l'emportent sur les écritures.

Autres conseils

Les données relationnelles ne prend pas directement les hiérarchies de la manière dont une structure intrinsèquement hiérarchique comme XML fait. Vous devez utiliser un modèle de données tels que des ensembles imbriqués ou une auto-jointure droite pour modéliser la hiérarchie.

En fonction du type de système que vous avez, Common Table Expressions vous permettra d'exécuter des requêtes hiérarchiques sur les données. CTEs sont supportés par les versions SQL Server depuis 2005, les versions récentes de DB / 2 et PostgreSQL - et probablement d'autres systèmes. CTEs sont un peu plus Checklist que CONNECT BY, mais ils fonctionnent sur une variété juste de platorms.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top