Antwort auf den Beitrag "Re:Week #6 + #7 Daten raus, Daten rein" posten:
Nickname:
Passwort:
Thema:
Nachricht:
>Das letzte Wochenende gab’s ja kein Update, da ich nichts Berichtenswertes gemacht habe, außer den Code wie angekündigt etwas umzustrukturieren und allgemein aufzuräumen. Des Weiteren habe ich mich um die ganzen Importprozesse gekümmert, welche die User und Postings aus der alten Datenbank in ihre neue Struktur transformieren und schließlich in die neue Datenbank überführt. [b:Das soll heute mal das ausführliche Thema sein]. > >So ein Import klingt erstmal trivial, aber die Probleme stecken wie immer im Detail. Ich musste einige Fehler im alten Datenbestand beheben, wie etwa verwaiste Posts, die keinem Thema angehörten oder deren Autor nicht mehr in der Datenbank auffindbar war. > >Es gibt viele Accounts ohne Registrierungsdatum oder auch mit obskuren Problemen, wie dass anstatt der E-Mail-Adresse eine Altersangabe in das entsprechende Feld gespeichert war. Auch die Verwendung eines neuen Textformats, sprich jetzt Markdown statt das bisherige proprietäre Maniac-Format mit seinen verschiedenen Formatierungsmöglichkeiten, kam mit einer ganzen Reihe an Herausforderungen daher. > >[b:20+ Jahre (alte) Nutzerdaten] > >Wie man überhaupt die bestehenden Nutzerkonten auch aus Usersicht stressfrei überführt, musste ebenfalls gut überlegt werden, denn ich konnte nicht einfach Nickname und Passwort als Authentifizierungsmechanismus übernehmen. Um aber auf ein heutzutage übliches Tandem aus verifizierbarer E Mail-Adresse und einem weiteren Merkmal (Passwort, Magic Link etc.) umzusteigen, [b:mussten] diese Adressen aktuell sein - was bei einem über 20 Jahre alten Datenbestand ein erhebliches Problem ist. > >Hinzu kommt, dass die Passwörter aktuell noch unsicher gespeichert werden, nicht im Klartext, aber auch nicht ausreichend verschlüsselt. Auch das sollte irgendwie im Zuge des ersten Logins im neuen System behoben werden. Schließlich musste ich entscheiden, was ich mit den alten Profildaten anfange, ihr wisst schon, ICQ-Nummer, Lieblingssysteme, Wohnort usw. Aktuell würde ich sagen, dass man das wegschmeissen kann und sollte. > >Jedenfalls besteht für euch Altuser nun ein kleiner Zwischenschritt, d.h. ihr könnt euch nicht sofort wie gewohnt im neuen System einloggen, sondern müsst euren Account vorab noch aktivieren. Das ist ein kleines Formular, in welches ihr euren aktuellen Nickname zzgl. Passwort sowie eine funktionierende E-Mail-Adresse angibt. Anschließend wird diese noch überprüft und das Konto ist aktiviert. Im Hintergrund wird dann bei der Gelegenheit das Passwort nach neuestem Stand der Technik verschlüsselt bzw. habe ich auch als Admin selbst keine Handhabe mehr, Passwörter einzusehen oder zu ändern. > >[img:https://i.imgur.com/poNrIEo.png] > >[b: Das Runde muss in’s Eckige - ein erster Testlauf] > >Apropos Datenbestand, das altehrwürdige Maniac besteht aus rund [b:13.500 Accounts, 330.000 privaten Nachrichten und 4.500.000 öffentlichen Postings]. Das klingt in Zeiten von Big Data nach nicht besonders viel, aber aufgrund der verschiedenen Transformationsprozesse und Zusatzinformationen, die für jeden User und jedes Posting nun speichere UND der Tatsache, dass die Zieldatenbank in der Cloud weilt sowie dass mein Mac nunmal 10 Jahre alt ist, dauert das doch recht lange. Deshalb ist es sehr wichtig, dass die Prozesse und Funktionen rund um die Datenmigration einwandfrei funktionieren. > >Ich reiße mal an, was da genau im Einzelnen passiert: > >[b:User:] Für jeden User wird ein Account im neuen Authentifizierungssystem angelegt. Außerdem schaue ich noch im alten Dateisystem nach, ob der User mal ein Profilbild hochgeladen hat, und speichere das ebenfalls neu ab und verbinde es zu dem entsprechenden neuen Account. Überprüft wird natürlich auch, ob ein Account in der Vergangenheit gesperrt wurde und entsprechend eingeschränkt. Die Migration von Passwörter/E-Mail Adressen wird wie oben bereits beschrieben von euch selbst beim ersten Login angestoßen. > >[img:https://i.imgur.com/PbX0den.png] > >[b:Private Nachrichten:] Das neue System pimpt die alte Mailbox insofern auf, als dass hier nun nicht mehr ausschließlich [b:zwei] Nutzer miteinander kommunizieren können, sondern man mit beliebig vielen Usern Unterhaltungen durchführen kann. Für die Migration heißt das, dass die ganzen Nachrichten zwischen einzelnen User-Paaren in “Unterhaltungen mit zwei Teilnehmern” konvertiert und importiert werden - ein etwas zäher Vorgang, der sich auch in der Importzeit niederschlägt. Später wird man dann - sofern dafür freigeschaltet - eine Unterhaltung starten können, die mehr als eine weitere Person beinhaltet oder man kann Personen im späteren Verlauf eines Gesprächs einladen. Das Ganze ist also praktisch gesehen nun eher ein Messenger als ein klassisches Postfach. Man kann das Ganze aber natürlich weiterhin in einer Zweier-Runde wie gewohnt nutzen - das vermutlich übliche Szenario. Gruppenchats werden vielleicht auch vorerst ein experimentelles VIP-Feature, in dessen Folge man sich anschauen kann, ob das überhaupt jemand nutzt und wie es in der Praxis funktioniert. > >[img:https://i.imgur.com/tUFqxgx.png] > >[b:Öffentliche Postings:] Bei den Postings ändert sich einiges intern. Geblieben ist, dass die Diskussionen in Antwortbäumen organisiert sind. Die Texte werden allerdings zukünftig an einer separaten Stelle gespeichert und versioniert, d.h. wenn ein Beitrag editiert wird, entsteht eine neue Revision, so dass man Änderungen zukünftig nachvollziehen kann. Dazu kommt die neue, schon oft erläuterte Markdown-Syntax, in welcher die alten Inhalte erstmal umgewandelt werden müssen. Last but not least werden zusätzlich optimierte Varianten der Texte für die kommende Suchfunktion gespeichert. Im Alt-Maniac wird dieser sogenannte Suchindex übrigens nur einmal nachts auf den neuesten Stand gebracht. Im neuen Maniac passiert das dann in Echtzeit. > >Die dahinterstehenden Prozesse sind jedenfalls insgesamt so aufwändig, dass die Posting-Migration in zwei Phasen abläuft. In der ersten Phase werden die "Diskussionsbäume" schonmal passend gespeichert, die Rohtexte (Titel und Text im alten Maniac-Format) werden aber erstmal an anderer Stelle bis zur Verarbeitung in der zweiten Phase abgelegt. > >[img:https://i.imgur.com/6vnh9mq.png] > >In dieser zweiten Phase werden die Rohtexte transformiert, Revisionen angelegt und der Suchindex gebildet. Nebenbei werden die Texte noch nach Links abgesucht und diese klassifiziert (Interner Link, Profil-Link, Externer, etc). Dieser Import ist gemessen an den Datenbank-Inserts pro Sekunde durchaus flott, aber aufgrund der Masse kommen dann doch ein paar Stunden zusammen. > >[img:https://i.imgur.com/nRdPELg.png] > >Bei den ingesamt vier Migrationen werden außerdem eine Reihe von Ereignissen rückwirkend erfasst. Solche Ereignisse sind z.B. dass jemand ein Thema eröffnet oder einen Kommentar hinterlassen hat. Aus diesen Daten kann ich zukünftig interessante öffentliche sowie private Statistiken für die letzten 20 Jahre Maniac-Aktivität erstellen. Das wird mit Sicherheit sehr interessant - für die Betrachtung der fallenden Useraktivität über die letzten Jahre aber auch ebenso schmerzhaft werden. > >[b: Ready, Set, Go!] >Gestern und heute habe ich dann mal einen kompletten Import mit einem aktuellen Maniac-Datenbackup durchgespielt: > >Import der alten Daten in mein lokales System: [b:25 Minuten] >Migration User: [b:100 Minuten] >Migration privater Nachrichten: [b:235 Minuten] >Migration Postings Phase #1: [b:100 Minuten] >Migration Postings Phase #2: [b:215 Minute] > >[b:Allen in Allem also ca. 9,5 Stunden] > >Interessant ist noch, dass der alte Datenbankbestand ca. 3GB Speicherplatz beansprucht, während wir jetzt ca. 8GB Platz in der neuen Datenbank benötigen. Die dicken Brocken sind hier: > >Suchindex: [b:3780 MB] >Posting-Inhalte: [b:3020 MB] >Diskussionsbäume/Struktur: [b:1039 MB] >Ereignisse: [b:570 MB] >Private Nachrichten: [b:240 MB] > >Da kam also durchaus einiges hinzu, insbesondere der optimierte Suchindex, der aktuell wie gesagt ein ausgelagerter Teil des Alt-Forums ist und nicht Teil der Datenbank. > >So oder so, die Datenmigration an sich funktionierte problemlos. Es wird also irgendwann der Tag kommen, an dem ich sage: [b:AB HEUTE IST ABRISSPARTY!] > >Dann wird das jüngste Maniac-Datenbackup für das neue Forum zur finalen Migration verwendet und ihr könnt das alte Forum in der Zwischenzeit nach Gusto auseinandernehmen. Bis dahin vergeht aber noch ein bisschen Zeit. > >Den restlichen Mai-Monat werde ich mich weiterhin im Backend und auf Datenbankseite aufhalten, bevor es Mitte Juni nach dem Urlaub mit großen Schritten im Frontend weitergehen wird. > >Greets >Rocco
mailbenachrichtigung?