Re: Add A Glossary - Mailing list pgsql-hackers

From Laurenz Albe
Subject Re: Add A Glossary
Date
Msg-id ffda7f2726ed86fa4199a6499b6307c0f8ccefc7.camel@cybertec.at
Whole thread Raw
In response to Re: Add A Glossary  (Jürgen Purtz <juergen@purtz.de>)
List pgsql-hackers
On Wed, 2020-05-20 at 13:17 +0200, Jürgen Purtz wrote:
> > FWIW, I feel somewhat like Alvaro on that point; I use those terms synonymously,
> > perhaps distinguishing between a "started cluster" and a "stopped cluster".
> > After all, "cluster" refers to "a cluster of databases", which are there, regardless
> > if you start the server or not.
> > 
> > The term "cluster" is unfortunate, because to most people it suggests a group of
> > machines, so the term "instance" is better, but that ship has sailed long ago.
> > 
> > The static part of a cluster to me is the "data directory".
>   
> cluster/instance: The different nature (static/dynamic) of what I
>       call "cluster" and "instance" as well as the existence of the two
>       commands "initdb — create a new PostgreSQL database cluster" and 
>       "pg_ctl — initialize, start, stop, or control a PostgreSQL server"
>       confirms me in my opinion that we need two different terms for
>       them.

I think that the "pg_ctl" example does not apply:
It does not talk about starting the cluster, but about starting the server process,
that is "server" in the way I understand it.

> There are situations where we need a single term for both of
>       them. "Instance and its data directory" or "Instance and its
>       cluster" are too wordy. In many cases we use "database server" or
>       "server" in this sense. Imo "Server" is too short and ambiguous.
>       "database server", the plural form "databases server", or the new
>       term "cluster server", which is more accurate, would be ok for me.
>       (Similar to "server", the term "cluster" is also used in many
>       different contexts - but only outside of the PG world; within our
>       context "cluster" is not ambiguous.) 

That does not feel right to me.

"cluster server", ouch. "databases server", ouch as well.

I never felt the term "cluster" was unclear in these contexts.
Sometimes it means "data directory", sometimes it is used for "server process",
but I think few people would think one cound connect to a data directory
or create a process in a directory (initdb).

I think clarity is a Good Thing, but it can be overdone.

> > > server/host: We need a term to describe the underlying hardware respectively
> > > the virtual machine or container, where PG is running. I suggest to use both
> > > *server* and *host*. In computer science, both have their eligibility and are
> > > widely used. Everybody understands *client/server architecture* or *host* in
> > > TCP/IP configuration. We cannot change such matter of course. I suggest to
> > > use both depending on the context, but with the same meaning: "real hardware,
> > > a container, or a virtual machine".
> > 
> > On this I have a strong opinion because of my Unix mindset.
> > "machine" and "host" are synonyms, and it doesn't matter to the database if they
> > are virtualized or not.  You can always disambiguate by adding "virtual" or "physical".
> > 
> > A "server" is a piece of software that responds to client requests, never a machine.
> > In my book, this is purely Windows jargon.  The term "client-server architecture"
> > that you quote emphasized that.
> > 
> > Perhaps "machine" would be the preferable term, because "host" is more prone to
> > misunderstandings (except in a networking context).
>     
> server/host: I agree that we are not interested in the question
>       whether there is real hardware or any virtualization container. We
>       are even not interested in the operating system. Our primary
>       concern is the existence of a port of the Internet Protocol. But
>       is the term "server" appropriate to name an IP-port? Additionally,
>       "server" is used for other meanings: a) the previously mentioned
>       "database server" b) a (virtual) machine: "server-side", "... the
>       file ... loaded by the server ..." c) binaries "... the server
>       must be built with SSL support ..." d) whenever it seems to be
>       appropriate: "standby server", "... the server parses query ...",
>       "server configuration", "server process".

You are most thorough :^)
   
> Because of its ambiguous usage, the definition of "server" must
>       clarify the allowed meanings. What's about:
> 
> server: Depending on the context, the term *server* denotes:
>       
> An IP-port which is offered by any OS.   ?????

A port is a server?  No way.
      
> A - possibly virtualized - machine

It might be good to disambiguate that, but I don't think that the PostgreSQL
documentation should use the word "server" to mean "machine".

> An abbreviation for the slightly longer term
>         "database(s)/cluster server"  ??? this will support the
>         readability, but not the clarity ???

"Server" is short for "database server" and is a set of processes that listen
for and handle incoming database client requests.

I think that covers all the meanings you quoted from the documentation,
except c), where it is used as shorthand for "server executable".

Yours,
Laurenz Albe




pgsql-hackers by date:

Previous
From: Jürgen Purtz
Date:
Subject: Re: Add A Glossary
Next
From: David Rowley
Date:
Subject: Hybrid Hash/Nested Loop joins and caching results from subplans