Hi,
Ansatz 1: Ich dachte, ich nehm mir einfach noch eine kleine Datenbanktabelle in der ich die Kunden mit den Dokumenten verknüpfe und als Eigenschaft noch eine Readtime mit hinzupacke. Nachteil: Diese Tabelle wird schon bald eine riesige Menge an Datensätzen enthalten, was die Sache denke ich mal sehr verlangsamen wird.
nein. Dafür wurden Indexe erfunden. Diese Lösung ist schulbuchmäßig.
Ja, deswegen wars auch der erste Ansatz ;)
Aber stell Dir das bei einem Forum vor, wo es ja auch User / Posts gibt, die gelesen markiert werden sollen. Ab 10000 Postings bei 5000 Usern hat die DB-Table dann schon 50000000 Datensätze mit Readtime. Das ist dann doch irgendwann langsam, oder nicht? ;)
Ansatz 2: [...]
Wuaaaah.
Nachteil hier ist sicherlich, dass mir irgendwann die Länge des Textfeldes (ca. 65000) zum Verhängnis wird und ich dann auch eine schrecklich langsame Abfrage erhalten werde (vermutlich). Zudem hab ich keine Info mehr über die ReadTime des Kunden.
Dies lässt sich nicht sinnvoll abfragen oder verwalten. Einige DBMSse kennen zwar Bitmap-Indexe, aber schön ist das ganz sicher nicht.
Das ist wohl richtig (dass es nicht sauber ist), aber abfragen kann man es ja doch recht simple (siehe Beispiel). Wie gesagt, es ist halt begrenzt und das stört mich. Und ich vermute Zugriffe auf Textfelder sind wesentlich langsamer ... :(
Gibt es für dieses Problem schon einen praxistauglichen Entwurf,
Kreuztabelle. Sehr eindeutige Sache.
Kreuztabelle. Ich muss dazusagen, ich nutze MySQL. Also nix mit Pivot-Funktion ;) - Aber eine "Kreuztabelle" in der Form mit 0|1 ist ja noch über ein IF realisierbar. Nur, ist eben genau das nicht sehr langsam?! Gehen wir von den 50000 Dokumenten und 1000 Usern aus.
Danke für die Anregungen, ich hoffe auf weitere :)
Gruss
Stefan