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 サービスとして、多くのデータベースはコンピュート サイズに基づいて設定されます。 以下を使用して、データベース設定をすべて表示します。
SHOW ALL;
セッション、データベース、またはロール レベルでuserコンテキストを持つパラメーターを構成できます。 インスタンス レベルでパラメーターを構成することはできません。
-
セッション、データベース、またはロール レベルで設定できるパラメーターを表示します。
SQLSELECT name
FROM pg_settings
WHERE context = 'user'; -
セッションにパラメーターを設定します。
SQLSET maintenance_work_mem='1 GB'; -
データベースに接続されているすべてのセッションに対してパラメーターを設定します。
SQLALTER DATABASE databricks_postgres SET maintenance_work_mem='1 GB'; -
特定のユーザーからのすべてのセッションに対してパラメーターを設定します。
SQLALTER USER "john@company.com" SET maintenance_work_mem='1 GB';
データベースのエンコーディングと照合
データベースエンコーディング
デフォルトでは、C.UTF-8 照合が使用されます。C.UTF-8 は、UTF-8 でエンコードされた文字の全範囲をサポートします。
UTF8 エンコーディング (Unicode、8 ビット可変幅エンコーディング) もサポートされています。
データベースのエンコードと照合順序を表示するには、次のクエリを実行します。
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 ロケールが提供されています。
- すべての定義済みロケールを表示:
SELECT * FROM pg_collation;
- 定義済みの
icuロケールでデータベースを作成します。
CREATE DATABASE my_arabic_db
LOCALE_PROVIDER icu
icu_locale 'ar-x-icu'
template template0;
- 個々の列のロケールを指定します。
CREATE TABLE my_ru_table (
id serial PRIMARY KEY,
russian_text_column text COLLATE "ru-x-icu",
description text
);
機能制限
役割と権限
- ホスト オペレーティング システムにアクセスできません。
- Postgres
superuserを使用して接続することはできません。superuser権限または直接ローカル ファイル システム アクセスを必要とする機能は許可されません。databricks_superuserPostgressuperuserの役割を担います。このロールに関連付けられている権限の詳細については、 「ロールの管理」を参照してください。
レプリケーション
ネイティブ Postgres 論理レプリケーションを使用して Lakebase データベースとの間でデータをレプリケートすることはまだできません。
表領域
Lakebase は Postgresテーブルスペースをサポートしていません。CREATE TABLESPACEコマンドを使用して表領域を作成しようとすると、エラーが発生します。これは、カスタム ストレージの場所への直接ファイル システム アクセスを許可しない Lakebase の管理対象クラウド アーキテクチャのためです。
異なるストレージ デバイス間でデータベース オブジェクトを整理するためにテーブルスペースを使用する既存のアプリケーションまたはスクリプトがある場合は、Lakebase に移行するときにこれらの参照を削除または変更する必要があります。