Tabellentypen in elastischen Clustern in Azure Database for PostgreSQL – Flexible Server

Ein Cluster verfügt über fünf Tabellentypen. Jeder Typ speichert Daten auf Knoten unterschiedlich und dient verschiedenen Zwecken.

Verteilte Tabellen

Beim ersten und am häufigsten verwendeten Typ handelt es sich um verteilte Tabellen. Sie sehen wie normale Tabellen in SQL-Anweisungen aus, aber sie werden horizontal über Arbeitsknoten verteilt. Diese Partitionierung bedeutet, dass die Zeilen der Tabellen auf verschiedenen Knoten in Fragmenttabellen gespeichert werden, die als Shards bezeichnet werden.

Elastische Cluster führen nicht nur SQL- als auch DDL-Anweisungen (Data Definition Language) in einem Cluster aus. Wenn Sie das Schema einer verteilten Tabelle ändern, werden die Änderungskaskaden weitergegeben, um alle Klammern der Tabelle über Mitarbeiter hinweg zu aktualisieren. Sie müssen solche Vorgänge über eine Verbindung über Port 5432 ausführen.

Verteilte Spalte

Elastische Cluster verwenden algorithmisches Sharding, um Zeilen zu Shards zuzuweisen. Die Zuweisung erfolgt deterministisch basierend auf dem Wert einer Tabellenspalte, die als Verteilungsspalte bezeichnet wird. Der Clusteradministrator muss diese Spalte beim Verteilen einer Tabelle festlegen. Für Leistung und Funktionalität ist es wichtig, die richtige Entscheidung zu treffen.

Verweistabellen

Eine Referenztabelle ist ein Typ von verteilten Tabellen, deren gesamter Inhalt sich in einem einzelnen Shard befindet. Der Cluster repliziert den Shard auf jedem Worker. Abfragen für jeden Worker können lokal auf die Verweisinformationen zugreifen, und zwar ohne den Netzwerkmehraufwand für das Anfordern von Zeilen von einem anderen Knoten. Referenztabellen haben keine Verteilungsspalte, da es nicht notwendig ist, für jede Zeile separate Shards zu unterscheiden.

Referenztabellen sind in der Regel kleine Und speichern Daten, die für Abfragen relevant sind, die auf einem beliebigen Arbeitsknoten ausgeführt werden. Ein Beispiel hierfür sind Enumerationswerte wie Auftragsstatus oder Produktkategorien.

Lokale Tabellen

Wenn Sie einen elastischen Cluster verwenden, handelt es sich bei jedem Knoten um eine normale PostgreSQL-Datenbank. Sie können auf ihnen normale Tabellen erstellen und diese auf Wunsch nicht horizontal partitionieren.

Ein guter Kandidat für lokale Tabellen ist kleine administrative Tabellen, die nicht an Verknüpfungsabfragen teilnehmen. Ein Beispiel hierfür ist eine users-Tabelle für die Anmeldung und Authentifizierung von Anwendungen. Diese Art von Tabelle ist nur nützlich, wenn Sie nicht beabsichtigen, die Verbindung zwischen einem elastischen Cluster mit Port 7432 oder 8432 zu lasten.

Lokale verwaltete Tabellen

Flexible Cluster können Metadaten automatisch lokale Tabellen hinzufügen, wenn ein Fremdschlüsselverweis zwischen einer lokalen Tabelle und einer Referenztabelle vorhanden ist. Darüber hinaus können Sie lokal verwaltete Tabellen manuell erstellen, indem Sie die citus_add_local_table_to_metadata Funktion für normale lokale Tabellen ausführen. In Metadaten vorhandene Tabellen werden als verwaltete Tabellen betrachtet und können von jedem Knoten abgefragt werden. Citus kann eine Route zu dem Knoten herstellen, um Daten aus der lokalen verwalteten Tabelle abzurufen. Solche Tabellen werden in der citus_tables Ansicht als lokal angezeigt.

Schematabellen

Wenn Sie schemabasiertes Sharding verwenden, ordnet das System automatisch verteilte Schemas einzelnen Colocation-Gruppen zu. Wenn Sie Tabellen in diesen Schemas erstellen, konvertiert das System sie automatisch in kolokalisierte verteilte Tabellen ohne Shard-Schlüssel. Diese Tabellen sind Schematabellen und werden in der citus_tables Ansicht als Schema angezeigt.