Membuat TLE ekstensi untuk RDS SQL - Layanan Basis Data Relasional Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Membuat TLE ekstensi untuk RDS SQL

Anda dapat menginstal ekstensi apa pun yang Anda buat TLE di yang memiliki ekstensi yang diinstal. pg_tle pg_tleEkstensi dicakup ke SQL database Postgre di mana ia diinstal. Ekstensi yang Anda buat menggunakan TLE cakupan ke database yang sama.

Gunakan berbagai pgtle fungsi untuk menginstal kode yang membentuk TLE ekstensi Anda. Semua fungsi Ekstensi Bahasa Tepercaya berikut memerlukan peran pgtle_admin.

Contoh: Membuat ekstensi bahasa tepercaya menggunakan SQL

Contoh berikut menunjukkan cara membuat TLE ekstensi bernama pg_distance yang berisi beberapa SQL fungsi untuk menghitung jarak menggunakan rumus yang berbeda. Dalam daftar, Anda dapat menemukan fungsi untuk menghitung jarak Manhattan dan fungsi untuk menghitung jarak Euclidean. Untuk informasi selengkapnya tentang perbedaan antara formula ini, lihat Geometri taksi dan Geometri Euclidean di Wikipedia.

Anda dapat menggunakan contoh ini di Anda sendiri RDSuntuk instance Postgre SQL DB jika Anda memiliki pg_tle ekstensi yang disiapkan seperti yang dijelaskan dalam. Menyiapkan Ekstensi Bahasa Tepercaya di SQL

catatan

Untuk mengikuti prosedur ini, Anda harus memiliki hak istimewa peran pgtle_admin.

Untuk membuat contoh TLE ekstensi

Langkah-langkah berikut menggunakan contoh basis data bernama labdb. Basis data ini milik pengguna utama postgres. Peran postgres juga memiliki izin peran pgtle_admin.

  1. Gunakan psql untuk terhubung ke . RDSuntuk contoh Postgre SQL DB.

    psql --host=db-instance-123456789012.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=labdb
  2. Buat TLE ekstensi bernama pg_distance dengan menyalin kode berikut dan menempelkannya ke konsol psql sesi Anda.

    SELECT pgtle.install_extension ( 'pg_distance', '0.1', 'Distance functions for two points', $_pg_tle_$ CREATE FUNCTION dist(x1 float8, y1 float8, x2 float8, y2 float8, norm int) RETURNS float8 AS $$ SELECT (abs(x2 - x1) ^ norm + abs(y2 - y1) ^ norm) ^ (1::float8 / norm); $$ LANGUAGE SQL; CREATE FUNCTION manhattan_dist(x1 float8, y1 float8, x2 float8, y2 float8) RETURNS float8 AS $$ SELECT dist(x1, y1, x2, y2, 1); $$ LANGUAGE SQL; CREATE FUNCTION euclidean_dist(x1 float8, y1 float8, x2 float8, y2 float8) RETURNS float8 AS $$ SELECT dist(x1, y1, x2, y2, 2); $$ LANGUAGE SQL; $_pg_tle_$ );

    Anda akan melihat output seperti berikut.

    install_extension --------------- t (1 row)

    Artefak yang membentuk ekstensi pg_distance sekarang diinstal di basis data Anda. Artefak ini mencakup file kontrol dan kode untuk ekstensi, yang merupakan item yang harus ada sehingga ekstensi dapat dibuat menggunakan perintah CREATE EXTENSION. Dengan kata lain, Anda masih perlu membuat ekstensi agar fungsinya tersedia bagi pengguna basis data.

  3. Untuk membuat ekstensi, gunakan perintah CREATE EXTENSION seperti yang Anda lakukan untuk ekstensi lainnya. Seperti ekstensi lainnya, pengguna basis data harus memiliki izin CREATE dalam basis data.

    CREATE EXTENSION pg_distance;
  4. Untuk menguji pg_distance TLE ekstensi, Anda dapat menggunakannya untuk menghitung jarak Manhattan antara empat titik.

    labdb=> SELECT manhattan_dist(1, 1, 5, 5); 8

    Untuk menghitung Jarak Euclidean antara kumpulan titik yang sama, Anda dapat menggunakan berikut.

    labdb=> SELECT euclidean_dist(1, 1, 5, 5); 5.656854249492381

Ekstensi pg_distance memuat fungsi dalam basis data dan membuatnya tersedia bagi setiap pengguna dengan izin pada basis data.

Memodifikasi ekstensi Anda TLE

Untuk meningkatkan kinerja kueri untuk fungsi yang dikemas dalam TLE ekstensi ini, tambahkan dua SQL atribut Postgre berikut ke spesifikasinya.

  • IMMUTABLE – Atribut IMMUTABLE memastikan bahwa pengoptimal kueri dapat menggunakan pengoptimalan untuk meningkatkan waktu respons kueri. Untuk informasi selengkapnya, lihat Kategori Volatilitas Fungsi dalam dokumentasi SQL Postgre.

  • PARALLEL SAFEPARALLEL SAFE Atribut adalah atribut lain yang memungkinkan Postgre SQL menjalankan fungsi dalam mode paralel. Untuk informasi lebih lanjut, lihat CREATEFUNCTIONdi dokumentasi PostgreSQL.

Dalam contoh berikut, Anda dapat melihat bagaimana pgtle.install_update_path fungsi digunakan untuk menambahkan atribut ini ke setiap fungsi untuk membuat 0.2 versi pg_distance TLE ekstensi. Untuk informasi selengkapnya tentang fungsi ini, lihat pgtle.install_update_path. Anda harus memiliki peran pgtle_admin untuk melakukan tugas ini.

Untuk memperbarui TLE ekstensi yang ada dan menentukan versi default
  1. Connect ke untuk instance Postgre SQL DB menggunakan psql atau alat klien lain, seperti. pgAdmin

    psql --host=db-instance-123456789012.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=labdb
  2. Ubah TLE ekstensi yang ada dengan menyalin kode berikut dan menempelkannya ke konsol psql sesi Anda.

    SELECT pgtle.install_update_path ( 'pg_distance', '0.1', '0.2', $_pg_tle_$ CREATE OR REPLACE FUNCTION dist(x1 float8, y1 float8, x2 float8, y2 float8, norm int) RETURNS float8 AS $$ SELECT (abs(x2 - x1) ^ norm + abs(y2 - y1) ^ norm) ^ (1::float8 / norm); $$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE; CREATE OR REPLACE FUNCTION manhattan_dist(x1 float8, y1 float8, x2 float8, y2 float8) RETURNS float8 AS $$ SELECT dist(x1, y1, x2, y2, 1); $$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE; CREATE OR REPLACE FUNCTION euclidean_dist(x1 float8, y1 float8, x2 float8, y2 float8) RETURNS float8 AS $$ SELECT dist(x1, y1, x2, y2, 2); $$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE; $_pg_tle_$ );

    Anda akan melihat hasil yang mirip dengan berikut ini.

    install_update_path --------------------- t (1 row)

    Anda dapat menjadikan versi ekstensi ini sebagai versi default, sehingga pengguna basis data tidak perlu menentukan versi saat mereka membuat atau memperbarui ekstensi di basis data mereka.

  3. Untuk menentukan bahwa versi modifikasi (versi 0.2) TLE ekstensi Anda adalah versi default, gunakan pgtle.set_default_version fungsi seperti yang ditunjukkan pada contoh berikut.

    SELECT pgtle.set_default_version('pg_distance', '0.2');

    Untuk informasi selengkapnya tentang fungsi ini, lihat pgtle.set_default_version.

  4. Dengan kode di tempat, Anda dapat memperbarui TLE ekstensi yang diinstal dengan cara biasa, dengan menggunakan ALTER EXTENSION ... UPDATE perintah, seperti yang ditunjukkan di sini:

    ALTER EXTENSION pg_distance UPDATE;