PostgreSQL Concepts: Difference between revisions
Line 17: | Line 17: | ||
A collection of databases and global SQL objects, and their common static and dynamic metadata. A clusters is also referred to as [[#Instance|instance]]. There is no relationship within the PostgreSQL cluster and the SQL term "CLUSTER". | A collection of databases and global SQL objects, and their common static and dynamic metadata. A clusters is also referred to as [[#Instance|instance]]. There is no relationship within the PostgreSQL cluster and the SQL term "CLUSTER". | ||
Cluster | ==Cluster Operations== | ||
* [[PostgreSQL_DDL_Operations#initdb|Create a database cluster]] | * [[PostgreSQL_DDL_Operations#initdb|Create a database cluster]] | ||
=Instance= | =Instance= | ||
An instance is a group of backend and auxiliary processes that communicate using a common shared memory area. There is one postmaster process that manages the instance. One instance manages exactly one [[#Cluster|database cluster]] with all its databases. Many instances can run on the same server machine as long as the TCP ports do not conflict. The instance handles all key features of a RDBMS: read and write access to files and shared memory, enforcement of [[ACID]] properties, connections to clients, privilege verification, crash recovery, replication, etc. | An instance is a group of backend and auxiliary processes that communicate using a common shared memory area. There is one postmaster process that manages the instance. One instance manages exactly one [[#Cluster|database cluster]] with all its databases. Many instances can run on the same server machine as long as the TCP ports do not conflict. The instance handles all key features of a RDBMS: read and write access to files and shared memory, enforcement of [[ACID]] properties, connections to clients, privilege verification, crash recovery, replication, etc. |
Revision as of 21:49, 6 October 2023
External
Internal
Connection Types
Local Socket
This is the default type of connection, then the psql client is collocated with the database.
TCP
The default port is 5432.
Cluster
A collection of databases and global SQL objects, and their common static and dynamic metadata. A clusters is also referred to as instance. There is no relationship within the PostgreSQL cluster and the SQL term "CLUSTER".
Cluster Operations
Instance
An instance is a group of backend and auxiliary processes that communicate using a common shared memory area. There is one postmaster process that manages the instance. One instance manages exactly one database cluster with all its databases. Many instances can run on the same server machine as long as the TCP ports do not conflict. The instance handles all key features of a RDBMS: read and write access to files and shared memory, enforcement of ACID properties, connections to clients, privilege verification, crash recovery, replication, etc.
Database
A database is a named collection of local SQL objects. A local SQL object is any object that can be created with an SQL CREATE command.
A PostgresSQL usually comes with 4 pre-existing databases (postgres, admin, template0, template1). "postgres" is fit for general use and it should be used by default.
Database Name Case Sensitivity
Verify this:
It seems that the database name is case sensitive, even if a database is created with "CREATE DATABASE TEST_DB", the database name becomes "test_db", and this is what it should be used in the connect URL. "jdbc:postgres://localhost/test_db" will work, but "jdbc:postgres://localhost/TEST_DB" won't.
Schema
Each database has by default a public schema.
Tablespace
Authentication
User
Users are shared across databases.
The "user" concept is equivalent with the "role" concept. They mean the same thing.
Master User
An administrative user that exists when the RDBMS instance is created and that has privileges to create other database and other users. It is used to bootstrap the administration of the RDBMS instance, by defining all users, objects, and permissions in the databases of your DB instance. Master Username must start with a letter. The RDS documentation refers to it as "Master username".
Role
The "role" concept is equivalent with the "user" concept. They mean the same thing.
Role Attributes
A specific role may:
- be a superuser
- create another role
- create a database
Data Types
Identity
- http://www.postgresqltutorial.com/postgresql-identity-column/
- http://www.postgresqltutorial.com/postgresql-serial/
Timestamp
Numeric Types
SMALLINT
2 byte integer.
INT
4 byte integer. This is a typical choice for integers.
BIGINT
8 byte integer.
DECIMAL
NUMERIC
REAL
DOUBLE PRECISION
SERIAL
BIGSERIAL
TODO
Environment Variables
PGDATA
Set it after installation, see: