Datenbankentwurf für sehr große Datenmengen

8

Ich arbeite an einem Projekt mit einer großen Menge an Daten von der köstlichen Website. Die verfügbaren Daten sind "Datum, Benutzer-ID, URL, Tags" (für jedes Lesezeichen).

Ich habe meine Datenbank auf eine 3NF normalisiert, und aufgrund der Art der Abfragen, die wir in Kombination verwenden wollten, kam ich auf 6 Tabellen ... Das Design sieht jedoch gut aus, jetzt, da eine große Menge an Daten ist in der Datenbank, die meisten Abfragen müssen mindestens 2 Tabellen zusammenkommen, um die Antwort zu bekommen, manchmal 3 oder 4. Zuerst hatten wir keine Leistungsprobleme, weil für das Testen von Angelegenheiten wir nicht zu viele Daten hinzugefügt hatten zur Datenbank. Nun, da wir viele Daten haben, ist es sehr zeitaufwändig, extrem große Tabellen zu verbinden. Für unser Projekt, das in Echtzeit sein muss, ist das ein Desaster.

Ich habe mich gefragt, wie große Unternehmen diese Probleme lösen. Es sieht so aus, als würde die Normalisierung von Tabellen die Komplexität erhöhen, aber wie verwaltet die große Firma große Datenmengen in ihren Datenbanken, verwenden sie nicht die Normalisierung?

Danke.

    
Hossein 09.04.2010, 23:35
quelle

1 Antwort

13

Da Sie gefragt haben, wie sich große Unternehmen (im Allgemeinen) damit beschäftigen:

Sie haben normalerweise einen dba (Datenbankadministrator), der die Datenbank, die das Unternehmen verwendet, lebt und atmet.

Das bedeutet, dass sie Leute haben, die alles wissen, um die Tabellen optimal zu entwerfen, die Abfragen / Indizes / OS / Server zu profilieren und zu optimieren, um zu wissen, welche Firmware-Version des RAID-Controllers Probleme für die Datenbank verursachen kann >

Sie sprechen nicht viel darüber, welche Art von Optimierung Sie vorgenommen haben, z. B.

  • Verwenden Sie MyISAM- oder InnoDB-Tabellen? Ihre Leistung (und nicht zuletzt ihre Funktionen) ist für verschiedene Workloads radikal unterschiedlich.
  • Sind die Tabellen ordnungsgemäß nach den von Ihnen ausgeführten Abfragen indiziert?
  • Führen Sie EXPLAIN bei all Ihren Abfragen aus - was Ihnen hilft, Schlüssel zu identifizieren, die hinzugefügt / entfernt werden könnten, ob die richtigen Schlüssel ausgewählt sind, Abfragen vergleichen (SQL gibt Ihnen viele Möglichkeiten, dieselben Dinge zu erreichen)
  • Haben Sie den Query-Cache abgestimmt? Bei einigen Workloads kann der Abfragecache (standardmäßig aktiviert) zu einer erheblichen Verlangsamung führen.
  • Wie viel Speicher hat Ihre Box und ist Mysql darauf abgestimmt, dies zu nutzen?
  • Verwenden Sie ein Dateisystem und Raid-Setup für die Datenbank?
  • Manchmal ist ein wenig Entnormalisierung erforderlich.
  • Unterschiedliche Datenbankprodukte werden unterschiedliche Eigenschaften haben, MySQL könnte für einige Worlkoads sehr schnell und für andere langsam sein.
leeeroy 09.04.2010, 23:57
quelle