Was ist eine große Datenbank?

80

Ok, dumme Frage, die ich kenne, aber ich sehe den nebulösen Kommentar 'eine große Datenbank' sowie kleine und mittlere und ich frage mich, was das genau bedeutet. Kann jemand definieren, was eine kleine, mittlere und große Datenbank für uns SQL-Neulinge ist?

Randin
quelle
Entschuldigung, du hast versagt, du bekommst nicht +5 für eine dumme Frage ;-).
Toon Krijthe
Ich werde dies als subjektiv markieren. Lassen Sie mich wissen, wenn Sie nicht einverstanden sind.
James McMahon
Interessante Frage übrigens, ich habe neulich nur darüber nachgedacht.
James McMahon
2
Ja, das Erlernen von SQL und Datenbankdesign hat mir geholfen, es ins rechte Licht zu rücken.
Randin
Ich habe mich in eine große Datenbank hineingelockt. Ich mag die Antwort von @dkretz, die es in Bezug auf Leistung und Codierung berücksichtigt.
Milo LaMar

Antworten:

105

Es gibt keinen Schwellenwert, bei dem eine kleine Datenbank mittel oder eine mittlere Datenbank groß wird. Wenn ich diese Begriffe höre, denke ich im Allgemeinen an bestimmte Größenordnungen in Bezug auf die Gesamtzahl der gespeicherten Datensätze.

  • Klein: 10 5 oder weniger Datensätze.
  • Medium: 10 5 bis 10 7 Datensätze.
  • Groß: 10 7 bis 10 9 Datensätze.
  • Sehr groß: 10 9 oder mehr Datensätze.

Wie Poster dkretz vorgeschlagen hat, können Sie auch über die Eigenschaften jeder Art von Datenbank nachdenken. Wenn ich es so kategorisiere, würde ich sagen:

  • Klein: Leistung ist kein Problem. Ihre Abfragen werden ohne besondere Optimierungen einwandfrei ausgeführt. Sie sehen nur einen geringfügigen Leistungsunterschied, wenn Sie Front-Line-Verbesserungen wie Indizes verwenden.

  • Mittel: Ihre Datenbank verfügt wahrscheinlich über ein oder mehrere Mitarbeiter, die in Teilzeit für die Wartung und Pflege zuständig sind. Diese Personen achten auf den Zustand der Datenbank. Ihre primäre administrative Verantwortung besteht darin, inakzeptable Leistungsprobleme zu vermeiden und Ausfallzeiten zu minimieren.

  • Groß: Hat wahrscheinlich engagierte Mitarbeiter, deren Aufgabe es ist, an der Datenbank zu arbeiten und die Leistung zu verbessern sowie sicherzustellen, dass Anwendungsänderungen während der gesamten Lebensdauer der Datenbank keinen Schemabruch verursachen. Metriken über den Zustand und den Status der Datenbank werden genau überwacht. Um Optimierungen zu verstehen und durchzuführen, ist erhebliches Fachwissen erforderlich.

  • Sehr groß: Die Datenbank speichert große Mengen an Informationen, auf die leicht zugegriffen werden muss. Leistungsoptimierungen sind unbedingt erforderlich, um aus jeder Abfrage die letzte Unze Geschwindigkeit herauszuholen, und ohne sie wäre die Datenbank viel weniger nutzbar oder sogar unmöglich zu verwenden. Die Datenbank verwendet möglicherweise ausgefeilte oder innovative Replikations- oder Clustering-Techniken, wodurch die Grenzen der aktuellen Technologie überschritten werden.

Beachten Sie, dass diese völlig subjektiv sind und dass jemand möglicherweise eine absolut legitime alternative Definition von "groß" hat.

John Feminella
quelle
Hervorragende Antwort, fast genau das, was ich gesagt hätte, was angesichts der Subjektivität und der beweglichen Torpfosten interessant ist.
Peter Wone
Hervorragende Antwort John. Sehr prägnant. Ich habe versucht, dasselbe zu erklären, bin aber einen anderen und komplexeren Weg
gegangen
Ich mag den zweiten Teil der Antwort, aber der erste Teil, der die Größe mit der Anzahl der Datensätze in Beziehung setzt, ist meiner Meinung nach etwas irreführend. Sie könnten eine wirklich einfache Tabelle mit Tonnen von Datensätzen haben, oder eine kleine Anzahl von Datensätzen, aber eine sehr komplizierte Organisation von Tabellen.
Outlaw Programmer
Eigentlich würde ich sagen, dass eines Ihrer beiden Beispiele durchaus als groß gelten könnte. Schlagen Sie vor, dass ein riesiges Eigenschaftsschlüsselwörterbuch, das aus einer einzelnen Tabelle mit 50 Millionen Datensätzen besteht, tatsächlich eine "kleine Datenbank" ist?
John Feminella
Ich würde sagen, es ist legitim, das Gegenteil auch als klein zu betrachten. Betrachten Sie umgekehrt eine enorm komplexe Schemastruktur, die aus 10.000 Tabellen besteht, aber insgesamt nur 5 Zeilen enthält. Ist das eine "große Datenbank"?
John Feminella
27

Eine Möglichkeit, dies herauszufinden, besteht darin, Ihre Testabfragen zu beobachten.

In einer kleinen Datenbank spielen Indizes keine Rolle.

Bei einer mittleren Datenbank dauern Abfragen länger als eine Sekunde, wenn kein geeigneter Index vorhanden ist.

In einer großen Datenbank dauert die Optimierung von Abfragen häufig Stunden. Dabei wird eine Kombination aus Abfragedesign, Indexänderung und vielen Testzyklen verwendet.

dkretz
quelle
@le dorfier: Übrigens, ich glaube, Sie hatten Recht mit dem Atom-Update mit Max Select (obwohl ich es immer noch nicht so machen würde)
Mitch Wheat
4

Große Datenbanken zwingen Sie dazu, die Verwendung relationaler Datenbanken einzustellen.

Mit anderen Worten, eine normalisierte, relationale Datenbank, in der alle Indizes der Welt Ihnen aufgrund der massiven JOINs nicht helfen können, Ihre Anforderungen an die Antwortzeit zu erfüllen.

Wenn Sie jemals relationale Datenbanken für etwas anderes aufgeben mussten, sind Sie entweder ein schlechter Datenbankentwickler, haben keinen Experten-DBA oder eine sehr große Datenbank.

Ader
quelle
3

"Große Datenbank" ist in der Tat ein nebulöses Konzept. In den Antworten auf diese Frage sind bereits sehr unterschiedliche Antworten und Meinungen enthalten. Einige Ansätze zur Definition von „kleinen“, „mittleren“ und „großen“ Datenbanken sind möglicherweise sinnvoller als andere, ABER DANN halte ich jede Definition für richtig, wahr und gültig.

Einige Definitionen sind sinnvoller als andere, da sie sich auf verschiedene Aspekte konzentrieren, die für das Design, die Programmierung, die Verwendung, die Wartung und die Verwaltung einer Datenbank von Bedeutung sind, und diese verschiedenen Aspekte sind für eine verwendbare Datenbank wirklich wichtig. Es kommt einfach vor, dass all diese Aspekte durch das nebulöse Konzept der „Datenbankgröße“ beeinflusst werden.

Bedeutet dies, dass es keine Rolle spielt, ob Sie definieren können, ob eine bestimmte Datenbank groß ist oder nicht?

Sicherlich nicht. Dies bedeutet, dass Sie das Konzept unterschiedlich anwenden und gleichzeitig verschiedene Design-, Betriebs- und Verwaltungsaspekte Ihrer Datenbank bewerten. Es bedeutet auch, dass dieses Konzept jedes Mal nebulös sein wird.

Beispiel: Die Datenbankindexstrategie (ein Aspekt des Datenbankdesigns) wird durch die Datensatzanzahl für jede Tabelle (ein Maß für die „Größe“), die Datensatzgröße mal die Datensatzanzahl (ein weiteres Maß für die „Größe“) und die Abfrage Vs beeinflusst . Verhältnis von Erstellungs-, Aktualisierungs- und Löschvorgängen (ein Aspekt der Datenbanknutzung).

Die Antwortzeiten für Abfragen sind besser, wenn Indizes für Tabellen mit einer großen Anzahl von Datensätzen verwendet werden. Abhängig von der Art Ihrer WHERE-, ORDER BY- und Datensatzaggregationsklauseln benötigen Sie möglicherweise mehrere Indizes für bestimmte Tabellen.

Das Erstellen, Aktualisieren und Löschen wird durch die Erhöhung der Anzahl der Indizes für die betroffenen Tabellen negativ beeinflusst. Mehr Indizes für eine betroffene Tabelle bedeuten mehr Änderungen, die das RDBMS durchführen muss, und mehr Zeit und Ressourcen, um diese Änderungen anzuwenden.

Wenn Ihr RDBMS mehr Zeit für die Anwendung dieser Änderungen benötigt, werden die Sperren auch länger beibehalten, was sich auf die Antwortzeiten auswirkt, die andere Abfragen gleichzeitig an das System senden.

Wie balancieren Sie die Menge und das Design Ihrer Indizes? Woher wissen Sie, ob Sie einen zusätzlichen Index benötigen und ob Sie durch Hinzufügen dieses Index keine großen negativen Auswirkungen auf die Antwortzeiten von Abfragen haben? Antwort: Sie testen und profilieren Ihre Datenbank anhand einer Ziellast gemäß Ihren Last- / Leistungsanforderungen und analysieren die Profildaten, um festzustellen, ob weitere Optimierungen / Neugestaltungen / Indizes erforderlich sind.

Für verschiedene Query Vs. sind unterschiedliche Indexstrategien erforderlich. Verhältnisse zum Erstellen / Aktualisieren / Löschen von Vorgängen. Wenn Ihre Datenbank stark ausgelastet ist, aber nur selten aktualisiert wird, ist die Leistung für die gesamte Anwendung besser, wenn Sie jeden Index hinzufügen, der die Antwortzeiten für Abfragen verbessert. Wenn Ihre Datenbank jedoch ständig aktualisiert wird, aber keine großen Abfragevorgänge ausgeführt werden, ist die Leistung besser, wenn Sie weniger Indizes verwenden.

Es gibt natürlich noch andere Aspekte: Datenbankschema-Design, Speicherstrategie, Netzwerkdesign, Sicherungsstrategie, Gespeicherte Prozeduren / Trigger / usw. Programmierung, Anwendungsprogrammierung (gegen die Datenbank) usw. Alle diese Aspekte werden durch unterschiedliche Konzepte der „Größe“ (Datensatzgröße, Datensatzanzahl, Indexgröße, Indexanzahl, Schemadesign, Speichergröße usw.) unterschiedlich beeinflusst.

Ich hätte gerne mehr Zeit, da dieses Thema faszinierend ist. Ich hoffe, dieser kleine Beitrag dient Ihnen als Ausgangspunkt in dieser faszinierenden Welt von SQL.

vmarquez
quelle
3

Für diese Definition müssen Sie den Hardware-Fortschritt berücksichtigen:

  1. Kleine Datenbank: Der Arbeitssatz passt in den physischen RAM eines einzelnen Commodity-Servers (jetzt ca. 16 GB).

  2. Mittlere Datenbank: Passt in eine einzelne oder mehrere (über RAID) Standardfestplatten auf einem einzelnen Computer (jetzt bis zu mehreren TBs)

  3. Große Datenbank: Daten müssen auf mehrere Commodity-Server verteilt werden, damit sie passen (jetzt bis zu mehreren PBs).

obecalp
quelle
2

Laut Wikipedia-Artikel über sehr große Datenbanken

Eine sehr große Datenbank oder VLDB ist eine Datenbank, die eine extrem hohe Anzahl von Tupeln (Datenbankzeilen) enthält oder einen extrem großen physischen Speicherplatz im Dateisystem belegt. Die gebräuchlichste Definition von VLDB ist eine Datenbank, die mehr als 1 Terabyte belegt oder mehrere Milliarden Zeilen enthält, obwohl sich diese Definition natürlich im Laufe der Zeit ändert.

Karlcow
quelle
2

Wenn Sie eine Datenbank haben, die groß genug ist, dass Sie sie nicht einfach "sichern" können, um eine Entwicklungs- oder Testbox einzurichten, haben Sie wahrscheinlich eine "große Datenbank".

pearcewg
quelle
0

Ich denke, so etwas wie Wikipedia oder die US-Volkszählungsdaten sind eine "große" Datenbank. Meine persönlichen Adresslisten oder Aufgaben sind eine kleine Datenbank. Eine mittelgroße Datenbank liegt dazwischen.

Sie können versuchen, die Größe anhand der Anzahl der benötigten Server zu definieren. Eine kleine Datenbank ist eine Komponente einer Anwendung, die Sie auf Ihrem Desktop ausführen. Eine mittelgroße Datenbank ist irgendwo ein einzelner MySQL-Server (was auch immer), und für eine große Datenbank sind mehrere Server mit einer Art Replikations- / Failover-Unterstützung erforderlich.

Zoredache
quelle