2016-07-14 21 views
1

Wir haben eine große Tabelle in unserer Postgres-Produktionsdatenbank, die wir mit ausländischen Tabellen und Vererbung "sharding" beginnen wollen.(Wie) Ist es möglich, Tabellen in fremde Tabellen in Postgres zu konvertieren?

Die gewünschte Architektur wird eine 1 (leere) Tabelle haben, die das Schema und mehrere fremde Tabellen definiert, die von der leeren "Eltern" -Tabelle erben. (möglich mit Postgres 9.5)

Ich fand diesen gut geschriebenen Artikel https://www.depesz.com/2015/04/02/waiting-for-9-5-allow-foreign-tables-to-participate-in-inheritance/, der alles erklärt, wie man es von Grund auf neu macht. Meine Frage ist, wie man die erforderliche Migration von Daten auf ein Minimum reduzieren kann.

Wir haben jetzt diese 100 + GB Tabelle, die unser erster "Shard" werden sollte. Und in Zukunft werden wir regelmäßig neue "Shards" hinzufügen. Irgendwann werden die älteren Shards in einen anderen Tablespace verschoben (auf billigerer Hardware, da sie weniger wichtig werden).

Meine Frage jetzt: Gibt es eine Möglichkeit, eine vorhandene Tabelle als Fremdtabelle zu "ändern" statt?

Antwort

0

Keine Möglichkeit, alter Tabelle zu verwenden, um dies zu tun.

Sie müssen es grundsätzlich manuell tun. Dies ist nicht anders als Tabellenpartitionierung. Sie erstellen Ihre Partitionen, Sie laden die Daten. Sie leiten Lese- und Schreibvorgänge in die Partitionen um.

Jetzt in Ihrem Fall, in Bezug auf das Sharding gibt es eine Reihe von Tools, die ich betrachten würde, um dies weniger schmerzhaft zu machen. Wenn Sie zuerst sicherstellen, dass Ihre Tabellen wie gewünscht aufgeteilt werden, können Sie eine logische Replikationslösung wie Bucardo verwenden, um die Schreibvorgänge zu replizieren, während Sie alles verschieben.

Es gibt einige andere Ansätze (parallelisierte Leser und Schreiber), die Ihnen einige Zeit auf Kosten von db Last sparen können, aber das sind Nischen-Tools.

Es gibt keine native Lösung für das Shard-Management von PostgreSQL-Standard (und ich weiß nicht genug über Postgres-XL in dieser Hinsicht, um zu wissen, wie gut es sich ändernde Shard-Kriterien handhaben kann). Aber mit etwas Arbeit und Wissen ist so ziemlich alles möglich.

+0

Das habe ich mir gedacht. Danke für die Antwort! –