Freigeben über


Postgres-Kompatibilität

Von Bedeutung

Lakebase Autoscaling ist in Beta in den folgenden Regionen: eastus2, westeurope, westus.

Lakebase Autoscaling ist die neueste Version von Lakebase mit automatischer Berechnung, Skalierung bis Null, Verzweigung und sofortiger Wiederherstellung. Einen Featurevergleich mit Lakebase Provisioned finden Sie unter Auswahl zwischen Versionen.

Auf dieser Seite wird beschrieben, wie Lakebase Postgres mit dem Standard-Postgres kompatibel ist. Als verwalteter Postgres-Dienst gibt es einige Unterschiede und Einschränkungen.

Unterstützung der Postgres-Version

Lakebase Autoscaling unterstützt Postgres 16 und Postgres 17.

Unterstützung der Postgres-Erweiterung

Lakebase unterstützt zahlreiche Postgres-Erweiterungen. Die vollständige Liste finden Sie unter Postgres-Erweiterungen.

Sitzung, Arbeitsspeicher und Speicher

Sitzungskontext

Die Lakebase-Skalieren-auf-Null-Funktion schließt automatisch Leerlaufverbindungen nach einer bestimmten Inaktivitätsdauer.

Wenn Verbindungen geschlossen werden, gehen alle Elemente im Sitzungskontext, z. B. temporäre Tabellen, vorbereitete Anweisungen, Empfehlungssperren und NOTIFY- und LISTEN-Befehle , verloren.

Um zu vermeiden, dass Kontexte auf Sitzungsebene verloren gehen, können Sie die Skalierung auf Null deaktivieren. Dies bedeutet jedoch, dass die Berechnung 24/7 ausgeführt wird.

Gedächtnis

SQL-Abfragen und Indexbuilds können große Datenmengen generieren, die möglicherweise nicht in den Arbeitsspeicher passen. Die Größe der Berechnung bestimmt die verfügbare Arbeitsspeichermenge.

Nicht protokollierte Tabellen

Nicht protokollierte Tabellen sind Tabellen, die nicht in das Write-Ahead-Protokoll (Write-Ahead Log, WAL) von Postgres geschrieben werden. Diese Tabellen werden im lokalem Speicher des Rechners gespeichert und bleiben weder über Neustarts des Rechners hinweg bestehen noch wenn die Rechenleistung auf null skaliert. Dies ist anders als bei dem Standard-Postgres, wo unprotokollierte Tabellen nur im Falle einer abnormalen Prozessbeendigung gelöscht werden. Darüber hinaus sind nicht protokollierte Tabellen durch den verfügbaren lokalen Festplattenspeicherplatz begrenzt. Lakebase berechnet 20 GiB des lokalen Speicherplatzes oder 15 GiB multipliziert mit der maximalen Rechengröße (je nachdem, welcher Wert höher ist) für temporäre Dateien, die von Postgres verwendet werden.

Temporäre Tabellen

Temporäre Tabellen sind nur für die Lebensdauer einer Sitzung (oder optional eine Transaktion) vorhanden. Wie nicht protokollierte Tabellen werden sie im Compute-Lokalspeicher gespeichert und sind durch den lokalen Speicherplatz begrenzt.

Postgres-Protokolle

Der Zugriff auf Postgres-Protokolle wird nicht unterstützt.

Statistikauflistung

Statistiken, die vom kumulativen Statistiksystem der Postgres gesammelt werden, werden nicht gespeichert, wenn eine Berechnung (wo Postgres ausgeführt wird) auf Null skaliert wird. Um zu vermeiden, dass Statistiken verloren gehen, können Sie das Feature "Scale-to-Zero" deaktivieren. Das Deaktivieren der Skalierung auf Null bedeutet jedoch auch, dass die Berechnung 24/7 ausgeführt wird.

Parametereinstellungen für Postgres

Als verwalteter Postgres-Dienst werden viele Datenbankparameter basierend auf der Berechnungsgröße festgelegt. Zeigen Sie alle Einstellungen für Datenbankparameter an, indem Sie Folgendes verwenden:

SHOW ALL;

Sie können Parameter konfigurieren, die über einen user Kontext auf Sitzungs-, Datenbank- oder Rollenebene verfügen. Parameter können nicht auf Instanzebene konfiguriert werden.

  • Zeigen Sie Parameter an, die auf Sitzungs-, Datenbank- oder Rollenebene festgelegt werden können.

    SELECT name
    FROM pg_settings
    WHERE context = 'user';
    
  • Legen Sie einen Parameter für die Sitzung fest.

    SET maintenance_work_mem='1 GB';
    
  • Legen Sie einen Parameter für alle Sitzungen fest, die mit einer Datenbank verbunden sind.

    ALTER DATABASE lakebase SET maintenance_work_mem='1 GB';
    
  • Legen Sie einen Parameter für alle Sitzungen eines bestimmten Benutzers fest.

    ALTER USER "john@company.com" SET maintenance_work_mem='1 GB';
    

Datenbankcodierung und Sortierungen

Datenbankcodierung

Standardmäßig wird die Sortierung C.UTF-8 verwendet. C.UTF-8 unterstützt den vollständigen Bereich von UTF-8-codierten Zeichen.

Die UTF8-Codierung (Unicode- und 8-Bit-Codierung variabler Breite) wird ebenfalls unterstützt.

Führen Sie die folgende Abfrage aus, um die Codierung und Sortierung für Ihre Datenbank anzuzeigen:

SELECT
    pg_database.datname AS database_name,
    pg_encoding_to_char(pg_database.encoding) AS encoding,
    pg_database.datcollate AS collation,
    pg_database.datctype AS ctype
FROM
    pg_database
WHERE
    pg_database.datname = 'your_database_name';

Hinweis

In Postgres können Sie die Codierung oder Sortierung einer Datenbank nicht ändern, nachdem sie erstellt wurde.

Sortierungen

Bei einer Sortierung handelt es sich um ein SQL-Schemaobjekt, das einem SQL-Namen Gebietsschemas zuordnet, die von Bibliotheken bereitgestellt werden, die im Betriebssystem installiert sind.

Standardmäßig verwendet Lakebase die C.UTF-8 Sortierung. Ein anderer von Lakebase unterstützter Anbieter ist icu, der die externe ICU-Bibliothek verwendet.

Lakebase bietet eine vollständige Reihe vordefinierter Icu-Gebietsschemas , falls Sie gebietsschemaspezifische Sortier- oder Fallkonvertierungen benötigen.

  • Alle vordefinierten Gebietsschemas anzeigen:
SELECT * FROM pg_collation;
  • Erstellen einer Datenbank mit einem vordefinierten icu Gebietsschema:
CREATE DATABASE my_arabic_db
LOCALE_PROVIDER icu
icu_locale 'ar-x-icu'
template template0;
  • Geben Sie ein Gebietsschema für einzelne Spalten an:
CREATE TABLE my_ru_table (
    id serial PRIMARY KEY,
    russian_text_column text COLLATE "ru-x-icu",
    description text
);

Funktionalitätseinschränkungen

Rollen und Berechtigungen

  • Sie können nicht auf das Hostbetriebssystem zugreifen.
  • Sie können keine Verbindung mit Postgres superuserherstellen.
    • Alle Funktionen, die Berechtigungen oder direkten zugriff auf das lokale Dateisystem erfordern superuser , sind nicht zulässig.
    • Der databricks_superuser übernimmt die Rolle von Postgres superuser. Informationen zu den Berechtigungen, die dieser Rolle zugeordnet sind, finden Sie unter Verwalten von Rollen.

Replikation

Das Replizieren von Daten in oder aus einer Lakebase-Datenbank mithilfe der nativen logischen Replikation von Postgres ist noch nicht verfügbar.

Tablespaces

Lakebase unterstützt keine Postgres-Tabellenräume. Beim Versuch, einen Tabellenbereich mit dem CREATE TABLESPACE Befehl zu erstellen, tritt ein Fehler auf. Dies liegt an der verwalteten Cloudarchitektur von Lakebase, die keinen direkten Dateisystemzugriff für benutzerdefinierte Speicherorte zulässt.

Wenn Sie über vorhandene Anwendungen oder Skripts verfügen, die Tabellenräume zum Organisieren von Datenbankobjekten auf verschiedenen Speichergeräten verwenden, müssen Sie diese Verweise entfernen oder ändern, wenn Sie zu Lakebase migrieren.