Forum
Öffentliche Foren |
FORUM: Spiele & Computer THEMA: SQL: Tabellenaufbau Kalender | |||||||
AUTOR | BEITRAG | ||||||
Carlos
RANG Deckschrubber |
#1 - 08.02 22:03 Ich bin gerade dabei so eine Art Kalender zu programmieren. Im Moment bin ich dabei mir Gedanken über den Aufbau der Datenbank zu machen. Ich habe n User, maximal m Einträge pro Tag und l Tage.Wenn die Datenbank jetzt 5 Jahre läuft(wird sie nicht) und z.B. 1000 User hätte(wird sie auch nicht), dann hätte ich bei geschätzten 200 Einträgen pro Jahr 5*200*1000 = 1.000.000 Einträge über die jede Anzeige, ob "Januar 2007" oder "14.02.2007 14.00 Uhr – 14.30 Uhr" (interne Optimierung mal ignoriert) rüberrattern müsste. Hat irgendwer eine Idee, wie man so etwas effizienter implementieren könnte? Ich steh irgendwie echt grad auf dem Schlauch. |
||||||
stud. iur. klaustopher
RANG Master of Luck |
#2 - 09.02 02:46 Tabelle:id, uid, datum, titel, uhrzeit PRIMARY_KEY(id) INDEX (uid, datum) und dann die Querys Alle Einträge eines Monats: SELECT * FROM tabelle WHERE uid!= 0 AND MONTH(datum)==1 AND YEAR(datum)==2007 Alle Einträge eines Users pro Monat: SELECT * FROM tabelle WHERE uid== $deine_id AND MONTH(datum)==1 AND YEAR(datum)==2007 usw usf ... wenn du vor so einen Query ein EXPLAIN schreibst, dann siehst du über welche indizies der Query ausgeführt wird, und wenn dort alle Argumente der WHERE Bedingung erfasst sind, dann ist dein Query gut, und dann arbeitest du mit guter Performance. Dann sind auch 1mio Einträge kein Ding |
||||||
*al!ve* - Vorbereitung aufs Urlaubssemester
RANG Master of Clanintern |
#3 - 09.02 10:45 Je nachdem wie komfortabel man das will kommt da aber schnell mehr. Sich periodisch wiederholende Termine (jede Woche, 14-Täglich, jeden ersten und dritte Montag im Monat, etc) mit Start- und Endzeitpunkt (also nur alle 14 Tage beginnend mit dem 9.2.07 bis zum 31.5.2007 oder sowas). Ausnahmeregeln für diese periodischen Termine (am 23.3.07 geht nicht weil xyz). |
||||||
horst
RANG Prophet of Clanintern |
#4 - 09.02 10:51 Wozu gibt's denn iCal |
||||||
*al!ve* - Vorbereitung aufs Urlaubssemester
RANG Master of Clanintern |
#5 - 09.02 11:13 Toll, jetzt wollt ich den Beitrag ändern ...iCal is blöd weil das sehr sehr groß und sehr sehr unhandlich wird, wenn man viele Termine hat. Nicht umsonst frickeln Mobiltelefone nicht mit iCal sondern SyncML herum. Da kann man immerhin definieren, welche Zeitabschnitte man betrachten will anstatt jedes mal den kompletten Kalender laden zu müssen. Auch "gib mir alle Einträge, die seit dem 1.2.07 in den Kalender eingetragen wurden" geht bei SyncML, bei iCal natürlich nicht. Folgendes wollte ich im anderen Post ändern:
|
||||||
horst
RANG Prophet of Clanintern |
#6 - 09.02 11:35 Ich schätze, dass Handy Hersteller damit "rumfrickeln", weil es genau dafür gedacht ist Und iCal ist nicht blöd. So. |
||||||
*al!ve* - Vorbereitung aufs Urlaubssemester
RANG Master of Clanintern |
#7 - 09.02 11:39 Für mich wäre das absolute Killerfeature eines Kalenders, wenn ich ihm per E-Mail Einträge zuschieben könnte.Eigentlich braucht so n Ding ohnehin ne Schnittstelle, um mit beliebigen Clients da drauf gehen zu können. Man *könnte* den Kalender ohne GUI basteln, lediglich irgend ne einfache, textbasierte Schnittstelle dazu entwerfen. Wenn die Basis gut gemacht ist und sicher und stabil läuft ist das schon viel Wert. Dazu darf man dan beliebige UIs schreiben. In eigenständiger Client meinetwegen in Java oder c#, n Webfront, n WAP-Front, n Thunderbird- oder Firefoxplugin oder eben was consolenähnliches, was via E-Mail Befehle von mir empfängt. *träum* Mail von mir: >show from 09.02.2007 0:00 to 09.02.2007 23:59 Mail vom System zurück, das denheutigen Tageskalender enthält Mail von mir: >enter description "Kneipenbesuch Strohalm" from 09.02.2007 to 31.12.2007 Mail vom System zurück: >Description entered: "Kneipenbesuch Strohalm" from 09.02.2007 to 31.12.2007 [id 12345] Mail von mir: >enter schedule "offene Bühne" from 07.02.2007 20:00 to 08.02.2007 2:00 for 12345 >enter schedule "offene Bühne" from 14.02.2007 20:00 to 15.02.2007 2:00 for 12345 >enter schedule "offene Bühne" from 21.02.2007 20:00 to 22.02.2007 2:00 for 12345 Mail vom System zurück: >Schedule entred: "offene Bühne" for "Kneipenbesuch Strohalm" from 07.02.2007 20:00 to 08.02.2007 2:00 >Schedule entred: "offene Bühne" for "Kneipenbesuch Strohalm" from 14.02.2007 20:00 to 15.02.2007 2:00 >Schedule entred: "offene Bühne" for "Kneipenbesuch Strohalm" from 21.02.2007 20:00 to 22.02.2007 2:00 Ach ja, so wär das geil ... |
||||||
horst
RANG Prophet of Clanintern |
#8 - 09.02 11:45 Outlook kan das sogar. Nennt sich "Meeting Request" |
||||||
*al!ve* - Vorbereitung aufs Urlaubssemester
RANG Master of Clanintern |
#9 - 09.02 11:58 Um den Hintergrund zu erklären: Ich will über das WAP-Portal von O2 von meinem Handy aus E-Mails an den Kalender verschicken bzw die E-Mails dieses Kalenders über eben das WAP-Portal lesen. 3€ monatlich für ne Mail-Flatrate wollen genutzt werden. Oder alternativ sich mal in die Materie Handyprogrammierung einarbeiten und n Java-App schreiben, das auf das O2 Wap-Portal verbindet und über den Mailingdienst eben diese Mails verfasst. |
||||||
*al!ve* - Vorbereitung aufs Urlaubssemester
RANG Master of Clanintern |
#10 - 13.02 19:42 Ja wie sieht s aus, is hier nix mehr los? |
||||||
masta // thomas
RANG Prophet of Clanintern |
#11 - 14.02 23:12 warum baust du dir dein programm dann nicht? |
||||||
*al!ve* - Vorbereitung aufs Urlaubssemester
RANG Master of Clanintern |
#12 - 15.02 08:59 Siehe SW/HW-Forum. Ich bin schon dabei. Die Tabellenstruktur steht und ein Projektemanagement mit Stundenabrechnung hab ich auch schon gedanklich integriert.Als Nächstes überleg ich mir, wie ich am sinnvollsten zwischen Model und View interagiere. Nachdem auf den Kalender nicht nur ne Web-App Zugriff haben soll sondern evtl auch ne standalone-App oder ne Firefox-Extension wird da irgend n Standard verwendet oder erfunden der auf Browser-Requests basiert. Bisher bin ich bei SOAP, aber das wäre doch recht viel Aufwand, da hinreichend viel zu implementieren. Vielleicht verschieb ich auch nur serialisierte Anfrage- und Antwortarrays über ne Socketverbindung.
Serialisieren und deserialisieren dürfte sich auch in anderen Sprachen recht leicht bewerkstelligen lassen und ich muss nicht n heiden Aufwand in das Ding stecken, ohne dass der Kalender überhaupt geht. N richtiger XML SOAP is mir wie gesagt zu groß und zu umfangreich. Diagramm folgt [edit] Grad über die Authentifizierung des Clients gegenüber dem Server nachgedacht. Ich will kein Klartextpasswort schicken, SSL kommt allerdings nicht in Frage. Der Server sendet einen Auth-Request mit folgendem Inhalt:
Der Server nimmt das Array auseinander und prüft, ob das MD5 stimmt. Daraufhin antwortet der Server mit einem TAN-Array aus 100 Zufallstokens und merkt sich die natürlich selbst. Der Client merkt sich alle 100 geschickten Zufallstokens. Weiterhin speichert sich der Server alle bisher verwendeten Zufallsrequesttokens eines Benutzers, damit ein und dieselbe Authentifikationsanfrage nicht mehrfach gestellt werden kann. Der Client schickt daraufhin jede Anfrage als
|
||||||