Antarmuka PostgreSQL untuk Spanner

Halaman ini menjelaskan antarmuka PostgreSQL untuk Spanner dan komponennya. Panduan ini berisi panduan dalam memilih antara PostgreSQL dan GoogleSQL, serta menawarkan praktik terbaik untuk mengadopsi dan menggunakan antarmuka PostgreSQL.

Antarmuka PostgreSQL membuat kemampuan Spanner—yang terkelola sepenuhnya, skala tanpa batas, konsistensi kuat, performa tinggi, dan ketersediaan global hingga 99,999%—dapat diakses dari ekosistem PostgreSQL open source. API ini mencakup subset inti dialek SQL PostgreSQL, dukungan untuk alat command line psql, klien bahasa asli, dan integrasi ke dalam alat Google yang sudah ada, seperti Dataflow. Tidak seperti layanan lain yang mengelola instance database PostgreSQL sebenarnya, Spanner menggunakan sintaksis yang kompatibel dengan PostgreSQL untuk menunjukkan kemampuan penyebaran skala yang sudah ada. Hal ini membuat developer dan portabilitas untuk aplikasi menjadi familier, tetapi tidak 100% kompatibilitas PostgreSQL. Aplikasi yang sudah ada dan mengandalkan fitur PostgreSQL, seperti prosedur yang disimpan, pemicu, ekstensi, atau tingkat isolasi yang dapat dikonfigurasi akan memerlukan pengerjaan ulang agar dapat berjalan di Spanner. Namun, sintaksis SQL yang didukung Spanner adalah PostgreSQL yang setara secara semantik. Artinya, skema dan kueri yang ditulis terhadap antarmuka PostgreSQL dapat dengan mudah ditransfer ke lingkungan PostgreSQL lainnya.

Antarmuka PostgreSQL mendukung sintaksis SQL umum PostgreSQL, termasuk kueri, fungsi, dan operator. Selain itu, fitur ini mendukung banyak jenis data, sintaksis DDL, dan tampilan skema informasi. Aplikasi dapat terhubung ke database Spanner yang mendukung antarmuka PostgreSQL menggunakan klien Spanner native atau PGAdapter, proxy ringan yang menerapkan protokol kabel PostgreSQL terbuka. Pada awalnya, dukungan protokol kabel ditargetkan untuk digunakan dengan alat command line psql.

Administrator menyediakan, mengelola, dan memantau database yang mendukung antarmuka PostgreSQL menggunakan konsol, API, dan alat Spanner yang sudah ada, seperti gcloud CLI. Antarmuka PostgreSQL dikonfigurasi per database pada waktu pembuatan. Instance Spanner dapat berisi database dialek antarmuka GoogleSQL dan PostgreSQL. Karena memiliki mesin database terdistribusi yang mendasarinya sama, kedua dialek database ini memiliki karakteristik skalabilitas, konsistensi, performa, dan keamanan yang sama.

Komponen antarmuka PostgreSQL

Antarmuka PostgreSQL terdiri dari dua kemampuan utama: dukungan untuk dialek SQL PostgreSQL dan dukungan untuk klien yang terhubung ke database yang mendukung antarmuka PostgreSQL.

Dukungan dialek SQL PostgreSQL

Antarmuka PostgreSQL menyediakan subset dialek SQL PostgreSQL, termasuk DQL, DML, dan DDL, beserta ekstensi untuk mendukung fitur Spanner seperti tabel sisipan dan petunjuk kueri. Untuk informasi selengkapnya tentang dukungan bahasa PostgreSQL Spanner, lihat Bahasa PostgreSQL di Spanner.

Dukungan klien PostgreSQL

Developer dapat menghubungkan aplikasi mereka ke database antarmuka PostgreSQL menggunakan klien Spanner open source untuk lingkungan Java, Go, Python, Node.js, Ruby, PHP, C#, dan C++. Mereka juga dapat menggunakan driver JDBC Spanner open source dan driver untuk paket database/sql Go.

Antarmuka PostgreSQL juga mendukung alat command line psql. psql adalah lingkungan interaktif untuk menjalankan kueri, menjelajahi metadata, dan memuat data, yang umum ditemukan di banyak lingkungan PostgreSQL. Dukungan psql diaktifkan oleh PGAdapter, proxy ringan yang menerjemahkan protokol kabel PostgreSQL ke dalam antarmuka gRPC bawaan Spanner, mengelola koneksi, dan autentikasi IAM untuk Anda. Untuk mengetahui informasi selengkapnya, lihat Ringkasan PGAdapter.

Driver Driver JDBC PostgreSQL dan driver pgx PostgreSQL juga didukung dengan PGAdapter. Untuk daftar lengkap driver PostgreSQL yang didukung, baca Driver dan ORM PostgreSQL.

Memilih antara GoogleSQL dan PostgreSQL

Saat membuat database Spanner, Anda memiliki pilihan antara dialek GoogleSQL dan PostgreSQL. Dialek tersebut menentukan sintaksis dan semantik kueri serta jenis data yang digunakan aplikasi Anda, serta cara keduanya terhubung ke database.

Faktor penentu dalam memilih menggunakan GoogleSQL atau PostgreSQL untuk aplikasi atau project tertentu adalah kebutuhan dan sasaran bisnis, bukan dukungan bahasa SQL untuk fitur Spanner. Dialek bahasa SQL adalah pembanding yang memiliki karakteristik yang sama terkait fitur Spanner:

  • Keduanya diterapkan di atas penyimpanan terdistribusi dan dasar pemrosesan kueri yang sama. Oleh karena itu, keduanya memiliki karakteristik performa, skalabilitas, konsistensi, dan ketersediaan yang sama.
  • Keduanya memiliki fitur Spanner melalui subset konstruksi bahasa standar masing-masing (ANSI 2001 untuk satu, standar open source PostgreSQL de facto untuk yang lain), dengan ekstensi yang ditambahkan untuk mendukung fitur Spanner seperti tabel yang disisipkan dan petunjuk kueri.
  • Untuk keduanya, Anda menggunakan antarmuka pengelolaan Spanner: Google Cloud Console, gcloud CLI, dan library klien Spanner untuk otomatisasi DevOps.
  • Untuk keduanya, gunakan antarmuka pengembangan aplikasi Spanner: library klien Spanner, REST, dan RPC API.
  • Untuk keduanya, Anda menggunakan skema sistem INFORMATION_SCHEMA dan SPANNER_SYS Spanner untuk mengkueri metadata dan statistik database.

Antarmuka PostgreSQL saat ini tidak mencapai paritas penuh antara dialek GoogleSQL dan PostgreSQL. Namun, dalam jangka panjang, Anda harus menentukan apakah akan menggunakan PostgreSQL atau GoogleSQL untuk aplikasi atau project tertentu sebagai berikut:

  • Pilih PostgreSQL jika tim pengembangan sudah terbiasa dengan ekosistem PostgreSQL open source, atau jika organisasi Anda telah atau sedang menstandarkan penggunaan PostgreSQL.

  • Pilih GoogleSQL:

    • Jika tim pengembangan sudah terbiasa dengan GoogleSQL, baik dari pengalaman Spanner sebelumnya maupun dengan menggunakan database Google Cloud lainnya seperti BigQuery yang juga mendukung GoogleSQL.
    • Apakah organisasi Anda menstandarkan penggunaan GoogleSQL atau standar ANSI 2011 yang mendasarinya.

Untuk informasi selengkapnya, lihat Paritas dialek antara GoogleSQL dan PostgreSQL.

Praktik terbaik untuk menggunakan antarmuka PostgreSQL

Agar dapat menggunakan antarmuka PostgreSQL secara efektif, Google menyarankan agar Anda:

  • Gunakan Konsol Google Cloud atau Google Cloud CLI untuk membuat database PostgreSQL di instance Spanner. (Anda dapat membuat database PostgreSQL dan GoogleSQL di instance yang sama.)

  • Gunakan library klien Spanner untuk menghubungkan aplikasi yang mengakses database.

  • Gunakan alat command line psql melalui proxy PGAdapter untuk bekerja secara interaktif dengan database Anda. Atau, Anda dapat menggunakan halaman Spanner Studio di konsol Google Cloud.

Langkah selanjutnya