PostgreSQL: open-source SQL Database
PostgreSQL is a powerful, open source object-relational Database system with a strong reputation for reliability, feature robustness, and performance.
PgPool-II is a middleware that sits between PostgreSQL servers and a PostgreSQL database client that extends PostgreSQL with clustering capabilities and provide many features like: Connection Pooling, Load Balancing, Replication, Automated Fail Over and Recovery, etc.
Written in: C
Project Goals
- PostgreSQL is a feature-rich database that can handle complex queries and massive databases.
- It is an object-relational database (ORDBMS) with features like table inheritance and function overloading, where as MySQL is a pure relational database (RDBMS).
- PostgreSQL supports Transactional DDL and True Serializable Transactions (MySQL does not).
- Also supports: json data types, table spaces, views, foreign tables and most of the traditional SQL server features.
Project Features
- PostgreSQL has multi-version concurrency control (MVCC mechanism) that can assure real serializable transactions but also nested transactions (savepoints).
- It implements a sophisticated locking mechanism, foreign key referential integrity and table inheritance.
Project Design and Security
- PostgreSQL have various settings can customize the security level for each user to particular databases or other functionalities.
- It implements key functionalities such as: tablespaces, point-in-time recovery, views, rules, subquery, user-defined types, json-b fields.
Sample Configuration
## Sample Configuration for PostgreSQL @ /etc/postgresql/postgresql.conf
# - Connection Settings -
listen_addresses = '127.0.0.1,localhost'
port = 5432
max_connections = 255
superuser_reserved_connections = 5
# - Memory -
shared_buffers = 512MB
temp_buffers = 32MB
work_mem = 16MB
maintenance_work_mem = 256MB
max_stack_depth = 4MB
dynamic_shared_memory_type = posix
# CLIENT CONNECTION DEFAULTS
# - Statement Behavior -
datestyle = 'iso, mdy'
timezone = 'UTC'
lc_messages = 'C'
lc_monetary = 'C'
lc_numeric = 'C'
lc_time = 'C'
# default configuration for text search
default_text_search_config = 'pg_catalog.english'
## END