Autor Beitrag
xck3001
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 32


D5 Pers, D7 Ent
BeitragVerfasst: Mi 31.08.05 12:51 
Hallo,

ich werde demnächst bei einem Web-Projekt mitarbeiten, bei dem sehr große Datenmengen (>400.000 Zeilen) verwaltet werden.
Bisher habe ich nur wie viele andere einfach mit PHP und MySQL gearbeitet, deshalb benötige ich jetzt mehr Fachwissen über z.B. PostgreSQL, vor allem aber über eine möglichst effiziente Datenbank-Modellierung, damit die Zugriffe stark optimiert sind.

Kennt jemand Bücher, die sich ausschließlich um Datenbanken mit großen Ausmaßen kümmern?
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Mi 31.08.05 14:18 
Erstmal: 400.000 Zeilen sind nicht viel. Das schaffst Du auch noch locker mit Access oder einer Textdatei... :wink:
IMHO sind riesige Datenmengen im GB und TB Bereich anzusiedeln. DAS ist dann ein Spass...

Und dann nimm eine richtige DB (mySQL ist keine), zB.: Firebird, oder PostgreSQL. Ich bevorzuge die MSDE, weil die wirklich gut und schnell ist, aber Geschmacksache. Ich habe auch nur Gutes über FireBird und PostgreSQL gehört, sodass es Dir überlassen bleibt...

Dann sorgst Du dafür, das deine DB ein Mittelding aus 2. und 3. Normalform ist. Du musst nicht stur alle Redundanzen eliminieren, das geht manchmal auf die Performance. Man benötigt 'Fingerspitzengefühl' und gesunden Menschenverstand.
Beispiel: Kundentabelle und deren Adressen: Bloss weil es zwei Kunden geben könnte, die im gleichen Haus wohnen undanz), muss man noch lange nicht die Tabelle in 'Kunden' und 'Kundenadressen' aufteilen, nur weil man die 3.NF wahren will.

Dann indizierst Du sorgfältig und beachtest dabei die Hauptsuchstrategien. Der MSSQL unterscheidet zwischen 'Clustered' und 'Nonclustered' Indizes. Der erste ist sehr schnell, gibts aber pro Tabelle nur 1x.

Hier 3 Grundregeln für Clustered Indizes:
1. Tabellen mit eindeutiger ID (numerisch!) : Nach dieser ID
2. Bei Master-Detail Beziehungen: In der Detailtabelle nach der MasterID
3. Wenn ihr nach Zeiträumen sucht ('Alle Datensätze zwischen X und Y'), dann nach dieser Spalte.
4. Wenn ihr Teilbereiche von Tabellen sortiert nach einer Spalte ausgeben wollt, dann nach dieser Spalte.

Die anderen Indizes konservativ auswählen: Weniger ist mehr, weil beim Insert/Update/Delete jedesmal alle Indizes einer Tabelle verändert werden.
xck3001 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 32


D5 Pers, D7 Ent
BeitragVerfasst: Do 01.09.05 10:42 
Vielen Dank, das hat schonmal sehr viel geholfen!