One place for hosting & domains

      PostgreSQL

      What is PostgreSQL?


      PostgreSQL, commonly referred to as “Postgres,” is an open-source relational database management system. As with other relational databases, PostgreSQL stores data in tables made up of rows and columns. Users can define, manipulate, control, and query data using Structured Query Language, more commonly known as SQL. PostgreSQL bills itself as “the most advanced open-source relational database in the world,” and emphasizes extensibility and compliance with the SQL standard.

      For more educational resources related to PostgreSQL, please visit:

      A complete list of our educational resources on PostgreSQL can be found on our PostgreSQL tag page.



      Source link

      Cara Menginstal dan Menggunakan PostgreSQL pada Ubuntu 20.04


      Pengantar

      Sistem manajemen basis data relasional adalah komponen penting dari banyak situs web dan aplikasi. Sistem ini menyediakan cara yang terstruktur untuk menyimpan, mengelola, dan mengakses informasi.

      PostgreSQL, atau Postgres, adalah sistem manajemen basis data relasional yang memberikan penerapan dari bahasa kueri SQL. Sistem ini sesuai dengan standar dan memiliki banyak fitur lanjutan seperti transaksi yang andal dan konkurensi tanpa kunci baca.

      Panduan ini mendemonstrasikan cara menginstal Postgres pada server Ubuntu 20.04. Panduan ini juga menyediakan beberapa instruksi untuk administrasi basis data umum.

      Prasyarat

      Untuk mengikuti tutorial ini, Anda akan membutuhkan satu server Ubuntu 20.04 yang telah dikonfigurasi dengan mengikuti Panduan Penyiapan Server Awal untuk Ubuntu 20.04 dari kami. Setelah menyelesaikan tutorial prasyarat ini, server Anda akan memiliki pengguna non-root dengan izin sudo dan firewall dasar.

      Langkah 1 — Menginstal PostgreSQL

      Repositori asali Ubuntu memuat paket Postgres, sehingga Anda dapat menginstal ini menggunakan sistem paket apt.

      Jika Anda belum melakukan itu baru-baru ini, segarkan indeks paket lokal server Anda:

      Lalu, instal paket Postgres bersama dengan paket -contrib yang menambah beberapa utilitas dan fungsionalitas tambahan:

      • sudo apt install postgresql postgresql-contrib

      Karena kini perangkat lunak sudah terinstal, kita dapat memeriksa cara kerjanya dan kemungkinan perbedaannya dengan sistem manajemen basis data relasional lain yang Anda mungkin gunakan.

      Langkah 2 — Menggunakan Peran dan Basis Data PostgreSQL

      Secara asali, Postgres menggunakan konsep yang disebut “role” untuk menangani autentikasi dan otorisasi. Dalam beberapa hal, ini mirip dengan akun bergaya Unix reguler, tetapi Postgres tidak membedakan antara pengguna dan grup, serta alih-alih lebih memilih istilah “peran” yang fleksibel.

      Setelah instalasi, Postgres sudah siap untuk menggunakan autentikasi ident, yang berarti ini mengasosiasikan peran-peran Postgres dengan akun sistem Unix/Linux yang cocok. Jika peran ada di dalam Postgres, nama pengguna Unix/Linux dengan nama yang sama dapat masuk sebagai peran itu.

      Prosedur instalasi menciptakan akun pengguna bernama postgres yang terasosiasi dengan peran Postgres asali. Untuk menggunakan Postgres, Anda dapat log masuk ke akun itu.

      Ada beberapa cara untuk memanfaatkan akun ini guna mengakses Postgres.

      Beralih ke Akun postgres

      Beralihlah ke akun postgres pada server Anda dengan mengetik:

      Anda kini dapat segera mengakses prompt PostgreSQL dengan mengetik:

      Dari sana, Anda bebas berinteraksi dengan sistem manajemen basis data sesuai kebutuhan.

      Keluarlah dari prompt PostgreSQL dengan mengetik:

      Ini akan membawa Anda kembali ke prompt perintah Linux postgres.

      Mengakses Prompt Postgres Tanpa Beralih Akun

      Anda juga dapat menjalankan perintah yang Anda inginkan secara langsung menggunakan akun postgres dengan sudo.

      Misalnya, pada contoh terakhir, Anda diperintahkan untuk pergi ke prompt Postgres dengan pertama-tama beralih ke pengguna postgres, lalu menjalankan psql untuk membuka prompt Postgres. Anda dapat melakukan ini dalam satu langkah dengan menjalankan perintah tunggal psql sebagai pengguna postgres dengan sudo, seperti ini:

      Ini akan membawa Anda log masuk secara langsung ke Postgres tanpa shell bash perantara di antaranya.

      Sekali lagi, Anda dapat keluar dari sesi Postgres interaktif dengan mengetik:

      Banyak kasus penggunaan membutuhkan lebih dari satu peran Postgres. Lanjutkan membaca mempelajari cara mengonfigurasi ini.

      Langkah 3 — Menciptakan Peran Baru

      Saat ini, Anda baru saja mengonfigurasi peran postgres di dalam basis data. Anda dapat membuat peran baru dari baris perintah dengan perintah createrole. Bendera --interactive akan meminta nama peran baru ini kepada Anda serta menanyakan apakah bendera itu harus memiliki izin superuser.

      Jika Anda log masuk sebagai akun postgres, Anda dapat membuat pengguna baru dengan mengetik:

      Jika Anda lebih memilih untuk menggunakan sudo untuk setiap perintah tanpa berpindah dari akun normal Anda, ketik:

      • sudo -u postgres createuser --interactive

      Skrip akan memberi Anda beberapa pilihan dan, berdasarkan respons Anda, menjalankan perintah Postgres yang benar untuk menciptakan pengguna sesuai dengan spesifikasi Anda.

      Output

      Enter name of role to add: sammy Shall the new role be a superuser? (y/n) y

      Anda dapat memiliki kontrol lebih banyak dengan memberi beberapa bendera tambahan. Periksa opsi dengan membuka laman man:

      Instalasi Postgres Anda kini memiliki pengguna baru, tetapi Anda belum menambahkan basis data apa pun. Bagian selanjutnya menggambarkan proses ini.

      Langkah 4 — Menciptakan Basis Data Baru

      Asumsi lain yang dibuat oleh sistem autentikasi Postgres secara asali adalah bahwa pada setiap peran yang digunakan untuk log masuk akan memiliki basis data bernama sama yang dapat diakses oleh peran itu.

      Ini berarti bahwa jika pengguna yang Anda ciptakan di bagian terakhir bernama sammy, maka peran itu akan mencoba terhubung ke basis data yang juga bernama “sammy” secara asali. Anda dapat menciptakan basis data yang sesuai dengan perintah createdb.

      Jika Anda log masuk sebagai akun postgres, Anda dapat mengetik sesuatu seperti:

      Jika Anda lebih memilih untuk menggunakan sudo untuk setiap perintah tanpa berpindah dari akun normal, Anda dapat mengetik:

      • sudo -u postgres createdb sammy

      Fleksibilitas ini menyediakan beberapa jalur untuk menciptakan basis data sesuai kebutuhan.

      Langkah 5 — Membuka Prompt Postgres dengan Peran Baru

      Untuk log masuk dengan autentikasi berbasis ident, Anda akan membutuhkan pengguna Linux dengan nama yang sama dengan peran dan basis data Postgres.

      Jika tidak ada pengguna Linux yang cocok, Anda dapat menciptakannya dengan perintah adduser. Anda harus melakukan ini dari akun non-root dengan privilese sudo (yang berarti, tidak log masuk sebagai pengguna postgres):

      Setelah akun baru ini tersedia, Anda dapat beralih dan terhubung ke basis data itu dengan mengetik:

      Atau, Anda dapat melakukannya dalam baris ini:

      Perintah ini akan membuat Anda log masuk secara otomatis, dengan asumsi bahwa semua komponen telah dikonfigurasi dengan benar.

      Jika Anda ingin pengguna terhubung ke basis data yang berbeda, Anda dapat melakukannya dengan menetapkan basis datanya seperti ini:

      Setelah log masuk, Anda dapat memeriksa informasi koneksi saat ini dengan mengetik:

      Output

      You are connected to database "sammy" as user "sammy" via socket in "/var/run/postgresql" at port "5432".

      Ini berguna jika Anda terhubung ke basis data non-asali atau menggunakan pengguna non-asali.

      Langkah 6 — Membuat dan Menghapus Tabel

      Karena kini Anda mengetahui cara terhubung ke sistem basis data PostgreSQL, Anda dapat mempelajari beberapa tugas manajemen Postgres dasar.

      Sintaks dasar untuk membuat tabel adalah sebagai berikut:

      CREATE TABLE table_name (
          column_name1 col_type (field_length) column_constraints,
          column_name2 col_type (field_length),
          column_name3 col_type (field_length)
      );
      

      Seperti yang Anda lihat, perintah ini memberi nama pada tabel, lalu mendefinisikan kolom serta jenis kolom dan panjang maksimum dari data bidang. Anda juga dapat menambahkan batasan tabel pada masing-masing kolom.

      Anda dapat mempelajari lebih lanjut tentang cara membuat dan mengelola tabel di Postgres di sini.

      Untuk demonstrasi, buat tabel berikut:

      • CREATE TABLE playground (
      • equip_id serial PRIMARY KEY,
      • type varchar (50) NOT NULL,
      • color varchar (25) NOT NULL,
      • location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
      • install_date date
      • );

      Perintah ini akan membuat tabel yang menginventarisasi peralatan taman bermain. Kolom pertama di dalam tabel akan menampung nomor ID peralatan dari tipe serial, yang merupakan bilangan bulat yang bertambah secara otomatis. Kolom ini juga memiliki batasan dari PRIMARY KEY yang berarti bahwa nilai di dalamnya harus unik dan bukan nol.

      Dua baris selanjutnya membuat kolom untuk type (jenis) peralatan dan color (warna) secara berurutan, yang tidak boleh kosong. Baris setelah baris ini membuat kolom location (lokasi) serta batasan yang mengharuskan nilai itu menjadi salah satu dari delapan kemungkinan nilai. Baris terakhir membuat kolom date (tanggal) yang merekam tanggal saat Anda memasang peralatan itu.

      Untuk dua kolom (equip_id dan install_date) adalah perintah tidak menentukan panjang bidang. Alasan untuk ini adalah bahwa beberapa tipe data tidak memerlukan panjang rangkaian karena panjang atau format sudah tersirat.

      Anda dapat melihat tabel baru Anda dengan mengetik:

      Output

      List of relations Schema | Name | Type | Owner --------+-------------------------+----------+------- public | playground | table | sammy public | playground_equip_id_seq | sequence | sammy (2 rows)

      Tabel taman bermain Anda ada di sini, tetapi juga ada sesuatu yang bernama playground_equip_id_seq yang merupakan sequence (urutan) tipe. Ini adalah representasi dari tipe serial yang Anda berikan pada kolom equip_id. Ini melacak angka selanjutnya pada urutan dan dibuat secara otomatis untuk kolom tipe ini.

      Jika Anda hanya ingin melihat tabel tanpa urutan, Anda dapat mengetik:

      Output

      List of relations Schema | Name | Type | Owner --------+------------+-------+------- public | playground | table | sammy (1 row)

      Setelah tabel siap, mari kita gunakan untuk berlatih mengelola data.

      Langkah 7 — Menambahkan, Membuat Kueri, dan Menghapus Data pada Tabel

      Karena Anda sudah memiliki tabel, Anda dapat memasukkan beberapa data ke dalamnya. Sebagai contoh, tambahkan perosotan dan ayunan dengan memanggil tabel yang Anda ingin tambahkan, menamai kolom, lalu memberi data untuk masing-masing kolom, seperti ini:

      • INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2017-04-28');
      • INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2018-08-16');

      Anda harus berhati-hati saat memasukkan data untuk menghindari beberapa masalah umum. Misalnya, jangan membungkus nama kolom dengan tanda kutip, tetapi nilai kolom yang Anda masukkan memang membutuhkan tanda kutip.

      Hal lain yang harus diingat adalah bahwa Anda tidak memasukkan nilai untuk kolom equip_id. Karena nilai ini secara otomatis dihasilkan setiap kali Anda menambah baris baru ke tabel.

      Ambil informasi yang Anda tambahkan dengan mengetik:

      • SELECT * FROM playground;

      Output

      equip_id | type | color | location | install_date ----------+-------+--------+-----------+-------------- 1 | slide | blue | south | 2017-04-28 2 | swing | yellow | northwest | 2018-08-16 (2 rows)

      Di sini, Anda dapat melihat bahwa equip_id telah berhasil diisi dan semua data yang lain telah terorganisir dengan benar.

      Jika perosotan di taman bermain rusak dan Anda harus menghapusnya, Anda juga dapat menghapus baris dari tabel dengan mengetik:

      • DELETE FROM playground WHERE type="slide";

      Buat kueri tabel lagi:

      • SELECT * FROM playground;

      Output

      equip_id | type | color | location | install_date ----------+-------+--------+-----------+-------------- 2 | swing | yellow | northwest | 2018-08-16 (1 row)

      Perhatikan bahwa baris slide (perosotan) tidak lagi menjadi bagian dari tabel.

      Langkah 8 — Menambahkan dan Menghapus Kolom dari Tabel

      Setelah membuat tabel, Anda dapat mengubahnya dengan menambah atau menghapus kolom. Tambahkan kolom untuk menunjukkan kunjungan pemeliharaan terakhir pada setiap peralatan dengan mengetik:

      • ALTER TABLE playground ADD last_maint date;

      Jika Anda melihat informasi tabel Anda lagi, Anda akan melihat kolom baru telah ditambahkan, tetapi tidak ada data yang dimasukkan:

      • SELECT * FROM playground;

      Output

      equip_id | type | color | location | install_date | last_maint ----------+-------+--------+-----------+--------------+------------ 2 | swing | yellow | northwest | 2018-08-16 | (1 row)

      Jika Anda menemukan bahwa kru pekerja menggunakan alat berbeda untuk melacak riwayat pemeliharaan, Anda dapat menghapusnya dari kolom dengan mengetik:

      • ALTER TABLE playground DROP last_maint;

      Ini menghapus kolom last_maint dan nilai apa pun yang ditemukan di dalamnya, tetapi tidak mengubah semua data lainnya.

      Langkah 9 — Memperbarui Data pada Tabel

      Sejauh ini, Anda telah mempelajari cara menambahkan catatan ke tabel dan cara menghapusnya, tetapi tutorial ini belum membahas cara untuk mengubah entri yang ada.

      Anda dapat memperbarui nilai-nilai dari entri yang sudah ada dengan meminta catatan yang Anda inginkan dan mengatur kolom pada nilai yang Anda ingin gunakan. Anda dapat meminta catatan swing (ini akan sesuai dengan setiap ayunan di tabel Anda) dan mengubah warnanya menjadi red (merah). Ini akan berguna jika Anda mengecat ayunan:

      • UPDATE playground SET color="red" WHERE type="swing";

      Anda dapat memverifikasi bahwa operasi berhasil dengan meminta data lagi:

      • SELECT * FROM playground;

      Output

      equip_id | type | color | location | install_date ----------+-------+-------+-----------+-------------- 2 | swing | red | northwest | 2018-08-16 (1 row)

      Seperti yang Anda lihat, perosotan kini sudah terdaftar sebagai berwarna merah.

      Kesimpulan

      Anda sekarang sudah siap dengan PostgreSQL di server Ubuntu 20.04. Jika Anda ingin mempelajari lebih lanjut tentang Postgres dan cara menggunakannya, kami menyarankan Anda untuk membaca panduan berikut:



      Source link

      How To Set Up Physical Streaming Replication with PostgreSQL 12 on Ubuntu 20.04


      The author selected the COVID-19 Relief Fund to receive a donation as part of the Write for DOnations program.

      Introduction

      Streaming replication is a popular method you can use to horizontally scale your relational databases. It uses two or more copies of the same database cluster running on separate machines. One database cluster is referred to as the primary and serves both read and write operations; the others, referred to as the replicas, serve only read operations. You can also use streaming replication to provide high availability of a system. If the primary database cluster or server were to unexpectedly fail, the replicas are able to continue serving read operations, or (one of the replicas) become the new primary cluster.

      PostgreSQL is a widely used relational database that supports both logical and physical replication. Logical replication streams high-level changes from the primary database cluster to the replica databases. Using logical replication, you can stream changes to just a single database or table in a database. However, in physical replication, changes to the WAL (Write-Ahead-Logging) log file are streamed and replicated in the replica clusters. As a result, you can’t replicate specific areas of a primary database cluster, but instead all changes to the primary are replicated.

      In this tutorial, you will set up physical streaming replication with PostgreSQL 12 on Ubuntu 20.04 using two separate machines running two separate PostgreSQL 12 clusters. One machine will be the primary and the other, the replica.

      Prerequisites

      To complete this tutorial, you will need the following:

      • Two separate machines Ubuntu 20.04 machines; one referred to as the primary and the other referred to as the replica. You can set these up with our Initial Server Setup Guide, including non-root users with sudo permissions and a firewall.
      • Your firewalls configured to allow HTTP/HTTPS and traffic on port 5432—the default port used by PostgreSQL 12. You can follow How To Set Up a Firewall with ufw on Ubuntu 20.04 to configure these firewall settings.
      • PostgreSQL 12 running on both Ubuntu 20.04 Servers. Follow Step 1 of the How To Install and Use PostgreSQL on Ubuntu 20.04 tutorial that covers the installation and basic usage of PostgreSQL on Ubuntu 20.04.

      Step 1 — Configuring the Primary Database to Accept Connections

      In this first step, you’ll configure the primary database to allow your replica database(s) to connect. By default, PostgreSQL only listens to the localhost (127.0.0.1) for connections. To change this, you’ll first edit the listen_addresses configuration parameter on the primary database.

      On your primary server, run the following command to connect to the PostgreSQL cluster as the default postgres user:

      Once you have connected to the database, you’ll modify the listen_addresses parameter using the ALTER SYSTEM command:

      • ALTER SYSTEM SET listen_addresses TO 'your_replica_IP_addr';

      Replace 'your_replica_IP_addr' with the IP address of your replica machine.

      You will receive the following output:

      Output

      ALTER SYSTEM

      The command you just entered instructs the PostgreSQL database cluster to allow connections only from your replica machine. If you were using more than one replica machine, you would list the IP addresses of all your replicas separated by commas. You could also use '*' to allow connections from all IP addresses, however, this isn’t recommended for security reasons.

      Note: You can also run the command on the database from the terminal using psql -c as follows:

      • sudo -u postgres psql -c "ALTER SYSTEM SET listen_addresses TO 'your_replica_IP_adder';"

      Alternatively, you can change the value for listen_addresses by manually editing the postgresql.conf configuration file, which you can find in the /etc/postgresql/12/main/ directory by default. You can also get the location of the configuration file by running SHOW config_file; on the database cluster.

      To open the file using nano use:

      • sudo nano /etc/postgresql/12/main/postgresql.conf

      Once you’re done, your primary database will now accept connections from other machines. Next, you’ll create a role with the appropriate permissions that the replica will use when connecting to the primary.

      Step 2 — Creating a Special Role with Replication Permissions

      Now, you need to create a role in the primary database that has permission to replicate the database. Your replica will use this role when connecting to the primary. Creating a separate role just for replication also has security benefits. Your replica won’t be able to manipulate any data on the primary; it will only be able to replicate the data.

      To create a role, you need to run the following command on the primary cluster:

      • CREATE ROLE test WITH REPLICATION PASSWORD 'testpassword' LOGIN;

      You’ll receive the following output:

      Output

      CREATE ROLE

      This command creates a role named test with the password 'testpassword', which has permission to replicate the database cluster.

      PostgreSQL has a special replication pseudo-database that the replica connects to, but you first need to edit the /etc/postgresql/12/main/pg_hba.conf configuration file to allow your replica to access it. So, exit the PostgreSQL command prompt by running:

      Now that you’re back at your terminal command prompt, open the /etc/postgresql/12/main/pg_hba.conf configuration file using nano:

      • sudo nano /etc/postgresql/12/main/pg_hba.conf

      Append the following line to the end of the pg_hba.conf file:

      /etc/postgresql/12/main/pg_hba.conf

      . . .
      host    replication     test    your-replica-IP/32   md5
      

      This ensures that your primary allows your replica to connect to the replication pseudo-database using the role, test, you created earlier. The host value means to accept non-local connections via plain or SSL-encrypted TCP/IP sockets. replication is the name of the special pseudo-database that PostgreSQL uses for replication. Finally, the value md5 is the type of authentication used. If you want to have more than one replica, just add the same line again to the end of the file with the IP address of your other replica.

      To ensure these changes to the configuration file are implemented, you need to restart the primary cluster using:

      • sudo systemctl restart postgresql@12-main

      If your primary cluster restarted successfully, it is correctly set up and ready to start streaming once your replica connects. Next, you’ll move on to setting up your replica cluster.

      Step 3 — Backing Up the Primary Cluster on the Replica

      As you are setting up physical replication with PostgreSQL in this tutorial, you need to perform a physical backup of the primary cluster’s data files into the replica’s data directory. To do this, you’ll first clear out all the files in the replica’s data directory. The default data directory for PostgreSQL on Ubuntu is /var/lib/postgresql/12/main/.

      You can also find PostgreSQL’s data directory by running the following command on the replica’s database:

      Once you have the location of the data directory, run the following command to remove everything:

      • sudo -u postgres rm -r /var/lib/postgresql/12/main/*

      Since the default owner of the files in the directory is the postgres user, you will need to run the command as postgres using sudo -u postgres.

      Note:
      If in the exceedingly rare case a file in the directory is corrupted and the command does not work, remove the main directory all together and recreate it with the appropriate permissions as follows:

      • sudo -u postgres rm -r /var/lib/postgresql/12/main
      • sudo -u postgres mkdir /var/lib/postgresql/12/main
      • sudo -u postgres chmod 700 /var/lib/postgresql/12/main

      Now that the replica’s data directory is empty, you can perform a physical backup of the primary’s data files. PostgreSQL conveniently has the utility pg_basebackup that simplifies the process. It even allows you to put the server into standby mode using the -R option.

      Execute the pg_basebackup command on the replica as follows:

      • sudo -u postgres pg_basebackup -h primary-ip-addr -p 5432 -U test -D /var/lib/postgresql/12/main/ -Fp -Xs -R
      • The -h option specifies a non-local host. Here, you need to enter the IP address of your server with the primary cluster.

      • The -p option specifies the port number it connects to on the primary server. By default, PostgreSQL uses port :5432.

      • The -U option allows you to specify the user you connect to the primary cluster as. This is the role you created in the previous step.

      • The -D flag is the output directory of the backup. This is your replica’s data directory that you emptied just before.

      • The -Fp specifies the data to be outputted in the plain format instead of as a tar file.

      • -Xs streams the contents of the WAL log as the backup of the primary is performed.

      • Lastly, -R creates an empty file, named standby.signal, in the replica’s data directory. This file lets your replica cluster know that it should operate as a standby server. The -R option also adds the connection information about the primary server to the postgresql.auto.conf file. This is a special configuration file that is read whenever the regular postgresql.conf file is read, but the values in the .auto file override the values in the regular configuration file.

      When the pg_basebackup command connects to the primary, you will be prompted to enter the password for the role you created in the previous step. Depending on the size of your primary database cluster, it may take some time to copy all the files.

      Your replica will now have all the data files from the primary that it requires to begin replication. Next, you’ll be putting the replica into standby mode and start replicating.

      Step 4 — Restarting and Testing the Clusters

      Now that the primary cluster’s data files have been successfully backed up on the replica, the next step is to restart the replica database cluster to put it into standby mode. To restart the replica database, run the following command:

      • sudo systemctl restart postgresql@12-main

      If your replica cluster restarted in standby mode successfully, it should have already connected to the primary database cluster on your other machine. To check if the replica has connected to the primary and the primary is streaming, connect to the primary database cluster by running:

      Now query the pg_stat_replication table on the primary database cluster as follows:

      • SELECT client_addr, state FROM pg_stat_replication;

      Running this query on the primary cluster will output something similar to the following:

      Output

      client_addr | state ------------------+----------- your_replica_IP | streaming

      If you have similar output, then the primary is correctly streaming to the replica.

      Conclusion

      You now have two Ubuntu 20.04 servers each with a PostgreSQL 12 database cluster running with physical streaming between them. Any changes now made to the primary database cluster will also appear in the replica cluster.

      You can also add more replicas to your setup if your databases need to handle more traffic.

      If you wish to learn more about physical streaming replication including how to set up synchronous replication to ensure zero chance of losing any mission-critical data, you can read the entry in the official PostgreSQL docs.

      You can check out our PostgreSQL topic page for more tutorials and content.



      Source link