Django Kategorien - MPTT vs self-referential model

Django, Flask, Bottle, WSGI, CGI…
Antworten
SnakeBite
User
Beiträge: 46
Registriert: Mittwoch 4. März 2009, 18:26

Hallo.

Ich bin gerade dabei für meinen Blog Kategorien zu programmieren.
Nach etwas online Recherche wurde sehr oft empfohlen einfach MPTT dazu zu verwenden. Ich möchte aber (aus Lerngründen) lieber so viel wie möglich selbst machen.

Mein Model sähe dann also ganz einfach so aus:

Code: Alles auswählen

class Category(models.Model):  
    title = models.CharField(max_length=30, unique=True)
    parent = models.ForeignKey('self', null=True, blank=True)
Angenommen ich hätte immer folgendes Schema: Hauptkategorie, Unterkategorie, UnterUnterkategorie:

1. Ich verstehe dass es bei relationalen Datenbanken "schwieriger" ist dies nachzubilden und es mit Performanceeinbußen verknüpft ist. Wie schlimm ist dies aber wirklich? Würdet Ihr mir definitiv davon abraten es so zu machen und doch zu MPTT zu wechseln? Oder wäre dies bei nicht mehr als 2 Unterkategorien (also 3 Level insgesamt) noch in Ordnung?
2. Angenommen ich hätte 8 Level? Wäre es dann schon so nachteilig dass auf jeden Fall(!) zu MPTT gegriffen werden sollte?

Vielen Dank schonmal

SnakeBite
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

SnakeBite hat geschrieben:Ich bin gerade dabei für meinen Blog[...]
Jede plausible Lösung wird schnell genug für deinen Blog sein.
SnakeBite
User
Beiträge: 46
Registriert: Mittwoch 4. März 2009, 18:26

Hehe, ja ich glaube auch nicht dass mein Blog das next big thing wird. Es handelt sich dabei um ein Lern/Übungs-Projekt.
Trotzdem würde ich gerne trotzdem wissen, wie sehr sich das auf die Performance auswirkt. Es scheint ja durchaus Sinn zu machen etwas wie MPTT zu verwenden.

Kann da jemand von Euch mehr zu sagen?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Keine der beiden Optionen ist besser als die andere. Sie haben einfach unterschiedliche Eigenschaften. Welche Option für einen bestimmten Zweck besser geeignet ist, hängt davon ab was für Anforderungen du hast.

MPTT ist allerdings komplexer. Insofern stellt sich die Frage: Wieso MPTT nutzen? Welche Anforderung an den Blog hast du, dass sich diese mit MPTT performanter umsetzen lässt?
Antworten