Bagikan melalui


Kompatibilitas Postgres

Penting

Lakebase Autoscaling berada di Beta di wilayah berikut: eastus2, , westeuropewestus.

Lakebase Autoscaling adalah versi terbaru Lakebase dengan komputasi penskalaan otomatis, skala-ke-nol, percabangan, dan pemulihan instan. Untuk perbandingan fitur dengan Lakebase Provisioned, lihat memilih antar versi.

Halaman ini menjelaskan bagaimana Lakebase Postgres kompatibel dengan Postgres standar. Sebagai layanan Postgres terkelola, ada beberapa perbedaan dan batasan.

Dukungan versi Postgres

Lakebase Autoscaling mendukung Postgres 16 dan Postgres 17.

Dukungan ekstensi Postgres

Lakebase mendukung banyak ekstensi Postgres. Untuk daftar lengkapnya, lihat Ekstensi Postgres.

Sesi, memori, dan penyimpanan

Konteks sesi

Fitur skala-ke-nol Lakebase secara otomatis menutup koneksi tidak aktif setelah jangka waktu tidak ada aktivitas.

Saat koneksi ditutup, apa pun dalam konteks sesi, seperti tabel sementara, pernyataan yang disiapkan, kunci saran, dan perintah NOTIFY dan LISTEN , hilang.

Untuk menghindari kehilangan konteks tingkat sesi, Anda dapat menonaktifkan pengaturan skala ke nol. Namun, melakukannya berarti komputasi Anda berjalan 24/7.

Memory

Kueri SQL dan pembangunan indeks dapat menghasilkan data di dalam volume besar yang mungkin tidak pas dalam memori. Ukuran komputasi Anda menentukan jumlah memori yang tersedia.

Tabel yang tidak di-unlogged

Tabel yang tidak di-log adalah tabel yang tidak menulis ke log write-ahead Postgres (WAL). Tabel ini disimpan di penyimpanan lokal kompute dan tidak dapat dipertahankan ketika kompute dimulai ulang atau ketika skalanya turun ke nol. Ini tidak seperti Postgres standar, di mana tabel yang tidak di-log hanya dipotong jika terjadi penghentian proses abnormal. Selain itu, tabel yang tidak di-log dibatasi oleh ruang disk lokal komputasi. Lakebase menghitung alokasi 20 GiB ruang disk lokal atau 15 GiB kali ukuran komputasi maksimum (mana yang tertinggi) untuk file sementara yang digunakan oleh Postgres.

Tabel sementara

Tabel sementara hanya ada selama masa pakai sesi (atau secara opsional transaksi). Seperti tabel yang tidak di-log, tabel disimpan dalam penyimpanan lokal komputasi dan dibatasi oleh ruang disk lokal.

Log Postgres

Akses ke log Postgres tidak didukung.

Koleksi statistik

Statistik yang dikumpulkan oleh sistem statistik kumulatif Postgres tidak disimpan ketika komputasi (tempat Postgres berjalan) menskalakan ke nol. Untuk menghindari kehilangan statistik, Anda dapat menonaktifkan fitur skala-ke-nol. Namun, menonaktifkan skala ke nol juga berarti bahwa komputasi Anda akan berjalan 24/7.

Pengaturan parameter Postgres

Sebagai layanan Postgres terkelola, banyak parameter database ditetapkan berdasarkan ukuran komputasi. Lihat semua pengaturan parameter database Anda menggunakan:

SHOW ALL;

Anda dapat mengonfigurasi parameter yang memiliki user konteks di tingkat sesi, database, atau peran. Anda tidak dapat mengonfigurasi parameter di tingkat instans.

  • Perlihatkan parameter yang dapat diatur pada tingkat sesi, database, atau peran.

    SELECT name
    FROM pg_settings
    WHERE context = 'user';
    
  • Atur parameter untuk sesi.

    SET maintenance_work_mem='1 GB';
    
  • Atur parameter untuk semua sesi yang tersambung ke database.

    ALTER DATABASE lakebase SET maintenance_work_mem='1 GB';
    
  • Atur parameter untuk semua sesi dari pengguna tertentu.

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

Pengodean dan kolasi database

Pengkodean basis data

Secara default, kolatasi C.UTF-8 digunakan. C.UTF-8 mendukung berbagai karakter yang dikodekan UTF-8.

Pengodean UTF8 (Unicode, pengodean lebar variabel 8-bit) juga didukung.

Untuk menampilkan pengodean dan kolade untuk database Anda, jalankan kueri berikut:

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';

Nota

Di Postgres, Anda tidak dapat mengubah pengodean atau kolade database setelah dibuat.

Kolasi

Kolase adalah objek skema SQL yang memetakan nama SQL ke lokal yang disediakan oleh pustaka yang diinstal dalam sistem operasi.

Secara default, Lakebase menggunakan C.UTF-8 kolase. Penyedia lain yang didukung oleh Lakebase adalah icu, yang menggunakan pustaka ICU eksternal.

Lakebase menyediakan serangkaian lengkap lokal icu yang telah ditentukan sebelumnya jika Anda memerlukan pengurutan khusus lokal atau konversi kasus.

  • Lihat semua lokal yang telah ditentukan sebelumnya:
SELECT * FROM pg_collation;
  • Buat database dengan lokal yang telah icu ditentukan sebelumnya:
CREATE DATABASE my_arabic_db
LOCALE_PROVIDER icu
icu_locale 'ar-x-icu'
template template0;
  • Tentukan lokal untuk kolom individual:
CREATE TABLE my_ru_table (
    id serial PRIMARY KEY,
    russian_text_column text COLLATE "ru-x-icu",
    description text
);

Batasan fungsionalitas

Peran dan izin

  • Anda tidak dapat mengakses sistem operasi host.
  • Anda tidak dapat terhubung menggunakan Postgres superuser.
    • Fungsionalitas apa pun yang memerlukan superuser hak istimewa atau akses sistem file lokal langsung tidak diizinkan.
    • databricks_superuser menggantikan peran superuser Postgres. Untuk informasi tentang hak istimewa yang terkait dengan peran ini, lihat Mengelola peran.

Replikasi

Replikasi data ke atau dari database Lakebase menggunakan replikasi logis asli Postgres saat ini belum tersedia.

Ruang tabel

Lakebase tidak mendukung ruang tabel Postgres. Mencoba membuat ruang tabel dengan CREATE TABLESPACE perintah menghasilkan kesalahan. Ini karena arsitektur cloud terkelola Lakebase, yang tidak mengizinkan akses sistem file langsung untuk lokasi penyimpanan kustom.

Jika Anda memiliki aplikasi atau skrip yang sudah ada yang menggunakan ruang tabel untuk mengatur objek database di berbagai perangkat penyimpanan, Anda harus menghapus atau memodifikasi referensi ini saat bermigrasi ke Lakebase.