2010-04-09 12 views
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).Datenbankentwurf für sehr große Datenmengen

Ich normalisierte meine Datenbank auf eine 3NF, und wegen der Art der Abfragen, die wir in Kombination verwenden wollten, kam ich auf 6 Tabellen ... Das Design sieht gut aus, aber jetzt, dass eine große Menge Daten sind in der Datenbank, die meisten Abfragen müssen mindestens 2 Tabellen zusammenkommen, um die Antwort zu erhalten, manchmal 3 oder 4. Zuerst hatten wir keine Leistungsprobleme, weil wir für Testzwecke nicht zu viel hinzugefügt hatten Daten in die Datenbank. Da wir nun sehr viele Daten haben, ist es sehr zeitaufwändig, extrem großen Tabellen beizutreten. 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.

Antwort

13

Da Sie gefragt, wie große Unternehmen (in der Regel) nähert sich dies:

Sie haben in der Regel eine dba (Datenbankadministrator), der lebt und atmet die Datenbank der Firma verwendet.

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

Sie reden nicht viel darüber, was für eine Abstimmung Sie getan haben, z.

  • Verwenden Sie MyISAM- oder InnoDB-Tabellen? Ihre Leistung (und nicht zuletzt ihre Funktionen) ist für verschiedene Workloads radikal unterschiedlich.
  • Sind die Tabellen entsprechend den von Ihnen ausgeführten Abfragen richtig indiziert?
  • ausführen EXPLAIN auf alle Ihre Abfragen - die Ihnen helfen, Schlüssel, die hinzugefügt/entfernt werden könnten, ob die richtigen Schlüssel ausgewählt sind, vergleichen Abfragen (SQL lässt Sie mit viel Weg, um die gleichen Dinge zu erreichen)
  • Haben hast du 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 abgestimmt, um dies zu nutzen?
  • Verwenden Sie ein Dateisystem und Raid-Setup für die Datenbank?
  • Manchmal ist ein wenig Entnormalisierung erforderlich.
  • Verschiedene Datenbankprodukte haben unterschiedliche Eigenschaften, MySQL kann für einige Worlkoads blitzschnell sein und für andere langsam.
+3

Vielen Dank für Ihre Antwort. Ehrlich gesagt, habe ich nicht an die Dinge gedacht, die du hier erwähnt hast. Jetzt wurde mir klar, dass ich viel ignoriert habe, als ich die Datenbank entwarf. Die Datenbank verwendet MyISAM. Ich werde über die Dinge lesen, die du erwähnt hast. Danke vielmals – Hossein

Verwandte Themen