Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Membuat ekstensi TLE untuk RDS for PostgreSQL
Anda dapat menginstal ekstensi apa pun yang Anda buat dengan TLE di setiap instans DB RDS for PostgreSQL yang ekstensi pg_tle-nya telah diinstal. Ekstensi pg_tle dicakup ke basis data PostgreSQL tempat ekstensi diinstal. Ekstensi yang Anda buat menggunakan TLE dicakup ke basis data yang sama.
Gunakan berbagai fungsi pgtle untuk menginstal kode yang membentuk ekstensi TLE Anda. Semua fungsi Ekstensi Bahasa Tepercaya berikut memerlukan peran pgtle_admin.
Contoh: Membuat ekstensi bahasa tepercaya menggunakan SQL
Contoh berikut menunjukkan cara membuat ekstensi TLE bernama pg_distance yang berisi beberapa fungsi SQL untuk menghitung jarak menggunakan berbagai formula. 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
Anda dapat menggunakan contoh ini di instans DB RDS for PostgreSQL Anda sendiri jika Anda memiliki ekstensi pg_tle yang diatur seperti yang dijelaskan Menyiapkan Ekstensi Bahasa Tepercaya di SQL.
catatan
Untuk mengikuti prosedur ini, Anda harus memiliki hak istimewa peran pgtle_admin.
Untuk membuat contoh ekstensi TLE
Langkah-langkah berikut menggunakan contoh basis data bernama labdb. Basis data ini milik pengguna utama postgres. Peran postgres juga memiliki izin peran pgtle_admin.
Gunakan
psqluntuk terhubung ke . Instans DB RDS for PostgreSQL.psql --host=db-instance-123456789012.aws-region.rds.amazonaws.com --port=5432--username=postgres--password --dbname=labdbBuat ekstensi TLE bernama
pg_distancedengan menyalin kode berikut dan menempelkannya ke konsol sesipsqlAnda.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_distancesekarang 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 perintahCREATE EXTENSION. Dengan kata lain, Anda masih perlu membuat ekstensi agar fungsinya tersedia bagi pengguna basis data.Untuk membuat ekstensi, gunakan perintah
CREATE EXTENSIONseperti yang Anda lakukan untuk ekstensi lainnya. Seperti ekstensi lainnya, pengguna basis data harus memiliki izinCREATEdalam basis data.CREATE EXTENSION pg_distance;Untuk menguji ekstensi TLE
pg_distance, Anda dapat menggunakannya untuk menghitung Jarak Manhattanantara empat titik. labdb=>SELECT manhattan_dist(1, 1, 5, 5);8Untuk 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.
Mengubah ekstensi TLE
Untuk meningkatkan performa kueri untuk fungsi yang dikemas dalam ekstensi TLE ini, tambahkan dua atribut PostgreSQL berikut ke spesifikasinya.
IMMUTABLE– AtributIMMUTABLEmemastikan bahwa pengoptimal kueri dapat menggunakan pengoptimalan untuk meningkatkan waktu respons kueri. Untuk informasi selengkapnya, lihat Function Volatility Categoriesdalam dokumentasi PostgreSQL. PARALLEL SAFE– AtributPARALLEL SAFEadalah atribut lain yang memungkinkan PostgreSQL menjalankan fungsi dalam mode paralel. Untuk informasi selengkapnya, lihat CREATE FUNCTIONdalam dokumentasi PostgreSQL.
Dalam contoh berikut, Anda dapat melihat bagaimana fungsi pgtle.install_update_path digunakan untuk menambahkan atribut ini ke setiap fungsi guna membuat ekstensi TLE pg_distance versi 0.2. Untuk informasi selengkapnya tentang fungsi ini, lihat pgtle.install_update_path. Anda harus memiliki peran pgtle_admin untuk melakukan tugas ini.
Untuk memperbarui ekstensi TLE yang ada dan menentukan versi default
Hubungkan ke instans DB RDS for PostgreSQL Anda menggunakan
psqlatau alat klien lainnya, seperti pgAdmin.psql --host=db-instance-123456789012.aws-region.rds.amazonaws.com --port=5432--username=postgres--password --dbname=labdbBuat ekstensi TLE yang ada dengan menyalin kode berikut dan menempelkannya ke konsol sesi
psqlAnda.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.
Untuk menentukan bahwa versi modifikasi (versi 0.2) ekstensi TLE Anda adalah versi default, gunakan fungsi
pgtle.set_default_versionseperti 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.
Dengan kode yang diterapkan, Anda dapat memperbarui ekstensi TLE yang diinstal seperti biasa, dengan menggunakan perintah
ALTER EXTENSION ... UPDATE, seperti yang ditunjukkan di sini:ALTER EXTENSION pg_distance UPDATE;