- Object Relational Database Management System (ORDBMS) objects (eg: tables) can be related in a Hierarchy: Parent -> Child
- Transactional RDBMS: SQL statements have implicit: BEGIN; COMMIT: statements. SQL statements may also have explicit BEGIN COMMIT statements
- developed at UC Berkeley like along with bsd-unix
- One process per connection: master process = “postmaster” auto-spawns per new connection
- Processed (pid’s) use one cpu-core per connection: o/s may spawn new connections on a different cpu-core. no cross-core queries
- Multiple helper processes, which appear as ‘postgres’ instances, always running eg: stats collector, background writer (protect agains sudden failure ), auto-vacuum (cleanup/ space reclaimer), wal sender (that’s write ahead log)
- max db size: unlimited – limited by available storage.(terabytes, perabytes, exabytes)
- max table size: 32tb – stored as multiple 1gb files – changable (could be prob for some o/s’s)
- max row size: 400gb
- max column size: 1gb (per row ie: per field)
- max indexes per table: unlimited
- max identifier length (db objects – tables, columns, triggers, functions@ 63 bytes. this is extensible via source code
- default listener tcp port 5432. so may install postgresql as non-privilaged user
- users are distinct from o/s users
- users are authenticated globally (per server), then assigned permissions per database.
- inheratance. tables lower in hierachy may inherit columns from heigher tables (ie parents) so long as no contraints eg foreign keys.
- case insensative commands – without double quotes (eg: select * from syslog;)
- case sensative commands – with double quotes – (eg: select * from “syslog”;)
- three primary config files, located in postgres-root A.pg_hba.conf (host based access) B.postgresql.conf general settings C. pg_ident.conf – user mappings
- integrated log rotation (config by age or size)