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_tle
Ekstensi 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
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
.
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=labdbBuat TLE ekstensi bernama
pg_distance
dengan menyalin kode berikut dan menempelkannya ke konsolpsql
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 perintahCREATE EXTENSION
. Dengan kata lain, Anda masih perlu membuat ekstensi agar fungsinya tersedia bagi pengguna basis data.Untuk membuat ekstensi, gunakan perintah
CREATE EXTENSION
seperti yang Anda lakukan untuk ekstensi lainnya. Seperti ekstensi lainnya, pengguna basis data harus memiliki izinCREATE
dalam basis data.CREATE EXTENSION pg_distance;
Untuk menguji
pg_distance
TLE ekstensi, Anda dapat menggunakannya untuk menghitung jarak Manhattanantara 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
– AtributIMMUTABLE
memastikan bahwa pengoptimal kueri dapat menggunakan pengoptimalan untuk meningkatkan waktu respons kueri. Untuk informasi selengkapnya, lihat Kategori Volatilitas Fungsidalam dokumentasi SQL Postgre. PARALLEL SAFE
—PARALLEL 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
Connect ke untuk instance Postgre SQL DB menggunakan
psql
atau alat klien lain, seperti. pgAdminpsql --host=
db-instance-123456789012
.aws-region
.rds.amazonaws.com --port=5432
--username=postgres
--password --dbname=labdbUbah 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.
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.
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;