Auf jedem modernen Standort (und auf älteren Standorten) gibt es verschachtelte Strukturen, eine Hierarchie von Objekten und Bäumen. Das häufigste Beispiel ist ein Verzeichnis.
Heute werden viele Projekte mit Javascript entwickelt. Wie werden in diesem Fall Baumstrukturen gespeichert? Darüber möchte ich sprechen.
Jetzt ist es meine Aufgabe, eine hierarchische Struktur des Katalogs basierend auf Produktparametern zu erstellen.
Es gibt verschiedene Algorithmen zum Speichern von Bäumen, und Beispiele für solche Algorithmen sind Adjacency List, Matherialized Path, Nested Set und Closure Table.
Wenn Sie noch mehr raten können, werde ich gerne hören und lernen.
Als ich Erweiterungen für Joomla schrieb, habe ich das verschachtelte Set häufig verwendet. In diesem CMS habe ich dieses Modell kennengelernt. Aber jetzt hat sich der Stapel geändert und jetzt ist es Javascript. Die Gewohnheiten und die Standorte auf Joomla blieben erhalten. Es ist notwendig, Daten an neue Dienste und Projekte zu übertragen.
Es gibt viele Informationen über verschachtelte Mengen im Internet, und wenn Sie möchten, können Sie sie immer finden, aber ich muss trotzdem ein paar Worte zu diesem Datenmodell sagen.
Der Punkt der verschachtelten Menge besteht darin, dass jeder Knoten in der Hierarchie einen linken Schlüssel und ein rechtes Schlüsselpaar hat. Abhängig von ihren Werten wird der Baum durchlaufen. Die positiven Eigenschaften des Algorithmus sind meiner Meinung nach die Geschwindigkeit der Datenerfassung. In diesem Algorithmus gibt es keine Rekursion. Um die Baumstruktur zu ändern, Knoten hinzuzufügen, zu löschen und zu übertragen, müssen gleichzeitig alle Schlüssel neu berechnet werden.
Um Daten aus dem verschachtelten Satz in Javascript-Projekten zu verwenden, benötigen Sie ein Modul, das mit diesem Modell arbeiten kann.
Beim Durchsuchen von npm fand ich Module, deren Funktionalität darin bestand, Daten aus der Struktur verschachtelter Mengen abzurufen, d. H. Alle Schlüssel sollten bereits angebracht sein. Die Struktur musste bearbeitet werden, aber ich fand keine solche Gelegenheit.
Ein weiteres Problem ist, dass in den meisten Fällen sowohl die Daten als auch die Baumstruktur in einer Entität gespeichert sind, aber meiner Meinung nach ist es viel effizienter, diese Dinge zu trennen.
Somit kann ein und dieselbe Kategorie (diese Kategorien) bei verschiedenen Eltern liegen. Auf diese Weise können Benutzer mit einer durchdachten Hierarchie schneller finden, wonach sie suchen.
Aus SEO-Sicht wird es zwar zwei Seiten mit unterschiedlichen URLs und demselben Inhalt geben, dies kann jedoch durch kanonische Links gelöst werden.
Wenn dies nicht korrekt ist, bitte ich SEO-Spezialisten, mich zu korrigieren.
Am Ende habe ich beschlossen, ein Modul zu schreiben und es auf npmjs.com zu veröffentlichen.
Wenn es jemandem nützlich ist, werde ich mich sehr freuen.
Jetzt arbeite ich weiter daran und plane, die Übertragung des Knotens durch den Baum zu implementieren.
Hier ist ein Link zu npm, wo Sie das Paket herunterladen können .
Hier ist ein Link zu Github, wo Sie die Quellen herunterladen können .
Die Dokumentation ist da und da.
Kommentare wären willkommen.
Wir wünschen Ihnen gute Projekte und interessante Aufgaben.