TvB: Wieviel Subs pro Thread sind notwendig?

Hello mal so ohne Anmeldung,

wieviel Subs sind pro Thread-Ebene notwendig?

Muss man die wirklich unbegrenzt halten mit nested Sets oder anderen rekursiven Methoden, oder reichen 1 Byte (250) oder 2 Bytes (65530) pro Ebene? Die fehlenden an 2^x hätten dann schon Sonderbedeutung...

Wie ist das hier limitiert?

Glück Auf

TvB

  1. Hallo TvB,

    du sprichst von der hierarchischen Threadansicht hier im Forum?

    Ich programmiere das Forum nicht, aber ich glaube nicht, dass hier irgendeine technische Limitierung vorliegt. Dazu besteht kein Grund.

    Meine Implementierung wäre, an jedem Posting drei IDs zu speichern: eigene ID, parent ID und root ID. Wenn ich dann den Thread zum Root-Posting 4711 haben will, lade ich alle Postings mit root ID 4711, sortiere sie nach eigener ID und hänge dann jedes Posting in die Child-Liste des Parent-Posting ein. Der so entstandene n-Baum wird dann im Pre-Order Traversal als HTML gerendert (erst die Wurzel, dann die Kinder).

    Wenn die Child-Liste eine Listenstruktur ist, ist der begrenzende Faktor der RAM des Servers, nicht die Anzahl Einträge in der Liste.

    Maßnahmen wie rekursive DB-Traversierung oder nested sets wären nötig, wenn Du Teilbäume laden können musst. Dann hilft die Root-ID als eingrenzender Faktor nicht. Das passiert hier aber nur wenn ein Moderator einen Teilbaum aus einem Thread auskoppelt, also ganz selten. Da kann man sich schlechtere Performance leisten...

    @Christian Kruse - wie hast Du's gemacht? Habe keine Lust, jetzt durch das Github-Projekt zu turnen :)

    Rolf

    --
    sumpsi - posui - clusi
    1. Hello Rolf B,

      dass eine offene Lösung möglich ist, ist mir nicht entgangen :-)

      Allerdings frage ich mich, ob eine offene Lösung notwendig ist.

      Deshalb die Frage, wie breit und wie tief hier im Forum die mächtigsten Threads geworden sind - zu Zeiten, als noch der Bär los war...

      Glück Auf TvB

      1. Hallo Sockentom 😉,

        die Frage ist eher, ob eine geschlossene Lösung nötig ist. Dein Problem mit der Bitbreite eines Index oder Zählers taucht doch nur auf, wenn man die Child-Postings durchnummeriert und sich darüber Gedanken macht, wieviele Bits man für die Indexvariable verwenden möchte.

        Also wenn Du gerne Web-Anwendungen in C oder Assembler schreibst, dann mach Dir Gedanken darum. Alle anderen nehmen Sprachen, wo ein Int sowieso 32 oder 64 Bit hat. Und Sonderbedeutungen für spezielle Indexe sind ein Antipattern aus den 1960ern, wo noch Ringe auf Drähte gefädelt wurden und eine 10MB Festplatte das bekannte Universum speichern konnte - sowas macht man seit mindestens 40 Jahren mit eigenständigen Flags.

        Die Frage nach dem bisher fettesten Thread mag natürlich trotzdem interessant sein. Aber nicht unter dem Gesichtspunkt von technischen Indexgrenzen.

        Rolf

        --
        sumpsi - posui - clusi
      2. Hallo TvB,

        Deshalb die Frage, wie breit und wie tief hier im Forum die mächtigsten Threads geworden sind - zu Zeiten, als noch der Bär los war...

        selfforum=> select count(*) from messages group by thread_id order by count(*) desc limit 10;
         count 
        -------
           574
           508
           463
           416
           389
           364
           348
           335
           289
           271
        (10 rows)
        
        selfforum=> 
        

        Beantwortet das deine Frage?

        LG,
        CK

        1. Hello,

          Deshalb die Frage, wie breit und wie tief hier im Forum die mächtigsten Threads geworden sind - zu Zeiten, als noch der Bär los war...

          selfforum=> select count(*) from messages group by thread_id order by count(*) desc limit 10;
           count 
          -------
             574
             508
             463
             416
             389
             364
             348
             335
             289
             271
          (10 rows)
          
          selfforum=> 
          

          Beantwortet das deine Frage?

          Ja. Bestens!

          Glück Auf
          Tom vom Berg

          --
          Es gibt nichts Gutes, außer man tut es!
          Das Leben selbst ist der Sinn.
    2. Hallo Rolf,

      @Christian Kruse - wie hast Du's gemacht? Habe keine Lust, jetzt durch das Github-Projekt zu turnen :)

      Es gibt zwei Relationen, Threads und Messages. Das hat den Grund, dass es zu den Threads noch Meta-Informationen gibt. Ansonsten: ja, Messages haben message_id und parent_id, wobei die parent_id ein FK auf message_id ist.

      LG,
      CK