メインコンテンツまでスキップ

Postgresとの互換性

このページでは、Lakebase Postgres が標準の Postgres とどのように互換性があるかについて説明します。マネージド Postgres サービスとしては、いくつかの違いと制限があります。

Postgresのバージョンサポート

Lakebase オートスケールはPostgres 16、Postgres 17、およびPostgres 18をサポートしています。Postgres 17がデフォルトバージョンです。Postgres 18を使用するには、新しいプロジェクトを作成する際にそれを選択します。

Postgres拡張機能のサポート

Lakebase は多数の Postgres 拡張機能をサポートしています。完全なリストについては、 Postgres 拡張機能を参照してください。

セッション、メモリ、ストレージ

セッションコンテキスト

Lakebase のスケール トゥ ゼロ機能は、一定期間アクティビティがないとアイドル状態の接続を自動的に閉じます。

接続が閉じられると、一時テーブル、準備されたステートメント、アドバイザリ ロック、 NOTIFYコマンドやLISTENコマンドなど、セッション コンテキスト内のすべてのものが失われます。

セッション レベルのコンテキストが失われないようにするには、scale-to-zero を無効にすることができます。ただし、これを実行すると、コンピュートは 24 時間 365 日実行されることになります。

メモリ

SQL クエリとインデックス構築により、メモリに収まらない大量のデータが生成される場合があります。コンピュートのサイズによって、使用可能なメモリの量が決まります。

ログに記録されないテーブル

ログに記録されないテーブルは、Postgres の先行書き込みログ (WAL) に書き込まれないテーブルです。これらのテーブルはコンピュートのローカル ストレージに保存され、コンピュートが再起動されるか、コンピュートがゼロにスケールされた場合には保持されません。 これは、ログに記録されないテーブルが異常なプロセス終了の場合にのみ切り捨てられる標準の Postgres とは異なります。さらに、ログを取らないテーブルはコンピュートのローカル ディスク容量によって制限されます。 Lakebase コンピュートは、Postgres が使用する一時ファイルに 20 GiB のローカル ディスク領域、または最大コンピュート サイズの 15 GiB 倍 (いずれか大きい方) を割り当てます。

一時テーブル

一時テーブルは、セッション (またはオプションでトランザクション) の有効期間中のみ存在します。ログを取らないテーブルと同様に、これらはコンピュートのローカル ストレージに保存され、ローカル ディスク容量によって制限されます。

Postgresログ

Postgres ログへのアクセスはサポートされていません。

統計収集

Postgres累積統計システムによって収集された統計は、コンピュート (Postgres 実行) がゼロにスケールされると保存されません。 統計情報が失われないようにするには、スケール トゥ ゼロ機能を無効にすることができます。ただし、ゼロへのスケールを無効にすると、コンピュートが年中無休で実行されることになります。

Postgresパラメーターの設定

マネージド Postgres サービスとして、多くのデータベースはコンピュート サイズに基づいて設定されます。 以下を使用して、データベース設定をすべて表示します。

SQL
SHOW ALL;

セッション、データベース、またはロール レベルでuserコンテキストを持つパラメーターを構成できます。 インスタンス レベルでパラメーターを構成することはできません。

  • セッション、データベース、またはロール レベルで設定できるパラメーターを表示します。

    SQL
    SELECT name
    FROM pg_settings
    WHERE context = 'user';
  • セッションにパラメーターを設定します。

    SQL
    SET maintenance_work_mem='1 GB';
  • データベースに接続されているすべてのセッションに対してパラメーターを設定します。

    SQL
    ALTER DATABASE databricks_postgres SET maintenance_work_mem='1 GB';
  • 特定のユーザーからのすべてのセッションに対してパラメーターを設定します。

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

データベースのエンコーディングと照合

データベースエンコーディング

デフォルトでは、C.UTF-8 照合が使用されます。C.UTF-8 は、UTF-8 でエンコードされた文字の全範囲をサポートします。

UTF8 エンコーディング (Unicode、8 ビット可変幅エンコーディング) もサポートされています。

データベースのエンコードと照合順序を表示するには、次のクエリを実行します。

SQL
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';
注記

Postgres では、データベースの作成後にそのエンコーディングや照合順序を変更することはできません。

照合順序

照合は、SQL 名をオペレーティング システムにインストールされているライブラリによって提供されるロケールにマッピングする SQL スキーマ オブジェクトです。

デフォルトでは、Lakebase はC.UTF-8照合を使用します。Lakebase でサポートされている別のプロバイダーは、外部ICUライブラリを使用するicuです。

Lakebase では、ロケール固有の並べ替えや大文字と小文字の変換が必要な場合に備えて、事前定義された一連の icu ロケールが提供されています。

  • すべての定義済みロケールを表示:
SQL
SELECT * FROM pg_collation;
  • 定義済みのicuロケールでデータベースを作成します。
SQL
CREATE DATABASE my_arabic_db
LOCALE_PROVIDER icu
icu_locale 'ar-x-icu'
template template0;
  • 個々の列のロケールを指定します。
SQL
CREATE TABLE my_ru_table (
id serial PRIMARY KEY,
russian_text_column text COLLATE "ru-x-icu",
description text
);

機能制限

役割と権限

  • ホスト オペレーティング システムにアクセスできません。
  • Postgres superuserを使用して接続することはできません。
    • superuser権限または直接ローカル ファイル システム アクセスを必要とする機能は許可されません。
    • databricks_superuser Postgres superuserの役割を担います。このロールに関連付けられている権限の詳細については、 「ロールの管理」を参照してください。

レプリケーション

ネイティブ Postgres 論理レプリケーションを使用して Lakebase データベースとの間でデータをレプリケートすることはまだできません。

表領域

Lakebase は Postgresテーブルスペースをサポートしていません。CREATE TABLESPACEコマンドを使用して表領域を作成しようとすると、エラーが発生します。これは、カスタム ストレージの場所への直接ファイル システム アクセスを許可しない Lakebase の管理対象クラウド アーキテクチャのためです。

異なるストレージ デバイス間でデータベース オブジェクトを整理するためにテーブルスペースを使用する既存のアプリケーションまたはスクリプトがある場合は、Lakebase に移行するときにこれらの参照を削除または変更する必要があります。