Entwickler-Ecke

Bücher - Datenbank-Modellierung mit riesigen Datenmengen


xck3001 - Mi 31.08.05 12:51
Titel: Datenbank-Modellierung mit riesigen Datenmengen
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 - 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 - Do 01.09.05 10:42

Vielen Dank, das hat schonmal sehr viel geholfen!