Glossary
Object
Each configurable part of GatewayD is called an object, for example logger
.
Configuration file
GatewayD has two YAML-based configuration files that are shipped with each release file and contains all the default values.
gatewayd.yaml
: the global configuration file of GatewayD.gatewayd_plugins.yaml
: the plugins configuration file.
Configuration object
Each configuration file contains multiple configuration objects that correspond to GatewayD objects. For example, the global configuration file contains seven configuration objects: loggers
, metrics
, clients
, pools
, proxies
, server
and API
.
Configuration group
To enable multi-tenancy, GatewayD supports configuring multiple instances of each (configuration) object using configuration groups. All the default configuration objects have a single configuration group called default
, except the API
.
Configuration parameter
A configuration object has one or many configuration parameters to set up the corresponding object. For example, the output
parameter on the logger
object is used to set the outputs by the default
(configuration group) logger.
Connection
A connection is a TCP/UDP/UDS connection between GatewayD and a database client. GatewayD can have multiple connections at the same time.
Server
Server is an object that listens on an address:port pair and accepts connections from database clients.
Client
Client object is a client that can connect to the database servers over TCP, UDP and Unix Domain Socket.
Database client
Database clients are either database drivers for different programming languages or any other client that can talk the database language, aka. the wire protocol.
Database driver
A database driver is a library that allows a programming language to communicate with a database. For example, the PostgreSQL driver for Python is called psycopg.
Database language
The database language is the language that the database server understands. For example, the PostgreSQL database server understands the PostgreSQL wire protocol.
Wire protocol
The wire protocol is the language that the database client and the database server understand. For example, the PostgreSQL database server understands the PostgreSQL wire protocol.
Database server
A database server is a server that hosts a database. For example, PostgreSQL is a database server.
Database Management System (DBMS)
A database management system is a software that manages a database. For example, PostgreSQL is a database management system.
Event
The server works in an event-based manner and many events will fire during the lifetime of the server and the database client connections.
Proxy
The proxy object is responsible for handling the traffic between the database client and the database server and is directly connected to the server object.
Pool
The pool object is responsible for managing the client objects and is directly connected to the proxy object.
Connection health check
The proxy object will periodically check the connection health by disconnecting stale connections the database server and creating the same number of new connections to the database server.
Stale connection
A stale connection is a connection that has not been used for a long time and is considered unhealthy.
PostgreSQL wire protocol
The PostgreSQL wire protocol is the binary protocol that the PostgreSQL database server understands.