Partition (Datenbank)

Partitionierungsoptionen auf einer Tabelle in MySQL in der Umgebung der Administrator Werkzeug.

A Trennwand ist eine Aufteilung einer logischen Datenbank oder seine Bestandteile in unterschiedliche unabhängige Teile. Die Datenbankpartitionierung wird normalerweise für die Verwaltungsfähigkeit durchgeführt. Leistung oder Verfügbarkeit[1] Gründe oder für Lastverteilung. Es ist beliebt in Verteilte Datenbankverwaltungssysteme, wobei jede Partition über mehrere Knoten verteilt sein kann, wobei Benutzer am Knoten lokale Transaktionen auf der Partition durchführen. Dies erhöht die Leistung für Standorte mit regelmäßigen Transaktionen mit bestimmten Ansichten von Daten und gleichzeitig die Verfügbarkeit und Sicherheit.

Verteilungskriterien

Aktuelles High-End Relationale Datenbankverwaltungssysteme Bereitstellung verschiedener Kriterien zur Aufteilung der Datenbank. Sie nehmen a Trennungsschlüssel und weisen Sie eine Partition zu, die auf bestimmten Kriterien basiert. Einige häufige Kriterien umfassen:

  • Reichweite Partitionierung: Wählt eine Partition aus, indem er feststellt, ob sich der Partitionierungsschlüssel innerhalb eines bestimmten Bereichs befindet. Ein Beispiel könnte eine Partition für alle sein Reihen wo der "Zipcode" Säule hat einen Wert zwischen 70000 und 79999. Es verteilt Tupel basierend auf den Wertintervallen (Bereiche) eines Attributs. Zusätzlich zur Unterstützung der exakten Abfragen (wie im Hashing) ist es für Reichweite von Abfragen gut geeignet. Beispielsweise kann eine Abfrage mit einem Prädikat „A zwischen A1 und A2“ durch die einzigen Knoten, die Tupel enthalten, bearbeitet werden.
  • Listen Sie die Partitionierung auf: Eine Partition wird eine Liste von Werten zugewiesen. Wenn der Partitionierungsschlüssel einen dieser Werte hat, wird die Partition ausgewählt. Zum Beispiel alle Zeilen, bei denen die Spalte Land entweder Island, Norwegen, Schweden, Finnland oder Dänemark könnte eine Partition für die bauen nordische Länder.
  • Zusammengesetzte Partitionierung: Ermöglicht bestimmte Kombinationen der oben genannten Partitionierungsschemata, indem zum Beispiel zuerst eine Reichweite und dann eine Hash -Partitionierung angewendet wird. Konsequentes Hashing Könnte als zusammengesetzte Hash und Listen -Partitionierung angesehen werden, bei der der Hash den Schlüsselraum auf eine Größe reduziert, die aufgelistet werden kann.
  • Rund-Robin-Partitionierung: Die einfachste Strategie gewährleistet eine einheitliche Datenverteilung. Mit n Partitionen, die iDas Tupel in Insertionsreihenfolge wird der Partition zugewiesen (i mod n). Diese Strategie ermöglicht den sequentiellen Zugriff auf eine Beziehung parallel. Der direkte Zugriff auf einzelne Tupel, basierend auf einem Prädikat, erfordert jedoch den Zugriff auf die gesamte Beziehung.
  • Hash -Partitionierung: gilt a Hash-Funktion zu einem Attribut, das die Partitionsnummer ergibt. Diese Strategie ermöglicht es, dass genaue Match-Abfragen im Auswahlattribut von genau einem Knoten und allen anderen Abfragen verarbeitet werden, die von allen Knoten parallel verarbeitet werden können.

Partitionierungsmethoden

Die Partitionierung kann durchgeführt werden, indem entweder separate kleinere Datenbanken erstellt werden Tische, Indizes, und Transaktion Protokolle) oder durch Spalten ausgewählter Elemente, zum Beispiel nur eine Tabelle.

  • Horizontale Partitionierung beinhaltet, verschiedene Zeilen in verschiedene Tabellen zu setzen. Zum Beispiel Kunden mit Postleitzahlen Weniger als 50000 werden bei KundenleAst gespeichert, während Kunden mit Postleitzahlen größer oder gleich 50000 im Kundenwest gespeichert werden. Die beiden Partitionstische sind dann Kunden und Kundenwest, während a Aussicht mit einer Union Könnte über beide erstellt werden, um alle Kunden vollständig zu überzeugen.
  • Vertikale Partitionierung Beinhaltet das Erstellen von Tabellen mit weniger Spalten und Verwendung zusätzlicher Tabellen zum Speichern der verbleibenden Spalten.[1] Im Allgemeinen ist diese Praxis als bekannt als als Normalisierung. Die vertikale Partitionierung erstreckt sich jedoch weiter und partitiert Säulen, selbst wenn sie bereits normalisiert sind. Diese Art der Partitionierung wird auch als "Zeilenaufteilung" bezeichnet, da Zeilen durch ihre Spalten geteilt werden und möglicherweise explizit oder implizit durchgeführt werden. Es können unterschiedliche physikalische Maschinen verwendet werden, um die vertikale Partitionierung zu realisieren: Das Speichern von selten verwendeten oder sehr breiten Säulen, beispielsweise eine erhebliche Menge an Speicher auf einer anderen Maschine aufzunehmen, ist eine Methode zur vertikalen Partitionierung. Eine gemeinsame Form der vertikalen Partitionierung besteht darin, statische Daten aus dynamischen Daten zu teilen, da ersterer schneller zugänglich ist als letztere, insbesondere für eine Tabelle, in der die dynamischen Daten nicht so häufig wie die statische Verwendung verwendet werden. Das Erstellen einer Ansicht in den beiden neu erstellten Tabellen stellt die ursprüngliche Tabelle mit einer Leistungsstrafe wieder her, aber der Zugriff auf die statischen Daten allein zeigt eine höhere Leistung. EIN Spaltendatenbank Kann als eine Datenbank angesehen werden, die vertikal partitioniert wurde, bis jede Spalte in ihrer eigenen Tabelle gespeichert ist.

Siehe auch

Verweise

  1. ^ a b "Vertikale Partitionierungsalgorithmen für Datenbankdesign"von Shamkant Navathe, Stefano Ceri, Gio Wiederhold und Jinglie Dou, Stanford University 1984