Ein großer Tisch oder viele kleine Tische

Lesezeit: 3 Minuten

Benutzer-Avatar
Lukas

Ich entwickle eine Website (WordPress MU – basiert). Auf dieser Website können Benutzer ihre eigenen Blogs erstellen, ihre eigenen Blogs vollständig anpassen (Hintergrund ändern, Artikel schreiben…), mehr Benutzer zu ihren Blogs hinzufügen…

Die häufigste Abfrage besteht darin, Artikel eines Blogs abzurufen. 2 verschiedene Blogs sind fast nicht verwandt.

Die Informationen der Blogs können auf zwei Arten in der Datenbank gespeichert werden:

  1. Ein paar Tabellen mit allen Informationen, jeder Blog wird durch blog_id identifiziert.
  2. Viele Tischgruppen. Jede Tabellengruppe enthält alle Informationen eines Blogs. Mehr Blogs, mehr Tabellen erstellen.

Meine Fragen sind:

  1. Was ist leistungsmäßig besser?
  2. WordPress verwendet tatsächlich das zweite Design. Wenn die Anzahl der Blogs sehr groß ist (Tausende), kann die Anzahl der Tabellen Zehntausende betragen. Verursacht dies irgendwelche Probleme? Gibt es eine Begrenzung der Anzahl der Tabellen einer MySQL-Datenbank?

  • dies könnte Sie etwas aufklären – stackoverflow.com/questions/4419499/…

    – Jon Schwarz

    14. September 2011 um 18:38 Uhr

  • Danke f00, es ist wirklich hilfreich. Ich habe das nicht gefunden, bevor ich diese Frage gestellt habe. Übrigens, hast du eine Idee zu meiner zweiten Frage?

    – Lukas

    15. September 2011 um 15:21 Uhr

Benutzer-Avatar
Adam Hopkinson

Entscheiden Sie sich für Option Nr. 1 – sie heißt Normalisierung.

  • wp_blogs speichert nur die Blog-ID, die Blog-URL … Die meisten Informationen eines Blogs werden in Tabellen gespeichert, die für dieses Blog erstellt wurden (z. B. wp_1_posts, wp_1_users, wp_1_options …).

    – Lukas

    14. September 2011 um 19:10 Uhr

  • Mein Fehler. Aber Sie sollten sich unbedingt für Option #1 entscheiden!

    – Adam Hopkinson

    14. September 2011 um 19:30 Uhr


Aus Gründen der Code-Wartbarkeit bitte ich Sie, sich für Option 1 zu entscheiden.

  • Sie wetten. „Drang“, vielleicht? Wie wäre es mit “beten”? 🙂

    – Adriano Carneiro

    14. September 2011 um 18:47 Uhr

  • Ich dachte: “Aus Liebe zu allem, was heilig ist, und um Mitleid mit denen zu haben, die folgen, wähle Option 1.” könnte auch gehen… 😉

    – Nicht ich

    14. September 2011 um 18:55 Uhr

  1. Beide sollten bei entsprechender Indizierung eigentlich sehr ähnlich abschneiden
  2. Problematischer ist die Verwaltung einer großen Anzahl von Tabellen, insbesondere bei Schemaänderungen

  • 1. Ich verstehe nicht ganz, was Sie mit “bei entsprechender Indexierung” gemeint haben? Wird die Datenbank für beide Designs auf die gleiche Weise (durch MySQL) indiziert? Ich dachte, dass WordPress das zweite Design verwendet, weil die Blogs fast nicht miteinander verbunden sind, das Aufteilen in viele Tabellen könnte es schneller machen. 2. Ja, Sie haben recht. Ich verwende phpMyAdmin und es funktioniert nicht richtig, wenn die Anzahl der Tabellen mehr als 10000 beträgt.

    – Lukas

    14. September 2011 um 19:18 Uhr


  • @Jack Wenn eine Tabelle richtig entworfen und indiziert ist, hat die Größe der Tabelle sehr wenig mit der Geschwindigkeit des Abrufens (der gleichen Anzahl von) Datensätzen zu tun. Das ist der Zweck der Indizierung – die Suchzeit auf eine O(log n)-Operation zu reduzieren, diese wächst langsam im Vergleich zu n. Unter der Annahme, dass die Tabelle einen Schlüssel hat, der es ermöglicht, dass der Index zuerst nach Blog “partitioniert” wird, sollte der Abruf weitgehend äquivalent sein. Es ist normalerweise eine binäre Suche. en.wikipedia.org/wiki/Twenty_Questions

    – Cade Roux

    14. September 2011 um 19:24 Uhr

Benutzer-Avatar
Mathieu Devost

Ich habe einige Suchen durchgeführt und ich glaube, ich habe häufiger Leute gesehen, die sagten, dass sie eine Tabelle mit vielen Daten bevorzugen würden, anstatt viele Tabellen. Sie sagen, es ist einfacher zu pflegen.

Hier sind einige Texte zur Datenbanknormalisierung:

http://support.microsoft.com/kb/283878
http://www.phlonx.com/resources/nf3/

Viel Glück!

1139550cookie-checkEin großer Tisch oder viele kleine Tische

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy