2009-04-08 9 views
5

Dies steht im Zusammenhang mit this question. Es hat mich zum denken gebracht, zum Beispiel this book. Anstatt dass es ein Kind von sowohl [Agriculture] als auch [Other] ist, könnte in den Bäumen [Books > Catalogs > Agriculture] bzw. [Business & Industrial > Agriculture & Forestry > Other] es einfach auf eigenen Niveaus diese Niveaus als Tags, stattdessen stehen.Was wären die Vor- und Nachteile von hierarchischen Daten im Vergleich zu verwandten Daten in der Leistung (und Kategorisierung)?

In einer Website wie eBay, würde die Leistungskosten für das Auflisten aller Datensätze mit den Tags[Agriculture UND Catalog] stark outweigth denen der Auflistung aller Datensätze in der [Books > Catalogs > Agriculture]Kategorie, sofern die Daten korrekt normiert ist?

Ich realisiere, dass dies wahrscheinlich eine dumme Frage ist (und nein, ich glaube nicht, dass ich das nächste eBay programmieren werde), aber ich kann diese Neugier nicht abschütteln und, schlimmer noch; die Versuchung; also würde ich mich jetzt lieber dumm anhören und meine Missverständnisse gut verstehen, als später etwas Dummes oder Sinnloses zu machen.

Antwort

6

Als das relationale Modell zuerst auftauchte, war das vorherrschende Datenbankparadigma hierarchisch; und dann (wie es immer noch der Fall ist) ist hierarchisch effizienter, weil Sie im Wesentlichen mit teilweise vordefinierten Abfragen beginnen können.

Aber nur basierend auf einer statischen hierarchischen Struktur. Die große Schwierigkeit tritt auf, wenn Sie die Ansicht der Daten so ändern möchten, dass sie aus einer anderen Stammdimension stammen. (Es war eine stark diskutierte Frage, ob relationale Datenbanken jemals effizient genug für den praktischen Gebrauch sein könnten; bald durch sorgfältige Anwendung des Mooreschen Gesetzes gelöst.)

Denken Sie an Kunden, die Bestellungen haben, die Produkte umfassen; eine Hierarchie. Sie werden zwangsläufig auch über Produkte nachdenken, die in Bestellungen von Kunden zu finden sind. eine ganze andere Hierarchie. Und Verkäufer in Regionen, die Bestellungen von Kunden generieren; oder Kunden haben, die Bestellungen aufgeben.

Relationale Datenbanken bieten Ihnen die Möglichkeit, Ihre Hierarchien beliebig oft mit gleicher Effizienz zu rekonstruieren; ein Vorteil, der nur in anderen Datenbankformaten auf Kosten der Einbettung mehrerer orthogonaler Hierarchien verfügbar ist; In diesem Fall werden die Kosten für das Ändern, Hinzufügen oder Löschen von Daten astronomisch.

+1

Schöne Antwort, danke! –

2

Der Hauptzweck des relationalen Modells besteht darin, Doppelarbeit zu verhindern. Hierarchische Daten, die zwar einfacher manuell zu erstellen sind, leiden jedoch unter Duplizierungsproblemen.

Verwenden Sie das Modell, das am besten zu Ihren Daten passt, anstatt eine vorzeitige Optimierung durchzuführen.

Ich neige dazu, hierarchische Bäume aus relationalen Daten aufzubauen.

+0

> Verwenden Sie das Modell, das am besten zu Ihren Daten passt, anstatt eine vorzeitige Optimierung durchzuführen. Ich neige dazu, hierarchische Bäume aus relationalen Daten aufzubauen. - Das war sehr interessant, danke. –