diff --git a/doc/src/sgml/advanced.sgml b/doc/src/sgml/advanced.sgml
index ae5f3fac75..965eb751c0 100644
--- a/doc/src/sgml/advanced.sgml
+++ b/doc/src/sgml/advanced.sgml
@@ -1,7 +1,7 @@
 <!-- doc/src/sgml/advanced.sgml -->
 
  <chapter id="tutorial-advanced">
-  <title>Advanced Features</title>
+  <title>Advanced SQL Features</title>
 
   <sect1 id="tutorial-advanced-intro">
    <title>Introduction</title>
diff --git a/doc/src/sgml/architecture.sgml b/doc/src/sgml/architecture.sgml
new file mode 100644
index 0000000000..4c328c37f1
--- /dev/null
+++ b/doc/src/sgml/architecture.sgml
@@ -0,0 +1,562 @@
+<!-- doc/src/sgml/architecture.sgml -->
+
+ <chapter id="tutorial-architecture">
+  <title>The Architecture</title>
+
+  <para>
+   Every DBMS implements basic strategies to achieve a fast and
+   robust system. This chapter provides an overview about some
+   of the techniques which are used by <productname>
+   PostgreSQL</productname> to reach this aim.
+  </para>
+
+  <sect1 id="tutorial-ram-proc-file">
+   <title>Collabortion of Processes, RAM, and Files</title>
+   <para>
+    As is a matter of course, in a client/server architecture
+    clients do not have direct access to the database. Instead,
+    at the server side there is a group of processes, which
+    receive all requests comming from client applications,
+    handle them, and send resulting information back to
+    the clients.
+    These server-side processes work in close cooperation to
+    each other. Together with their common
+    <xref linkend="glossary-shared-memory"/> they are called an
+    <link linkend="glossary-instance">Instance</link>.
+   </para>
+
+   <para>
+    The instance is initiated by the
+    <xref linkend="glossary-postmaster"/> process.
+    He loads the configuration files, allocates the
+    <firstterm>Shared Memory</firstterm>
+    and starts the comprehensive network of processes:
+    <xref linkend="glossary-background-writer"/>,
+    <xref linkend="glossary-checkpointer"/>,
+    <xref linkend="glossary-wal-writer"/>,
+    <xref linkend="glossary-archiver"/>,
+    <xref linkend="glossary-auto-vacuum"/>,
+    <xref linkend="glossary-stats-collector"/>,
+    <xref linkend="glossary-log-writer"/>, and more.
+    <xref linkend="tutorial-architecture-figure"/> visualizes
+    main aspects of their collaboration.
+   </para>
+
+   <para>
+    Whenever a client application tries to connect to a
+    <xref linkend="glossary-database"/>, this request is handled
+    in a first step by the <firstterm>Postmaster
+    process</firstterm>. He checks the authorization, starts a
+    new <xref linkend="glossary-backend-process"/>,
+    and instructs the client application to connect to this
+    new <firstterm>Backend process</firstterm>. All further
+    client requests go to this process and are handled
+    by him. Thus - after the initial phase - each client
+    application communicates with exactly
+    one <firstterm>Backend process</firstterm>.
+   </para>
+
+   <figure id="tutorial-architecture-figure">
+    <title>Architecture</title>
+    <mediaobject>
+     <imageobject role="html">
+      <!-- attribute 'width=..px' is necessary to keep font-size of SVG text
+           in correlation with font-size of surrounding HTML  -->
+      <imagedata fileref="images/ram-proc-file-raw.svg" format="SVG" width="900px" />
+     </imageobject>
+     <imageobject role="fo">
+      <!-- For PDF attribute 'width=100%' is necessary to keep complete SVG visible
+           on the page, which has a fixed width. Font sizes will be adopted.  -->
+      <imagedata fileref="images/ram-proc-file-raw.svg" format="SVG" width="100%" />
+     </imageobject>
+    </mediaobject>
+   </figure>
+
+   <para>
+    Client requests (SELECT, UPDATE, ...) usually leads to the
+    necessity to read or write some data. In an first attempt
+    the client's <firstterm>Backend process</firstterm> tries
+    to get the information out of <firstterm>Shared
+    Memory</firstterm>. This <firstterm>Shared
+    Memory</firstterm> is a mirror of parts of the
+    <xref linkend="glossary-heap"/> and
+    <xref linkend="glossary-index"/> files. Because files are
+    much huger than memory, it is easily possible that
+    the desired information is not (completely) available
+    in the RAM. In this case the <firstterm>Backend process
+    </firstterm> must transfer additional file pages to
+    <firstterm>Shared Memory</firstterm>. Files are physically
+    organized in pages. Every transfer between files and
+    RAM is performed in units of complete pages while retaining
+    their size and layout.
+   </para>
+
+   <para>
+    Reading file pages is notedly slower than reading
+    RAM. This is the main motivation for the existence of
+    <firstterm>Shared Memory</firstterm>. As soon as one
+    of the <firstterm>Backend processes</firstterm> has done
+    the job, this pages are available for all other
+    <firstterm>Backend processes</firstterm> for direct
+    access in RAM.
+   </para>
+
+   <para>
+    <firstterm>Shared Memory</firstterm> is limited in size.
+    Sooner or later it is necessary to overwrite old RAM
+    pages. As long as the content of such pages hasn't
+    changed, this is not a problem. But in
+    <firstterm>Shared Memory</firstterm> also write
+    actions take place
+    - performed by any of the <firstterm>Backend
+    processes</firstterm> (or the
+    <firstterm>Auto Vacuum</firstterm> or other
+    processes).
+    Such modified pages are called
+    <firstterm>dirty pages</firstterm>.
+    Before <firstterm>dirty pages</firstterm> can be overwritten,
+    they must be saved to disk. This is a two-step process.
+   </para>
+
+   <para>
+    First, whenever the content of a page changes, a
+    <xref linkend="glossary-wal-record"/> is created out
+    of the delta-information (difference between old and
+    new content) and stored in another area of the
+    <firstterm>Shared Memory</firstterm>. These
+    <firstterm>WAL records</firstterm> are read by the
+    <firstterm>WAL writer</firstterm> process,
+    who runs in parallel to the <firstterm>Backend
+    processes</firstterm> and all other processes of
+    the <firstterm>instance</firstterm>. He writes
+    the continuously arising <firstterm>WAL
+    records</firstterm> to
+    the end of the current <firstterm>WAL
+    file</firstterm>. Because of the sequential
+    nature of this writing, it is much faster than
+    the more or less random access
+    to data files with <firstterm>heap</firstterm>
+    and <firstterm>index</firstterm> information.
+    As mentioned, this WAL-writing happens
+    in an independent process. Nevertheless all
+    <firstterm>WAL records</firstterm> created out of one
+    <firstterm>dirty page</firstterm> must be transfered
+    to disk before the <firstterm>dirty page</firstterm>
+    itself can be transfered to disk (???).
+   </para>
+
+   <para>
+    Second, the transfer of <firstterm>dirty pages</firstterm>
+    from <firstterm>Shared Memory</firstterm> to files must
+    take place. This is the primarily duty of the
+    <firstterm>Background Writer</firstterm> process. Because
+    huge I/O activities can block other processes significantly,
+    he starts periodically and acts only for a short period.
+    Doing so, his expensive I/O activities are spread over
+    time avoiding huge I/O peaks. Also the <firstterm>
+    Checkpointer</firstterm> process transfers
+    <firstterm>dirty pages</firstterm> to files, see next
+    paragraph.
+   </para>
+
+   <para>
+    The <firstterm>Checkpointer</firstterm> has a special
+    duty. As its name suggests, he has to create
+    <firstterm>Checkpoints</firstterm>. Such a
+    <xref linkend="glossary-checkpoint"/> is a point in time
+    when all older <firstterm>dirty pages</firstterm>,
+    all older <firstterm>WAL records</firstterm>, and
+    lastly a special <firstterm>Checkpoint record
+    </firstterm> have been written and flushed to disk.
+    In consequence, after a <firstterm>Checkpoint</firstterm>
+    data files and <firstterm>WAL files</firstterm> are in sync.
+    In case of a recovery (after a crash of the instance)
+    it is known, that the information of all
+    <firstterm>WAL records</firstterm> preceding
+    the last <firstterm>Checkpoint record</firstterm>
+    is already integrated into the data files. This
+    speeds up a possibly occurring recovery.
+   </para>
+
+   <para>
+    In correlation with data changes,
+    <firstterm>WAL records</firstterm> arise and are writen
+    to <firstterm>WAL files</firstterm>.
+    Those <firstterm>WAL files</firstterm> - in combination with
+    a previously taken <firstterm>Base Backup</firstterm> -
+    are necessary to restore a database after a crash of the
+    disk, where data files have been stored. Therefore it is
+    recommended to transfer a copy of the <firstterm>
+    WAL files</firstterm>
+    to a second, independent place. The purpose of the
+    <xref linkend="glossary-archiver"/> process is to perform
+    this copy action.
+   </para>
+
+   <para>
+    The <firstterm>Stats Collector</firstterm> process collects
+    counter about accesses to <firstterm>SQL
+    objects</firstterm> like tables, rows, indexes, pages,
+    and others. He stores the obtained information in system
+    tables.
+   </para>
+
+   <para>
+    The <firstterm>Log Writer</firstterm> process writes
+    readable text lines about serious and non-serious events,
+    which can happen during database access, e.g.: wrong password,
+    no permission, long-running query, ... .
+   </para>
+
+  </sect1>
+
+  <sect1 id="tutorial-cluster-db-schema">
+   <title>Cluster, Database, Schema</title>
+   <para>
+    <productname>PostgreSQL</productname> organizes data and
+    meta data in a strict hierarchy and allows connections
+    - depending on the user's rights - to access objects of
+    different hierarchy levels.
+   </para>
+   <sect2 id="tutorial-ownership">
+    <title>Ownership</title>
+
+    <para>
+     <xref linkend="tutorial-internal-objects-hierarchy-figure"/>
+     shows the relation of internal objects to each other, especially
+     their hierarchical nature.
+    </para>
+
+    <para>
+     On a <xref linkend="glossary-server"/>
+     exists one or more <xref linkend="glossary-cluster"/>.
+     A <firstterm>cluster</firstterm> essentially contains
+     <link linkend="managing-databases">databases</link>, but also
+     <link linkend="manage-ag-tablespaces">tablespaces</link>,
+     <link linkend="replication-origins">replication origins</link>,
+     subscriptions for
+     <link linkend="logical-replication">logical replication</link>,
+     <link linkend="database-roles">roles</link>, and information about all
+     <link linkend="catalog-pg-database">database names</link>
+     within this cluster.
+     <!--, as well as associated
+     comments, descriptions and toast-tables for such objects. -->
+     A <firstterm>database</firstterm> essentially contains
+     <firstterm>schemas</firstterm>, but also
+     <link linkend="collation">collations</link>, and - if created -
+     <link linkend="extend-extensions">extensions</link>.
+     A <firstterm>schema</firstterm> contains such objects
+     with which users interact mostly: <firstterm>tables,
+     views</firstterm>, and many more.
+    </para>
+
+    <figure id="tutorial-internal-objects-hierarchy-figure">
+     <title>Hierarchy of Internal Objects</title>
+     <mediaobject>
+      <imageobject role="html">
+       <!-- attribute 'width=..px' is necessary to keep font-size of SVG text
+            in correlation with font-size of surrounding HTML  -->
+       <imagedata fileref="images/internal-objects-hierarchy-raw.svg" format="SVG" width="900px" />
+      </imageobject>
+      <imageobject role="fo">
+       <!-- For PDF attribute 'width=100%' is necessary to keep complete SVG visible
+            on the page, which has a fixed width. Font sizes will be adopted.  -->
+       <imagedata fileref="images/internal-objects-hierarchy-raw.svg" format="SVG" width="100%" />
+      </imageobject>
+     </mediaobject>
+    </figure>
+
+    <para>
+     The hierarchy is strict, which means that each object has
+     exactly one parent, e.g.: each <firstterm>table</firstterm>
+     or <firstterm>view</firstterm> belongs to a certain
+     <firstterm>schema</firstterm>, it cannot belong to another
+     <firstterm>schema</firstterm>. An <firstterm>extension
+     </firstterm> like a <firstterm>foreign data wrapper
+     </firstterm> belongs to exactly one
+     <firstterm>database</firstterm>. If it is needed in another
+     <firstterm>database</firstterm> as well, it must be installed
+     twice.
+    </para>
+
+    <para>
+     <firstterm>Schemas</firstterm> contain <firstterm>SQL objects
+     </firstterm> of different type: <firstterm>table, view,
+     materialized view, index, constraint, sequence, function,
+     procedure, trigger, data type, operator</firstterm>, and more.
+     A schema is a namespace for all of its objects, independent
+     from the object type, and ensures that within its scope object
+     names are unique. E.g.: It is not possible
+     to have a table <literal>employee</literal> and a view
+     <literal>employee</literal> within the same
+     <firstterm>schema</firstterm>. But it is possible to have
+     two tables <literal>employee</literal> in different
+     <firstterm>schemas</firstterm>. In this case the two tables
+     are different objects and absolutely independent from each
+     other.
+    </para>
+
+   </sect2>
+
+   <sect2 id="tutorial-visibility">
+    <title>Visibility</title>
+    <para>
+     Independent from this strict 'belong-to' hierarchy in most
+     cases the knowledge about objects of the same or another
+     level is available via the <firstterm>system catalog</firstterm>.
+     Also the access to them is possible, if appropriate privileges
+     are granted.
+     All connections act at the database level (bold ellipse in the
+     above figure). From here they know about and have access to
+     nearly all objects:
+     <itemizedlist>
+      <listitem>
+       <para>
+        Their direct child objects <firstterm>schema, extension,
+        </firstterm> and <firstterm>collation</firstterm>. They can
+        access different schemas and use all extensions and
+        collations of this database.
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Their grandchild objects <firstterm>tables, view, ...
+        </firstterm>. The sequence of schemas for locating
+        such objects is defined via the variable <firstterm>
+        search_path</firstterm>.
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        All <firstterm>tablespaces</firstterm>. If a tablespace is
+        defined in any database, it is automatically visible and
+        active in all other databases. It's name cannot be used
+        in any of the other databases for creating an additional
+        tablespace.
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        All <firstterm>roles</firstterm>. If a role is defined
+        in any database, it is visible and active in all
+        other databases. This implies, that the same
+        role cannot be created again in a different
+        <firstterm>database</firstterm>, it
+        exists already. But a DBA can grant different
+        privilegs to the same roles depending on databases.
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        All <firstterm>database names</firstterm> of this cluster.
+        Although the database names are known, the current
+        connection is not able to switch to a different
+        <firstterm>database</firstterm>. To do so, a different
+        connection is necessary. This behaviour results from the
+        implementation of connections.
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+        Cluster limits are unbreachable boarders for a single
+        connection. No information about other clusters or their
+        content is visible or accessible. Only <firstterm>
+        foreing data wrappers</firstterm> and <firstterm>
+        replication</firstterm> mechanisms are able to communicate
+        across cluster limits. To do so, they use additional
+        communication lines.
+       </para>
+      </listitem>
+
+     </itemizedlist>
+    </para>
+   </sect2>
+
+   <sect2 id="tutorial-initial-objects">
+    <title>Initial Objects</title>
+
+    <para>
+     As a result of its initialization process
+     (<command>initdb</command>) a cluster
+     contains certain objects with predefined names. When
+     DBAs create more objects to satisfy their needs, these
+     user-created objects fit into the same hierarchy
+     and comply to the same visibility rules.
+     <xref linkend="tutorial-cluster-db-schema-figure"/>
+     shows the objects and their names.
+    </para>
+
+    <figure id="tutorial-cluster-db-schema-figure">
+     <title>Cluster, Database, Schema</title>
+     <mediaobject>
+      <imageobject role="html">
+       <!-- attribute 'width=..px' is necessary to keep font-size of SVG text
+            in correlation with font-size of surrounding HTML  -->
+       <imagedata fileref="images/cluster-db-schema-raw.svg" format="SVG" width="900px" />
+      </imageobject>
+      <imageobject role="fo">
+       <!-- For PDF attribute 'width=100%' is necessary to keep complete SVG visible
+            on the page, which has a fixed width. Font sizes will be adopted.  -->
+       <imagedata fileref="images/cluster-db-schema-raw.svg" format="SVG" width="100%" />
+      </imageobject>
+     </mediaobject>
+    </figure>
+
+    <para>
+     By default the command <command>initdb</command> creates the
+     cluster <literal>data</literal>.
+    </para>
+
+    <para>
+     <literal>template0</literal> is the very first
+     <firstterm>database</firstterm> of any <firstterm>
+     cluster</firstterm>. <literal>template0</literal>
+     is created by C-routines during the initialization phase
+     of the <firstterm>cluster</firstterm>.
+     In a second step <literal>template1</literal> is generated
+     as a copy of <literal>template0</literal> and finally
+     <literal>postgres</literal> as a copy of
+     <literal>template1</literal>. All other
+     <link linkend="app-createdb">new databases</link>
+     of this <firstterm>cluster</firstterm>,
+     such as <literal>my_db</literal>, are also copied from
+     <literal>template1</literal>. Due to the special
+     role of <literal>template0</literal> as the origin
+     of all other <firstterm>databases</firstterm>, no client
+     can connect to it.
+    </para>
+
+    <para>
+     The schema <literal>public</literal> acts as the default
+     schema and contains all such
+     <firstterm>SQL objects</firstterm>, which are created
+     within <literal>public</literal> or without using any schema
+     name. <literal>public</literal> should not contain user defined
+     <firstterm>SQL objects</firstterm>. It is recommended to
+     create a separate <firstterm>schema</firstterm> which
+     holds individual objects like application-specific tables or
+     views.
+    </para>
+
+    <para>
+     <literal>pg_catalog</literal> is a schema for all tables
+     and views of the <xref linkend="glossary-system-catalog"/>.
+     <literal>information_schema</literal> is a schema for several
+     tables and views of the <firstterm>System Catalog</firstterm>
+     in a way, which conforms to the SQL standard.
+    </para>
+
+   </sect2>
+  </sect1>
+
+  <sect1 id="tutorial-directories">
+   <title>Directory Structure</title>
+
+   <para>
+    <productname>PostgreSQL</productname> organizes long lasting
+    data as well as temporary state information about transactions
+    or replication actions in the file system. Every
+    <xref linkend="glossary-cluster"/> has its own root directory
+    anywhere in the file system. In many cases, the environment
+    variable <literal>PGDATA</literal> points to this directory.
+    The example of the following survey, which is shown in
+    <xref linkend="tutorial-directories-figure"/>, uses
+    <literal>data</literal> as the name of this root directory.
+   </para>
+
+   <figure id="tutorial-directories-figure">
+    <title>Directory Structure</title>
+    <mediaobject>
+     <imageobject role="html">
+      <!-- attribute 'width=..px' is necessary to keep font-size of SVG text
+           in correlation with font-size of surrounding HTML  -->
+      <imagedata fileref="images/directories-raw.svg" format="SVG" width="900px" />
+     </imageobject>
+     <imageobject role="fo">
+      <!-- For PDF attribute 'width=100%' is necessary to keep complete SVG visible
+           on the page, which has a fixed width. Font sizes will be adopted.  -->
+      <imagedata fileref="images/directories-raw.svg" format="SVG" width="100%" />
+     </imageobject>
+    </mediaobject>
+   </figure>
+
+   <para>
+    <literal>data</literal> contains many subdirectories and
+    some files, all of which are necessary to store long lasting
+    as well as temporary data. The following paragraphs
+    describe the files and subdirectories in
+    <literal>data</literal>.
+   </para>
+
+   <para>
+    <literal>base</literal> is a subdirectory in which one
+    subdirectory per <firstterm>database</firstterm> exists.
+    The names of those sudirectories consists of numbers.
+    These are the internal
+    <firstterm>Object Identifiers (OID)</firstterm>, which are
+    numbers to identify the database definition in the
+    <xref linkend="glossary-system-catalog"/>.
+   </para>
+
+   <para>
+    Within the database-specific
+    subdirectories there are many files. Primarily they contain
+    the <firstterm>heap</firstterm> and <firstterm>
+    index</firstterm>. But there are also optimization information
+    like <link linkend="storage-fsm">Free Space Maps</link> or
+    <link linkend="storage-vm">Visibility Maps</link>.
+   </para>
+
+   <para>
+    Another important subdirectory is <literal>global</literal>.
+    In analogy to the <firstterm>database</firstterm>-specific
+    subdirectories, there are files containing information about
+    <xref linkend="glossary-global-sql-object"/>s. One type
+    of such <firstterm>Global Objects</firstterm> are
+    <firstterm>tablespaces</firstterm>. In
+    <literal>global</literal> there are information about
+    the <firstterm>tablespaces</firstterm>, neither the
+    <firstterm>tablespaces</firstterm> itself nor the
+    symbolic links to them.
+   </para>
+
+   <para>
+    The subdirectory <literal>pg_wal</literal> contains
+    <link linkend="glossary-wal-file">WAL files</link>.
+    They arise and grow in parallel with data changes in the
+    <firstterm>cluster</firstterm> and remain alive as long as
+    they are required for recovery, archiving, or replication.
+    Please note that they belong to the complete cluster, not
+    to single databases.
+   </para>
+
+   <para>
+    The subdirectory <literal>pg_xact</literal> contains
+    information about the status of each transaction.
+   </para>
+
+   <para>
+    In <literal>pg_tblspc</literal> there are symbolic links
+    that point to directories containing such<firstterm>
+    SQL objects</firstterm> that are created within
+    <firstterm>tablespaces</firstterm>.
+   </para>
+
+   <para>
+    In the directory <literal>data</literal> exists also some
+    files. As long as the
+    <firstterm>cluster</firstterm> is up and running, the file
+    <literal>postmaster.pid</literal> exists and contains the ID of
+    the <firstterm>Postmaster</firstterm> process. In many cases
+    the configuration files of this <firstterm>cluster</firstterm>
+    are stored here.
+   </para>
+
+  </sect1>
+
+ </chapter>
diff --git a/doc/src/sgml/filelist.sgml b/doc/src/sgml/filelist.sgml
index 3da2365ea9..022c2efda3 100644
--- a/doc/src/sgml/filelist.sgml
+++ b/doc/src/sgml/filelist.sgml
@@ -8,9 +8,10 @@
 <!ENTITY problems   SYSTEM "problems.sgml">
 
 <!-- tutorial -->
-<!ENTITY advanced   SYSTEM "advanced.sgml">
-<!ENTITY query      SYSTEM "query.sgml">
-<!ENTITY start      SYSTEM "start.sgml">
+<!ENTITY start         SYSTEM "start.sgml">
+<!ENTITY architecture  SYSTEM "architecture.sgml">
+<!ENTITY query         SYSTEM "query.sgml">
+<!ENTITY advanced      SYSTEM "advanced.sgml">
 
 <!-- user's guide -->
 <!ENTITY array      SYSTEM "array.sgml">
@@ -169,6 +170,7 @@
 <!ENTITY release-13     SYSTEM "release-13.sgml">
 
 <!ENTITY limits     SYSTEM "limits.sgml">
+<!ENTITY glossary   SYSTEM "glossary.sgml">
 <!ENTITY acronyms   SYSTEM "acronyms.sgml">
 
 <!ENTITY features-supported   SYSTEM "features-supported.sgml">
diff --git a/doc/src/sgml/glossary.sgml b/doc/src/sgml/glossary.sgml
new file mode 100644
index 0000000000..664d6d23b3
--- /dev/null
+++ b/doc/src/sgml/glossary.sgml
@@ -0,0 +1,502 @@
+<!-- doc/src/sgml/glossary.sgml -->
+
+<appendix id="glossary">
+ <title>Glossary</title>
+
+ <para>
+  The glossary contains a collection of
+  <productname>PostgreSQL</productname> related terms.
+  In order to keep such terms together, which are related
+  to each other or can be easily confused, they are not
+  ordered alphabetically.
+ </para>
+ <para>
+  In some cases terms are extended by an alternative wording
+  in parenthesize, e.g.: '(or: Database Server)'. Such deviant
+  formulations are sometimes used at various points in the
+  documentation, but will be replaced by the preferred term
+  in a future release.
+ </para>
+
+ <glosslist>
+
+  <glossentry id="glossary-server">
+   <glossterm>Server (or: Host)</glossterm>
+   <glossdef>
+    <para>
+     The term <firstterm>server</firstterm> denotes real hardware,
+     a container, or a Virtual Machine.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-instance">
+   <glossterm>Instance (or: Database Server, or: Backend Server)</glossterm>
+   <glossdef>
+    <para>
+     An <link linkend="app-postgres">instance</link> is a group
+     of processes plus their common
+     <firstterm>Shared Memory</firstterm> running on a single
+     <firstterm>server</firstterm>. The instance handles all key
+     features of a DBMS: read and write access to files and
+     <firstterm>Shared Memory</firstterm>, assurance of the
+     <firstterm>ACID paradigm</firstterm>, <firstterm>MVCC</firstterm>,
+     <firstterm>connections</firstterm> to client programms,
+     <firstterm>backup</firstterm>, <firstterm>recovery</firstterm>,
+     <firstterm>replication</firstterm>, <firstterm>privileges</firstterm>, … .
+    </para>
+    <para>
+     An instance manages exactly one <firstterm>cluster</firstterm>.
+    </para>
+    <para>
+     Many <firstterm>instances</firstterm> can run on the same
+     <firstterm>server</firstterm> – as
+     long as they use different IP ports and manage different
+     <firstterm>clusters</firstterm>. Different
+     <firstterm>instances</firstterm> on a
+     <firstterm>server</firstterm> may use the same or different
+     versions of PostgreSQL.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-cluster">
+   <glossterm>Cluster (or: Database Cluster)</glossterm>
+   <glossdef>
+    <para>
+     A <link linkend="app-initdb">cluster</link> is a
+     group of 3 or more databases (<literal>template0</literal>,
+     <literal>template1</literal>, <literal>postgres</literal>,
+     ...) plus their <link linkend="glossary-global-sql-object">
+     Global SQL objects</link>. The cluster is managed by exactly one
+     <firstterm>instance</firstterm>.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-database">
+   <glossterm>Database</glossterm>
+   <glossdef>
+    <para>
+     A <link linkend="manage-ag-overview">database</link> is
+     a named collection of <firstterm>SQL objects</firstterm>.
+     The database is stored in files of a single directory plus
+     – optionally - in additional tablespaces.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-schema">
+   <glossterm>Schema</glossterm>
+   <glossdef>
+    <para>
+     A <link linkend="ddl-schemas">schema</link> is a
+     namespace for <firstterm>SQL objects</firstterm>, which
+     reside in the same <firstterm>database</firstterm>. The
+     names of such objects are unique - even across different
+     types of objects. Same object names can only
+     be used in different schemas.
+    </para>
+    <para>
+     There are some predefined schemas:
+    </para>
+    <para>
+     Schema <literal>public</literal>: A schema for objects, which
+     were created within this schema or outside of any schema.
+     It is recommended that users do not store their new
+     objects in <literal>public</literal>. Instead, they shall
+     create their own schema, e.g. <literal>my_schema</literal> and
+     store everything over there.
+    </para>
+    <para>
+     Schema <literal>pg_catalog</literal>: A schema for all tables and
+     views of the <literal>System Catalog</literal>.
+    </para>
+    <para>
+     Schema <literal>information_schema</literal>: A schema for several
+     tables and views of the <literal>System Catalog</literal> in a way,
+     which conforms to the SQL standard.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-system-catalog">
+   <glossterm>System Catalog</glossterm>
+   <glossdef>
+    <para>
+     The <link linkend="ddl-schemas-catalog">
+     System Catalog</link> is a collection of tables and
+     views, which describes the structure of all
+     <firstterm>SQL objects</firstterm> of this
+     <firstterm>database</firstterm> and the
+     <firstterm>Global SQL objects</firstterm> of the
+     <firstterm>cluster</firstterm>.
+     The System Catalog resides in the schema
+     <literal>pg_catalog</literal>. Main parts are mirrored as
+     views in the schema <literal>information_schema</literal>.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-catalog">
+   <glossterm>Catalog</glossterm>
+   <glossdef>
+    <para>
+     The SQL standard uses the standalone term
+     <link linkend=" manage-ag-overview">Catalog</link>
+     for what is called a <firstterm>database</firstterm> in
+     PostgreSQL's terminology.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-sql-object">
+   <glossterm>SQL Object</glossterm>
+   <glossdef>
+    <para>
+     An <link linkend="manage-ag-overview">SQL object</link>
+     is a <firstterm>table, view, materialized view, index,
+     constraint, sequence, function, procedure, trigger, data type,
+     operator</firstterm>, … . Every SQL object belongs
+     to exactly one <firstterm>schema</firstterm>. Within this
+     <firstterm>schema</firstterm> its name is unique.
+    </para>
+    <para>
+     See also: <link linkend="glossary-global-sql-object">
+     Global SQL objects</link>.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-global-sql-object">
+   <glossterm>Global SQL Object</glossterm>
+   <glossdef>
+    <para>
+     Not all objects belong to a certain
+     <firstterm>schema</firstterm> but to their
+     <firstterm>database</firstterm> or even to the complete
+     <firstterm>cluster</firstterm>. Therefore they are called
+     <firstterm>Global SQL objects</firstterm>.
+     <firstterm>Collations</firstterm> and <firstterm>Extensions
+     </firstterm> like <firstterm>foreing data wrappers</firstterm>
+     reside at the database level;
+     <firstterm>database names</firstterm>,
+     <firstterm>roles</firstterm>,
+     <firstterm>tablespaces</firstterm>,
+     <firstterm>replication origins</firstterm>, and
+     subscriptions for <firstterm>logical replication</firstterm>
+     at the cluster level.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-shared-memory">
+   <glossterm>Shared Memory</glossterm>
+   <glossdef>
+    <para>
+     <link linkend="runtime-config-resource-memory">
+     Shared Memory</link> is RAM which is used by the processes
+     of an <firstterm>instance</firstterm> in common. It
+     mirrors parts of database files, provides an area for
+     <firstterm>WAL records</firstterm>, and stores some more
+     common information. Please notice, that Shared Memory
+     belongs to the complete <firstterm>instance</firstterm>,
+     not to a single <firstterm>database</firstterm>.
+    </para>
+    <para>
+     Shared Memory is organized in <firstterm>pages</firstterm>.
+     If such a page gets modified, she is called a
+     <firstterm>dirty page</firstterm> until she is written
+     back to the file system.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-postmaster">
+   <glossterm>Postmaster</glossterm>
+   <glossdef>
+    <para>
+     <link linkend="server-start">Postmaster</link> is the
+     name for the very first process of an
+     <firstterm>instance</firstterm>. He starts
+     the other processes and creates <firstterm>
+     backend processes</firstterm> on demand.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-backend-process">
+   <glossterm>Backend Process</glossterm>
+   <glossdef>
+    <para>
+     <link linkend="guc-max-connections">
+     Backend processes</link> are such processes of an
+     <firstterm>instance</firstterm>, which act
+     on behalf of client <firstterm>connections</firstterm>
+     and process their requests.
+    </para>
+    <para>
+     (Don't confuse the term with the similar terms
+     <firstterm>Background Writer</firstterm> or
+     <firstterm>Background Worker</firstterm>).
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-connection">
+   <glossterm>Connection</glossterm>
+   <glossdef>
+    <para>
+     A connection is a <firstterm>TCP/IP</firstterm> or
+     <firstterm>socket</firstterm> line for inter-process
+     communication. If the two involved processes reside on
+     different servers, TCP/IP must be used. Otherwise both
+     techniques are possible.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-background-writer">
+   <glossterm>Background Writer</glossterm>
+   <glossdef>
+    <para>
+     The <link linkend="runtime-config-resource-background-writer">
+     Background Writer</link> process writes continuously dirty
+     pages from <firstterm>Shared Memory</firstterm> to the
+     file system. He starts periodically. But he works only for a
+     short period in order to distribute his expensive I/O activity
+     over time instead of generating few and huge I/O peaks, which
+     could block other processes.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-background-worker">
+   <glossterm>Background Worker</glossterm>
+   <glossdef>
+    <para>
+     <link linkend="bgworker">Background Workers</link> are
+     individual processes within an
+     <firstterm>instance</firstterm>, which run system- or
+     user-supplied code. A typically use case are processes
+     which handle parts of an SQL query to take advantage of parallel
+     execution on <firstterm>servers</firstterm> with multiple CPUs.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-wal-writer">
+   <glossterm>WAL Writer</glossterm>
+   <glossdef>
+    <para>
+     The <link linkend="runtime-config-wal">WAL writer</link>
+     process writes <firstterm>WAL records</firstterm>
+     from the <firstterm>Shared Memory</firstterm> to
+     <firstterm>WAL files</firstterm>.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-wal-record">
+   <glossterm>WAL Record (or: Log Record)</glossterm>
+   <glossdef>
+    <para>
+     A <link linkend="wal-internals">WAL record</link>
+     contains either new or changed heap or index
+     data or COMMIT, ROLLBACK, SAVEPOINT, or CHECKPOINT
+     information in binary format.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-wal-file">
+   <glossterm>WAL File (or: WAL Segment, or WAL Segment File or: WAL Log)</glossterm>
+   <glossdef>
+    <para>
+     <firstterm>WAL records</firstterm> are continously
+     written to the end of the current
+     <link linkend="wal-internals">WAL file</link>. Please notice,
+     that WAL files as well as <firstterm>WAL records</firstterm>
+     belong to the complete <firstterm>cluster</firstterm>,
+     not to a single <firstterm>database</firstterm>.
+     After a WAL file is full
+     (default: 16 MB), a new WAL file is created or
+     - under certain conditions - one of the previous WAL
+     files is renamed and reused.
+    </para>
+    <para>
+     The sequence of <firstterm>WAL records</firstterm>
+     in combination with the sequence of WAL files
+     represents the sequence of changes that have
+     taken place in the <firstterm>cluster</firstterm>
+     over time (???).
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-segment">
+   <glossterm>File Segment (or: Segment)</glossterm>
+   <glossdef>
+    <para>
+      If a database file grows in size, he may be split into
+      multiple physical files. Those files are called
+      <link linkend="storage-file-layout">file segments</link>.
+    </para>
+    <para>
+     (Don't confuse the term with the similar term
+     <firstterm>WAL segment</firstterm>).
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-archiver">
+   <glossterm>Archiver</glossterm>
+   <glossdef>
+    <para>
+     The <link linkend="backup-archiving-wal">archiver</link>
+     process copies <firstterm>WAL files</firstterm> to a
+     different place in the file system.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-checkpointer">
+   <glossterm>Checkpointer</glossterm>
+   <glossdef>
+    <para>
+     When reaching certain time- or volume-depending criterias
+     or when an SQL CHECKPOINT command is issued, the
+     <link linkend="runtime-config-wal">checkpointer</link>
+     process creates a <link linkend="sql-checkpoint">
+     Checkpoint</link>. He writes <firstterm>dirty
+     pages</firstterm> and <firstterm>WAL records</firstterm>
+     to the file system, and generates a special
+     <firstterm>Checkpoint record</firstterm>.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-checkpoint">
+   <glossterm>Checkpoint</glossterm>
+   <glossdef>
+    <para>
+     A <link linkend="sql-checkpoint">
+     Checkpoint</link>
+     is a point in time when all older dirty
+     pages of the <firstterm>Shared Memory</firstterm>,
+     all older <firstterm>WAL records</firstterm>, and a
+     special <firstterm>Checkpoint record</firstterm>
+     have been written and flushed to disk.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-savepoint">
+   <glossterm>Savepoint</glossterm>
+   <glossdef>
+    <para>
+     A <link linkend="sql-savepoint">savepoint</link>
+     is a special mark (like a timestamp) inside
+     a transaction. Data modifications after this point in time
+     may be rolled back to the time of the savepoint.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-data-directory">
+   <glossterm>Data Directory (or: Data Area)</glossterm>
+   <glossdef>
+    <para>
+     A <link linkend="creating-cluster">data directory</link>
+     is the root directory of a
+     <firstterm>cluster</firstterm> (see also:
+     <link linkend="app-postgres">PGDATA</link>).
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <!-- no helpfull reference found  -->
+  <glossentry id="glossary-heap">
+   <glossterm>Heap</glossterm>
+   <glossdef>
+    <para>
+     A heap contains the original values of row attributes,
+     i.e. the data. The heap is realized within database files
+     and mirrored in <firstterm>Shared Memory</firstterm>.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <!-- no helpfull reference found  -->
+  <glossentry id="glossary-index">
+   <glossterm>Index</glossterm>
+   <glossdef>
+    <para>
+     An index consists of keys, which are copies of original
+     row attributes, and pointers to the location of this original
+     rows. Such key/value pairs are organized as a tree or a hash (???).
+     The index is realized within database files and mirrored in
+     <firstterm>Shared Memory</firstterm>.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-log-writer">
+   <glossterm>Log Writer</glossterm>
+   <glossdef>
+    <para>
+     If activated and parameterized, the
+     <link linkend="runtime-config-logging">Log Writer</link>
+     process writes information about database events into the
+     current <firstterm>Log file</firstterm>. When reaching
+     certain time- or volume-dependent criterias, he creates
+     a new <firstterm>Log file</firstterm>.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-log-file">
+   <glossterm>Log File</glossterm>
+   <glossdef>
+    <para>
+     <link linkend="logfile-maintenance">LOG files</link>
+     contain readable text lines about serious
+     and non-serious events, e.g.: use of
+     wrong password, long-running queries, ... .
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-auto-vacuum">
+   <glossterm>AutoVacuum</glossterm>
+   <glossdef>
+    <para>
+     The <link linkend="routine-vacuuming">AutoVacuum</link>
+     processes remove outdated
+     MVCC records of the <firstterm>heap</firstterm>
+     and <firstterm>index</firstterm>.
+    </para>
+   </glossdef>
+  </glossentry>
+
+  <glossentry id="glossary-stats-collector">
+   <glossterm>Stats Collector</glossterm>
+   <glossdef>
+    <para>
+     The <link linkend="monitoring-stats">
+     Stats Collector</link> process collects
+     statistical information about the
+     <firstterm>cluster</firstterm> activities.
+    </para>
+   </glossdef>
+  </glossentry>
+
+<!-- ToDo:
+      WAL (LSN, logical decoding, ... )
+      MVCC
+      backup and recovery
+      replication
+-->
+
+ </glosslist>
+</appendix>
diff --git a/doc/src/sgml/images/cluster-db-schema-ink-svgo.svg b/doc/src/sgml/images/cluster-db-schema-ink-svgo.svg
new file mode 100644
index 0000000000..6acb2b69fe
--- /dev/null
+++ b/doc/src/sgml/images/cluster-db-schema-ink-svgo.svg
@@ -0,0 +1,160 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="900" height="685" viewBox="0 0 900 685">
+  <title>
+    Server (Hardware, Container, or VM)
+  </title>
+  <style>
+    .text_normal,.text_small{font-style:normal;font-weight:400;font-family:&quot;Open Sans&quot;,sans-serif;fill:#000}.text_small{font-size:12px}.text_normal{font-size:16px}
+  </style>
+  <defs>
+    <symbol id="rectangles_special_0">
+      <rect width="225" height="155" rx="10" stroke="blue" fill="none"/>
+      <rect x="15" y="40" width="195" height="50" rx="10" stroke="blue" fill="none" stroke-dasharray="4 2"/>
+      <text class="text_normal" x="20" y="60">
+        schema &apos;public&apos;
+      </text>
+      <text class="text_small" x="20" y="80">
+        tables, views, ...
+      </text>
+      <rect x="15" y="105" width="195" height="30" rx="10" stroke="blue" fill="none" stroke-dasharray="4 2"/>
+      <text class="text_small" x="20" y="125">
+        (more system schemas)
+      </text>
+    </symbol>
+    <symbol id="rectangles_special_1">
+      <rect width="245" height="225" rx="10" stroke="blue" fill="none"/>
+      <rect x="15" y="40" width="205" height="50" rx="10" stroke="blue" fill="none" stroke-dasharray="4 2"/>
+      <text class="text_normal" x="20" y="60">
+        schema &apos;public&apos;
+      </text>
+      <text class="text_small" x="20" y="80">
+        tables, views, ...
+      </text>
+      <rect x="15" y="105" width="205" height="50" rx="10" stroke="blue" fill="none" stroke-dasharray="4 2"/>
+      <text class="text_normal" x="20" y="125">
+        &apos;my_schema&apos; (optional)
+      </text>
+      <text class="text_small" x="20" y="145">
+        tables, views, ...
+      </text>
+      <rect x="15" y="170" width="205" height="30" rx="10" stroke="blue" fill="none" stroke-dasharray="4 2"/>
+      <text class="text_small" x="20" y="190">
+        (more system schemas)
+      </text>
+    </symbol>
+    <symbol id="note" stroke="black" fill="lightyellow">
+      <title>
+        UML Note
+      </title>
+      <path d="M450 10v230H0V0h440v10h10L440 0"/>
+    </symbol>
+    <marker id="arrowhead_end" markerWidth="10" markerHeight="10" refX="6" refY="3" orient="auto">
+      <path d="M0 0l6 3-6 3" stroke="black" fill="none"/>
+    </marker>
+  </defs>
+  <rect x="1" y="1" rx="5" width="99%" height="99%" stroke="black" fill="none"/>
+  <text x="270" y="40" font-weight="400" font-size="24" font-family="&quot;Open Sans&quot;,sans-serif">
+    Server (Hardware, Container, or VM)
+  </text>
+  <path stroke="blue" stroke-width="2" fill="none" d="M20 110h790v555H20z"/>
+  <text class="text_normal" x="180" y="25" transform="translate(20 110)">
+    cluster &apos;data&apos; (default, managed by one instance)
+  </text>
+  <path d="M50 110V80h790v555h-30" stroke="blue" stroke-width="2" fill="none"/>
+  <text class="text_normal" x="190" y="-10" transform="translate(45 110)">
+    cluster &apos;cluster_2&apos; (optional, managed by a different instance)
+  </text>
+  <g transform="translate(40 155)">
+    <use xlink:href="#rectangles_special_0"/>
+    <text class="text_normal" x="10" y="25">
+      database &apos;template0&apos;
+    </text>
+  </g>
+  <g transform="translate(290 155)">
+    <use xlink:href="#rectangles_special_0"/>
+    <text class="text_normal" x="10" y="25">
+      database &apos;template1&apos;
+    </text>
+  </g>
+  <g transform="translate(540 155)">
+    <use xlink:href="#rectangles_special_1"/>
+    <text class="text_normal" x="10" y="25">
+      database &apos;postgres&apos;
+    </text>
+  </g>
+  <g transform="translate(40 350)">
+    <use xlink:href="#rectangles_special_1"/>
+    <text class="text_normal" x="10" y="25">
+      database &apos;my_db&apos; (optional)
+    </text>
+  </g>
+  <g transform="translate(320 330)">
+    <rect width="180" height="45" rx="10" stroke="blue" fill="none" stroke-dasharray="10 4 4 4"/>
+    <text class="text_normal" x="15" y="27">
+      Global SQL objects
+    </text>
+    <path d="M0 5l-65-35" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+    <path d="M80 0v-30" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+    <path d="M180 40h50" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+    <path d="M0 40l-45 20" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  </g>
+  <g transform="translate(335 405)">
+    <use xlink:href="#note"/>
+    <text class="text_small" x="10" y="20">
+      1)
+    </text>
+    <text class="text_small" x="30" y="20">
+      By default, you work in the cluster &apos;data&apos;, database &apos;postgres&apos;,
+    </text>
+    <text class="text_small" x="30" y="35">
+      schema &apos;public&apos;.
+    </text>
+    <text class="text_small" x="10" y="55">
+      2)
+    </text>
+    <text class="text_small" x="30" y="55">
+      More system schemas: pg_catalog, information_schema,
+    </text>
+    <text class="text_small" x="30" y="70">
+      pg_temp, pg_toast.
+    </text>
+    <text class="text_small" x="10" y="90">
+      3)
+    </text>
+    <text class="text_small" x="30" y="90">
+      Global SQL objects: Some SQL objects are automatically active
+    </text>
+    <text class="text_small" x="30" y="105">
+      and known database- or even cluster-wide.
+    </text>
+    <text class="text_small" x="10" y="125">
+      4)
+    </text>
+    <text class="text_small" x="30" y="125">
+      The command &apos;initdb&apos; creates a new cluster with the three
+    </text>
+    <text class="text_small" x="30" y="140">
+      databases &apos;template0&apos;, &apos;template1&apos;, and &apos;postgres&apos;. The command
+    </text>
+    <text class="text_small" x="30" y="155">
+      &apos;createdb&apos; creates a new database.
+    </text>
+    <text class="text_small" x="10" y="175">
+      5)
+    </text>
+    <text class="text_small" x="30" y="175">
+      If multiple clusters are active on one server at the same time,
+    </text>
+    <text class="text_small" x="30" y="190">
+      each one is managed by an individual instance. Each such instance
+    </text>
+    <text class="text_small" x="30" y="205">
+      uses a different port.
+    </text>
+    <text class="text_small" x="10" y="225">
+      6)
+    </text>
+    <text class="text_small" x="30" y="225">
+      No client application is allowed to connect to &apos;template0&apos;.
+    </text>
+  </g>
+</svg>
diff --git a/doc/src/sgml/images/cluster-db-schema-ink.svg b/doc/src/sgml/images/cluster-db-schema-ink.svg
new file mode 100644
index 0000000000..beb1f00481
--- /dev/null
+++ b/doc/src/sgml/images/cluster-db-schema-ink.svg
@@ -0,0 +1,482 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   width="900px"
+   height="685px"
+   viewBox="0 0 900 685"
+   id="svg147"
+   sodipodi:docname="cluster-db-schema-ink.svg"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)">
+  <metadata
+     id="metadata151">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>Server (Hardware, Container, or VM)</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="958"
+     inkscape:window-height="660"
+     id="namedview149"
+     showgrid="false"
+     inkscape:zoom="0.34452555"
+     inkscape:cx="450"
+     inkscape:cy="458.60169"
+     inkscape:window-x="61"
+     inkscape:window-y="27"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg147" />
+  <title
+     id="title2">Server (Hardware, Container, or VM)</title>
+  <!-- common text classes -->
+  <style
+     type="text/css"
+     id="style4">
+  .text_small   {font-style:normal;
+                 font-weight:normal;
+                 font-size:12px;
+                 font-family:&quot;Open Sans&quot;, sans-serif;
+                 fill:black;
+                }
+  .text_normal  {font-style:normal;
+                 font-weight:normal;
+                 font-size:16px;
+                 font-family:&quot;Open Sans&quot;, sans-serif;
+                 fill:black;
+                }
+  .text_big     {font-style:normal;
+                 font-weight:normal;
+                 font-size:24px;
+                 font-family:&quot;Open Sans&quot;, sans-serif;
+                 fill:black;
+                }
+  </style>
+  <defs
+     id="defs49">
+    <!--  a rectangle with rounded corners and inner definitions for schemas  -->
+    <symbol
+       id="rectangles_special_0">
+      <!--  the database  -->
+      <rect
+         width="225"
+         height="155"
+         rx="10"
+         stroke="blue"
+         fill="none"
+         id="rect6" />
+      <!--  schemas  -->
+      <rect
+         x="15"
+         y="40"
+         width="195"
+         height="50"
+         rx="10"
+         stroke="blue"
+         fill="none"
+         stroke-dasharray="4 2"
+         id="rect8" />
+      <text
+         class="text_normal"
+         x="20"
+         y="60"
+         id="text10">schema 'public'</text>
+      <text
+         class="text_small"
+         x="20"
+         y="80"
+         id="text12">tables, views, ...</text>
+      <rect
+         x="15"
+         y="105"
+         width="195"
+         height="30"
+         rx="10"
+         stroke="blue"
+         fill="none"
+         stroke-dasharray="4 2"
+         id="rect14" />
+      <text
+         class="text_small"
+         x="20"
+         y="125"
+         id="text16">(more system schemas)</text>
+    </symbol>
+    <!--  same as before, but one more schema  -->
+    <symbol
+       id="rectangles_special_1">
+      <!--  the database  -->
+      <rect
+         width="245"
+         height="225"
+         rx="10"
+         stroke="blue"
+         fill="none"
+         id="rect19" />
+      <!--  schemas  -->
+      <rect
+         x="15"
+         y="40"
+         width="205"
+         height="50"
+         rx="10"
+         stroke="blue"
+         fill="none"
+         stroke-dasharray="4 2"
+         id="rect21" />
+      <text
+         class="text_normal"
+         x="20"
+         y="60"
+         id="text23">schema 'public'</text>
+      <text
+         class="text_small"
+         x="20"
+         y="80"
+         id="text25">tables, views, ...</text>
+      <rect
+         x="15"
+         y="105"
+         width="205"
+         height="50"
+         rx="10"
+         stroke="blue"
+         fill="none"
+         stroke-dasharray="4 2"
+         id="rect27" />
+      <text
+         class="text_normal"
+         x="20"
+         y="125"
+         id="text29">'my_schema' (optional)</text>
+      <text
+         class="text_small"
+         x="20"
+         y="145"
+         id="text31">tables, views, ...</text>
+      <rect
+         x="15"
+         y="170"
+         width="205"
+         height="30"
+         rx="10"
+         stroke="blue"
+         fill="none"
+         stroke-dasharray="4 2"
+         id="rect33" />
+      <text
+         class="text_small"
+         x="20"
+         y="190"
+         id="text35">(more system schemas)</text>
+    </symbol>
+    <symbol
+       id="note"
+       stroke="black"
+       fill="lightyellow">
+      <title
+         id="title38">UML Note</title>
+      <path
+         d="M 450,10 v 230 h -450 v -240 h 440 v 10 h 10 l -10,-10"
+         id="path40" />
+    </symbol>
+    <!--  marker start/end -->
+    <marker
+       id="arrowhead_start"
+       markerWidth="10"
+       markerHeight="10"
+       refX="0"
+       refY="3"
+       orient="auto">
+      <path
+         d="M 6,0 l -6,3 l 6,3"
+         stroke="black"
+         fill="none"
+         id="path43" />
+    </marker>
+    <marker
+       id="arrowhead_end"
+       markerWidth="10"
+       markerHeight="10"
+       refX="6"
+       refY="3"
+       orient="auto">
+      <path
+         d="M 0,0 l 6,3 l -6,3"
+         stroke="black"
+         fill="none"
+         id="path46" />
+    </marker>
+  </defs>
+  <!--  start of rendering area  -->
+  <!--  enclosing rectangle  -->
+  <rect
+     x="1"
+     y="1"
+     rx="5"
+     width="99%"
+     height="99%"
+     stroke="black"
+     fill="none"
+     id="rect51" />
+  <text
+     class="text_big"
+     x="270"
+     y="40"
+     id="text53">Server (Hardware, Container, or VM)</text>
+  <!--  two clusters  -->
+  <g
+     transform="translate(20 110)"
+     id="g59">
+    <rect
+       x="0"
+       y="0"
+       width="790"
+       height="555"
+       stroke="blue"
+       stroke-width="2px"
+       fill="none"
+       id="rect55" />
+    <text
+       class="text_normal"
+       x="180"
+       y="25"
+       id="text57">cluster 'data' (default, managed by one instance)</text>
+  </g>
+  <g
+     transform="translate(45 110)"
+     id="g65">
+    <path
+       d="M 5,0 v -30 h 790 v 555 h -30"
+       stroke="blue"
+       stroke-width="2px"
+       fill="none"
+       id="path61" />
+    <text
+       class="text_normal"
+       x="190"
+       y="-10"
+       id="text63">cluster 'cluster_2' (optional, managed by a different instance)</text>
+  </g>
+  <!--  database template 0  -->
+  <g
+     transform="translate(40 155)"
+     id="g71">
+    <use
+       xlink:href="#rectangles_special_0"
+       id="use67" />
+    <text
+       class="text_normal"
+       x="10"
+       y="25"
+       id="text69">database 'template0'</text>
+  </g>
+  <!--  database template 1  -->
+  <g
+     transform="translate(290 155)"
+     id="g77">
+    <use
+       xlink:href="#rectangles_special_0"
+       id="use73" />
+    <text
+       class="text_normal"
+       x="10"
+       y="25"
+       id="text75">database 'template1'</text>
+  </g>
+  <!--  database postgres  -->
+  <g
+     transform="translate(540 155)"
+     id="g83">
+    <use
+       xlink:href="#rectangles_special_1"
+       id="use79" />
+    <text
+       class="text_normal"
+       x="10"
+       y="25"
+       id="text81">database 'postgres'</text>
+  </g>
+  <!--  database my_db  -->
+  <g
+     transform="translate(40 350)"
+     id="g89">
+    <use
+       xlink:href="#rectangles_special_1"
+       id="use85" />
+    <text
+       class="text_normal"
+       x="10"
+       y="25"
+       id="text87">database 'my_db' (optional)</text>
+  </g>
+  <!--  global objects  -->
+  <g
+     transform="translate(320 330)"
+     id="g103">
+    <rect
+       x="0"
+       y="0"
+       width="180"
+       height="45"
+       rx="10"
+       stroke="blue"
+       fill="none"
+       stroke-dasharray="10 4 4 4"
+       id="rect91" />
+    <text
+       class="text_normal"
+       x="15"
+       y="27"
+       id="text93">Global SQL objects</text>
+    <path
+       d="M 0,5 l-65,-35"
+       stroke="black"
+       fill="none"
+       marker-end="url(#arrowhead_end)"
+       id="path95" />
+    <path
+       d="M 80,0 v-30"
+       stroke="black"
+       fill="none"
+       marker-end="url(#arrowhead_end)"
+       id="path97" />
+    <path
+       d="M 180,40 h50"
+       stroke="black"
+       fill="none"
+       marker-end="url(#arrowhead_end)"
+       id="path99" />
+    <path
+       d="M 0,40 l-45,20"
+       stroke="black"
+       fill="none"
+       marker-end="url(#arrowhead_end)"
+       id="path101" />
+  </g>
+  <!--  Some comments  -->
+  <g
+     transform="translate(335 405)"
+     id="g145">
+    <use
+       xlink:href="#note"
+       x="0"
+       y="0"
+       id="use105" />
+    <text
+       class="text_small"
+       x="10"
+       y="20"
+       id="text107">1)</text>
+    <text
+       class="text_small"
+       x="30"
+       y="20"
+       id="text109">By default, you work in the cluster 'data', database 'postgres',</text>
+    <text
+       class="text_small"
+       x="30"
+       y="35"
+       id="text111">schema 'public'.</text>
+    <text
+       class="text_small"
+       x="10"
+       y="55"
+       id="text113">2)</text>
+    <text
+       class="text_small"
+       x="30"
+       y="55"
+       id="text115">More system schemas: pg_catalog, information_schema,</text>
+    <text
+       class="text_small"
+       x="30"
+       y="70"
+       id="text117">pg_temp, pg_toast.</text>
+    <text
+       class="text_small"
+       x="10"
+       y="90"
+       id="text119">3)</text>
+    <text
+       class="text_small"
+       x="30"
+       y="90"
+       id="text121">Global SQL objects: Some SQL objects are automatically active</text>
+    <text
+       class="text_small"
+       x="30"
+       y="105"
+       id="text123">and known database- or even cluster-wide.</text>
+    <text
+       class="text_small"
+       x="10"
+       y="125"
+       id="text125">4)</text>
+    <text
+       class="text_small"
+       x="30"
+       y="125"
+       id="text127">The command 'initdb' creates a new cluster with the three</text>
+    <text
+       class="text_small"
+       x="30"
+       y="140"
+       id="text129">databases 'template0', 'template1', and 'postgres'. The command</text>
+    <text
+       class="text_small"
+       x="30"
+       y="155"
+       id="text131">'createdb' creates a new database.</text>
+    <text
+       class="text_small"
+       x="10"
+       y="175"
+       id="text133">5)</text>
+    <text
+       class="text_small"
+       x="30"
+       y="175"
+       id="text135">If multiple clusters are active on one server at the same time,</text>
+    <text
+       class="text_small"
+       x="30"
+       y="190"
+       id="text137">each one is managed by an individual instance. Each such instance</text>
+    <text
+       class="text_small"
+       x="30"
+       y="205"
+       id="text139">uses a different port.</text>
+    <text
+       class="text_small"
+       x="10"
+       y="225"
+       id="text141">6)</text>
+    <text
+       class="text_small"
+       x="30"
+       y="225"
+       id="text143">No client application is allowed to connect to 'template0'.</text>
+  </g>
+</svg>
diff --git a/doc/src/sgml/images/cluster-db-schema-raw.svg b/doc/src/sgml/images/cluster-db-schema-raw.svg
new file mode 100644
index 0000000000..a4919165e2
--- /dev/null
+++ b/doc/src/sgml/images/cluster-db-schema-raw.svg
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+     xmlns:xlink="http://www.w3.org/1999/xlink"
+     version="1.1"
+     width="900px" height="685px"
+     viewBox="0 0 900 685" >
+
+  <title>Server (Hardware, Container, or VM)</title>
+
+  <!-- common text classes -->
+  <style type="text/css">
+  .text_small   {font-style:normal;
+                 font-weight:normal;
+                 font-size:12px;
+                 font-family:"Open Sans", sans-serif;
+                 fill:black;
+                }
+  .text_normal  {font-style:normal;
+                 font-weight:normal;
+                 font-size:16px;
+                 font-family:"Open Sans", sans-serif;
+                 fill:black;
+                }
+  .text_big     {font-style:normal;
+                 font-weight:normal;
+                 font-size:24px;
+                 font-family:"Open Sans", sans-serif;
+                 fill:black;
+                }
+  </style>
+
+  <defs>
+    <!--  a rectangle with rounded corners and inner definitions for schemas  -->
+    <symbol id="rectangles_special_0">
+
+      <!--  the database  -->
+      <rect width="225" height="155" rx="10" stroke="blue" fill="none"/>
+
+      <!--  schemas  -->
+      <rect x="15" y="40" width="195" height="50" rx="10" stroke="blue" fill="none" stroke-dasharray="4 2" />
+      <text class="text_normal" x="20" y="60">schema 'public'</text>
+      <text class="text_small"  x="20" y="80">tables, views, ...</text>
+
+      <rect x="15" y="105" width="195" height="30" rx="10" stroke="blue" fill="none" stroke-dasharray="4 2" />
+      <text class="text_small"  x="20" y="125">(more system schemas)</text>
+    </symbol>
+
+    <!--  same as before, but one more schema  -->
+    <symbol id="rectangles_special_1">
+      <!--  the database  -->
+      <rect width="245" height="225" rx="10" stroke="blue" fill="none"/>
+
+      <!--  schemas  -->
+      <rect x="15" y="40" width="205" height="50" rx="10" stroke="blue" fill="none" stroke-dasharray="4 2" />
+      <text class="text_normal" x="20" y="60">schema 'public'</text>
+      <text class="text_small"  x="20" y="80">tables, views, ...</text>
+
+      <rect x="15" y="105" width="205" height="50" rx="10" stroke="blue" fill="none" stroke-dasharray="4 2" />
+      <text class="text_normal" x="20" y="125">'my_schema' (optional)</text>
+      <text class="text_small"  x="20" y="145">tables, views, ...</text>
+
+      <rect x="15" y="170" width="205" height="30" rx="10" stroke="blue" fill="none" stroke-dasharray="4 2" />
+      <text class="text_small"  x="20" y="190">(more system schemas)</text>
+    </symbol>
+
+    <symbol id="note" stroke="black" fill="lightyellow">
+      <title>UML Note</title>
+      <path d="M 450,10 v 230 h -450 v -240 h 440 v 10 h 10 l -10,-10" />
+    </symbol>
+
+    <!--  marker start/end -->
+    <marker id="arrowhead_start"
+            markerWidth="10"
+            markerHeight="10"
+            refX="0"
+            refY="3"
+            orient="auto">
+      <path d="M 6,0 l -6,3 l 6,3" stroke="black" fill="none" />
+    </marker>
+    <marker id="arrowhead_end"
+            markerWidth="10"
+            markerHeight="10"
+            refX="6"
+            refY="3"
+            orient="auto">
+      <path d="M 0,0 l 6,3 l -6,3" stroke="black" fill="none" />
+    </marker>
+
+  </defs>
+
+
+  <!--  start of rendering area  -->
+  <!--  enclosing rectangle  -->
+  <rect x="1" y="1" rx="5" width="99%" height="99%" stroke="black" fill="none" />
+  <text class="text_big" x="270" y="40">Server (Hardware, Container, or VM)</text>
+
+  <!--  two clusters  -->
+  <g transform="translate(20 110)">
+    <rect  x="0" y="0" width="790" height="555" stroke="blue" stroke-width="2px" fill="none" />
+    <text class="text_normal" x="180" y="25">cluster 'data' (default, managed by one instance)</text>
+  </g>
+  <g transform="translate(45 110)">
+    <path d="M 5,0 v -30 h 790 v 555 h -30" stroke="blue" stroke-width="2px" fill="none" />
+    <text class="text_normal" x="190" y="-10">cluster 'cluster_2' (optional, managed by a different instance)</text>
+  </g>
+
+
+  <!--  database template 0  -->
+  <g transform="translate(40 155)">
+    <use xlink:href="#rectangles_special_0" />
+    <text class="text_normal" x="10" y="25">database 'template0'</text>
+  </g>
+
+  <!--  database template 1  -->
+  <g transform="translate(290 155)">
+    <use xlink:href="#rectangles_special_0" />
+    <text class="text_normal" x="10" y="25">database 'template1'</text>
+  </g>
+
+  <!--  database postgres  -->
+  <g transform="translate(540 155)">
+    <use xlink:href="#rectangles_special_1" />
+    <text class="text_normal" x="10" y="25">database 'postgres'</text>
+  </g>
+
+  <!--  database my_db  -->
+  <g transform="translate(40 350)">
+    <use xlink:href="#rectangles_special_1" />
+    <text class="text_normal" x="10" y="25">database 'my_db' (optional)</text>
+  </g>
+
+  <!--  global objects  -->
+  <g transform="translate(320 330)">
+    <rect x="0" y="0" width="180" height="45" rx="10" stroke="blue" fill="none" stroke-dasharray="10 4 4 4" />
+    <text class="text_normal" x="15" y="27">Global SQL objects</text>
+    <path d="M 0,5 l-65,-35" stroke="black" fill="none" marker-end="url(#arrowhead_end)" />
+    <path d="M 80,0 v-30" stroke="black" fill="none" marker-end="url(#arrowhead_end)" />
+    <path d="M 180,40 h50" stroke="black" fill="none" marker-end="url(#arrowhead_end)" />
+    <path d="M 0,40 l-45,20" stroke="black" fill="none" marker-end="url(#arrowhead_end)" />
+  </g>
+
+  <!--  Some comments  -->
+  <g transform="translate(335 405)">
+    <use xlink:href="#note" x="0" y="0" />
+
+    <text class="text_small" x="10" y="20">1)</text>
+    <text class="text_small" x="30" y="20">By default, you work in the cluster 'data', database 'postgres',</text>
+    <text class="text_small" x="30" y="35">schema 'public'.</text>
+
+    <text class="text_small" x="10" y="55">2)</text>
+    <text class="text_small" x="30" y="55">More system schemas: pg_catalog, information_schema,</text>
+    <text class="text_small" x="30" y="70">pg_temp, pg_toast.</text>
+
+    <text class="text_small" x="10" y="90">3)</text>
+    <text class="text_small" x="30" y="90">Global SQL objects: Some SQL objects are automatically active</text>
+    <text class="text_small" x="30" y="105">and known database- or even cluster-wide.</text>
+
+    <text class="text_small" x="10" y="125">4)</text>
+    <text class="text_small" x="30" y="125">The command 'initdb' creates a new cluster with the three</text>
+    <text class="text_small" x="30" y="140">databases 'template0', 'template1', and 'postgres'. The command</text>
+    <text class="text_small" x="30" y="155">'createdb' creates a new database.</text>
+
+    <text class="text_small" x="10" y="175">5)</text>
+    <text class="text_small" x="30" y="175">If multiple clusters are active on one server at the same time,</text>
+    <text class="text_small" x="30" y="190">each one is managed by an individual instance. Each such instance</text>
+    <text class="text_small" x="30" y="205">uses a different port.</text>
+
+    <text class="text_small" x="10" y="225">6)</text>
+    <text class="text_small" x="30" y="225">No client application is allowed to connect to 'template0'.</text>
+
+  </g>
+
+</svg>
diff --git a/doc/src/sgml/images/directories-ink-svgo.svg b/doc/src/sgml/images/directories-ink-svgo.svg
new file mode 100644
index 0000000000..8dd88784ca
--- /dev/null
+++ b/doc/src/sgml/images/directories-ink-svgo.svg
@@ -0,0 +1,164 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="900" height="640" viewBox="0 0 900 640">
+  <title>
+    Directory structure of a cluster
+  </title>
+  <style>
+    .text_normal{font-style:normal;font-weight:400;font-size:16px;font-family:&quot;Open Sans&quot;,sans-serif;fill:#000}
+  </style>
+  <defs>
+    <symbol id="directory" stroke="blue" stroke-width=".3" fill="aqua">
+      <title>
+        Directory
+      </title>
+      <path d="M0 10h110v20H0z"/>
+      <path d="M0 10V8l3-3h35l3 3v2"/>
+    </symbol>
+    <symbol id="file" stroke="black" fill="none">
+      <title>
+        File
+      </title>
+      <path stroke="blue" d="M0 0h40v50H0z"/>
+      <path d="M5 10h20" stroke-dasharray="4 2"/>
+      <path d="M5 17h15" stroke-dasharray="6 2"/>
+      <path d="M5 24h25" stroke-dasharray="4 2"/>
+      <path d="M5 31h20" stroke-dasharray="5 2"/>
+    </symbol>
+  </defs>
+  <rect x="1" y="1" rx="5" width="99%" height="99%" stroke="black" fill="none"/>
+  <text x="50" y="50" font-weight="400" font-size="24" font-family="&quot;Open Sans&quot;,sans-serif">
+    Directory structure for storing durable and fluctuating information
+  </text>
+  <g transform="translate(20 100)">
+    <use xlink:href="#directory"/>
+    <text x="10" y="26" class="text_normal">
+      ... /pg/
+    </text>
+    <text x="300" y="26" class="text_normal">
+      An arbitrary directory
+    </text>
+  </g>
+  <g transform="translate(70 130)">
+    <use xlink:href="#directory"/>
+    <text x="10" y="26" class="text_normal">
+      data/
+    </text>
+    <text x="250" y="26" class="text_normal">
+      Root of cluster &apos;data&apos; (see: PGDATA)
+    </text>
+  </g>
+  <g transform="translate(120 160)">
+    <use xlink:href="#directory"/>
+    <text x="10" y="26" class="text_normal">
+      base/
+    </text>
+    <text x="200" y="26" class="text_normal">
+      Subdirectory containing per-database subdirectories
+    </text>
+  </g>
+  <g transform="translate(170 190)">
+    <use xlink:href="#directory"/>
+    <text x="10" y="26" class="text_normal">
+      1/
+    </text>
+    <text x="150" y="26" class="text_normal">
+      Subdirectory for data of first database &apos;template0&apos;
+    </text>
+  </g>
+  <g transform="translate(170 220)">
+    <use xlink:href="#directory"/>
+    <text x="10" y="26" class="text_normal">
+      12992/
+    </text>
+    <text x="150" y="26" class="text_normal">
+      Subdirectory for data of second database &apos;template1&apos;
+    </text>
+  </g>
+  <g transform="translate(170 250)">
+    <use xlink:href="#directory"/>
+    <text x="10" y="26" class="text_normal">
+      12999/
+    </text>
+    <text x="150" y="26" class="text_normal">
+      Subdirectory for data of third database &apos;postgres&apos;
+    </text>
+  </g>
+  <g transform="translate(170 280)">
+    <use xlink:href="#directory"/>
+    <text x="10" y="26" class="text_normal">
+      nnnnn/
+    </text>
+    <text x="150" y="26" class="text_normal">
+      Optional: more subdirectories for databases, e.g. &apos;my_db&apos;
+    </text>
+  </g>
+  <g transform="translate(120 310)">
+    <use xlink:href="#directory"/>
+    <text x="10" y="26" class="text_normal">
+      global/
+    </text>
+    <text x="200" y="26" class="text_normal">
+      Subdirectory with information about Global SQL Objects
+    </text>
+  </g>
+  <g transform="translate(120 340)">
+    <use xlink:href="#directory"/>
+    <text x="10" y="26" class="text_normal">
+      pg_wal/
+    </text>
+    <text x="200" y="26" class="text_normal">
+      Subdirectory for Write Ahead Log files (&apos;pg_xlog&apos; before version 10)
+    </text>
+  </g>
+  <g transform="translate(120 370)">
+    <use xlink:href="#directory"/>
+    <text x="10" y="26" class="text_normal">
+      pg_xact/
+    </text>
+    <text x="200" y="26" class="text_normal">
+      Subdirectory for transaction commit status (&apos;pg_clog&apos; before version 10)
+    </text>
+  </g>
+  <g transform="translate(120 400)">
+    <use xlink:href="#directory"/>
+    <text x="10" y="26" class="text_normal">
+      pg_tblspc/
+    </text>
+    <text x="200" y="26" class="text_normal">
+      Subdirectory containing symbolic links to tablespaces
+    </text>
+  </g>
+  <g transform="translate(120 430)">
+    <use xlink:href="#directory"/>
+    <text x="10" y="26" class="text_normal">
+      pg_... /
+    </text>
+    <text x="200" y="26" class="text_normal">
+      Some more subdirectories
+    </text>
+  </g>
+  <g transform="translate(120 465)">
+    <use xlink:href="#file"/>
+    <use xlink:href="#file" x="50"/>
+    <text x="200" y="26" class="text_normal">
+      &apos;postmaster.pid&apos; and other files with cluster-wide relevance
+    </text>
+  </g>
+  <g transform="translate(20 540)">
+    <use xlink:href="#directory"/>
+    <text x="10" y="26" class="text_normal">
+      ... /xyz/
+    </text>
+    <text x="300" y="26" class="text_normal">
+      Same or another arbitrary directory
+    </text>
+  </g>
+  <g transform="translate(70 570)">
+    <use xlink:href="#directory"/>
+    <text x="10" y="26" class="text_normal">
+      cluster_2/
+    </text>
+    <text x="250" y="26" class="text_normal">
+      Root of another cluster &apos;cluster_2&apos;
+    </text>
+  </g>
+</svg>
diff --git a/doc/src/sgml/images/directories-ink.svg b/doc/src/sgml/images/directories-ink.svg
new file mode 100644
index 0000000000..2b89d02096
--- /dev/null
+++ b/doc/src/sgml/images/directories-ink.svg
@@ -0,0 +1,397 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   width="900px"
+   height="640px"
+   viewBox="0 0 900 640"
+   id="svg152"
+   sodipodi:docname="directories-ink.svg"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)">
+  <metadata
+     id="metadata156">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>Directory structure of a cluster</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="480"
+     id="namedview154"
+     showgrid="false"
+     inkscape:zoom="0.36875"
+     inkscape:cx="450"
+     inkscape:cy="320"
+     inkscape:window-x="61"
+     inkscape:window-y="27"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg152" />
+  <title
+     id="title2">Directory structure of a cluster</title>
+  <style
+     type="text/css"
+     id="style4">
+  .text_normal  {font-style:normal;
+                 font-weight:normal;
+                 font-size:16px;
+                 font-family:&quot;Open Sans&quot;, sans-serif;
+                 fill:black;
+                }
+  .text_big     {font-style:normal;
+                 font-weight:normal;
+                 font-size:24px;
+                 font-family:&quot;Open Sans&quot;, sans-serif;
+                 fill:black;
+                }
+  </style>
+  <defs
+     id="defs26">
+    <!--  Directory  -->
+    <symbol
+       id="directory"
+       stroke="blue"
+       stroke-width="0.3px"
+       fill="aqua">
+      <title
+         id="title6">Directory</title>
+      <rect
+         x="0"
+         y="10"
+         width="110"
+         height="20"
+         id="rect8" />
+      <path
+         d="M 0,10 l 0,-2 3,-3 35,0, 3,3  0,2"
+         id="path10" />
+    </symbol>
+    <!--  File  -->
+    <symbol
+       id="file"
+       stroke="black"
+       fill="none">
+      <title
+         id="title13">File</title>
+      <rect
+         x="0"
+         y="0"
+         width="40"
+         height="50"
+         stroke="blue"
+         id="rect15" />
+      <path
+         d="M 5,10 h 20"
+         stroke-dasharray="4 2"
+         id="path17" />
+      <path
+         d="M 5,17 h 15"
+         stroke-dasharray="6 2"
+         id="path19" />
+      <path
+         d="M 5,24 h 25"
+         stroke-dasharray="4 2"
+         id="path21" />
+      <path
+         d="M 5,31 h 20"
+         stroke-dasharray="5 2"
+         id="path23" />
+    </symbol>
+  </defs>
+  <!--  start of rendering area  -->
+  <!--  enclosing rectangle  -->
+  <rect
+     x="1"
+     y="1"
+     rx="5"
+     width="99%"
+     height="99%"
+     stroke="black"
+     fill="none"
+     id="rect28" />
+  <!--  caption  -->
+  <text
+     x="50"
+     y="50"
+     class="text_big"
+     id="text30">Directory structure for storing durable and fluctuating information</text>
+  <!--  the directories  -->
+  <g
+     transform="translate(20, 100)"
+     id="g38">
+    <use
+       xlink:href="#directory"
+       id="use32" />
+    <text
+       x="10"
+       y="26"
+       class="text_normal"
+       id="text34">... /pg/</text>
+    <text
+       x="300"
+       y="26"
+       class="text_normal"
+       id="text36">An arbitrary directory</text>
+  </g>
+  <g
+     transform="translate(70, 130)"
+     id="g46">
+    <use
+       xlink:href="#directory"
+       id="use40" />
+    <text
+       x="10"
+       y="26"
+       class="text_normal"
+       id="text42">data/</text>
+    <text
+       x="250"
+       y="26"
+       class="text_normal"
+       id="text44">Root of cluster 'data' (see: PGDATA)</text>
+  </g>
+  <g
+     transform="translate(120, 160)"
+     id="g54">
+    <use
+       xlink:href="#directory"
+       id="use48" />
+    <text
+       x="10"
+       y="26"
+       class="text_normal"
+       id="text50">base/</text>
+    <text
+       x="200"
+       y="26"
+       class="text_normal"
+       id="text52">Subdirectory containing per-database subdirectories</text>
+  </g>
+  <!--  -->
+  <g
+     transform="translate(170, 190)"
+     id="g62">
+    <use
+       xlink:href="#directory"
+       id="use56" />
+    <text
+       x="10"
+       y="26"
+       class="text_normal"
+       id="text58">1/</text>
+    <text
+       x="150"
+       y="26"
+       class="text_normal"
+       id="text60">Subdirectory for data of first database 'template0'</text>
+  </g>
+  <g
+     transform="translate(170, 220)"
+     id="g70">
+    <use
+       xlink:href="#directory"
+       id="use64" />
+    <text
+       x="10"
+       y="26"
+       class="text_normal"
+       id="text66">12992/</text>
+    <text
+       x="150"
+       y="26"
+       class="text_normal"
+       id="text68">Subdirectory for data of second database 'template1'</text>
+  </g>
+  <g
+     transform="translate(170, 250)"
+     id="g78">
+    <use
+       xlink:href="#directory"
+       id="use72" />
+    <text
+       x="10"
+       y="26"
+       class="text_normal"
+       id="text74">12999/</text>
+    <text
+       x="150"
+       y="26"
+       class="text_normal"
+       id="text76">Subdirectory for data of third database 'postgres'</text>
+  </g>
+  <g
+     transform="translate(170, 280)"
+     id="g86">
+    <use
+       xlink:href="#directory"
+       id="use80" />
+    <text
+       x="10"
+       y="26"
+       class="text_normal"
+       id="text82">nnnnn/</text>
+    <text
+       x="150"
+       y="26"
+       class="text_normal"
+       id="text84">Optional: more subdirectories for databases, e.g. 'my_db'</text>
+  </g>
+  <g
+     transform="translate(120, 310)"
+     id="g94">
+    <use
+       xlink:href="#directory"
+       id="use88" />
+    <text
+       x="10"
+       y="26"
+       class="text_normal"
+       id="text90">global/</text>
+    <text
+       x="200"
+       y="26"
+       class="text_normal"
+       id="text92">Subdirectory with information about Global SQL Objects</text>
+  </g>
+  <g
+     transform="translate(120, 340)"
+     id="g102">
+    <use
+       xlink:href="#directory"
+       id="use96" />
+    <text
+       x="10"
+       y="26"
+       class="text_normal"
+       id="text98">pg_wal/</text>
+    <text
+       x="200"
+       y="26"
+       class="text_normal"
+       id="text100">Subdirectory for Write Ahead Log files ('pg_xlog' before version 10)</text>
+  </g>
+  <g
+     transform="translate(120, 370)"
+     id="g110">
+    <use
+       xlink:href="#directory"
+       id="use104" />
+    <text
+       x="10"
+       y="26"
+       class="text_normal"
+       id="text106">pg_xact/</text>
+    <text
+       x="200"
+       y="26"
+       class="text_normal"
+       id="text108">Subdirectory for transaction commit status ('pg_clog' before version 10)</text>
+  </g>
+  <g
+     transform="translate(120, 400)"
+     id="g118">
+    <use
+       xlink:href="#directory"
+       id="use112" />
+    <text
+       x="10"
+       y="26"
+       class="text_normal"
+       id="text114">pg_tblspc/</text>
+    <text
+       x="200"
+       y="26"
+       class="text_normal"
+       id="text116">Subdirectory containing symbolic links to tablespaces</text>
+  </g>
+  <g
+     transform="translate(120, 430)"
+     id="g126">
+    <use
+       xlink:href="#directory"
+       id="use120" />
+    <text
+       x="10"
+       y="26"
+       class="text_normal"
+       id="text122">pg_... /</text>
+    <text
+       x="200"
+       y="26"
+       class="text_normal"
+       id="text124">Some more subdirectories</text>
+  </g>
+  <g
+     transform="translate(120, 465)"
+     id="g134">
+    <use
+       xlink:href="#file"
+       x="0"
+       y="0"
+       id="use128" />
+    <use
+       xlink:href="#file"
+       x="50"
+       y="0"
+       id="use130" />
+    <text
+       x="200"
+       y="26"
+       class="text_normal"
+       id="text132">'postmaster.pid' and other files with cluster-wide relevance</text>
+  </g>
+  <!--  next cluster  -->
+  <g
+     transform="translate(20, 540)"
+     id="g142">
+    <use
+       xlink:href="#directory"
+       id="use136" />
+    <text
+       x="10"
+       y="26"
+       class="text_normal"
+       id="text138">... /xyz/</text>
+    <text
+       x="300"
+       y="26"
+       class="text_normal"
+       id="text140">Same or another arbitrary directory</text>
+  </g>
+  <g
+     transform="translate(70, 570)"
+     id="g150">
+    <use
+       xlink:href="#directory"
+       id="use144" />
+    <text
+       x="10"
+       y="26"
+       class="text_normal"
+       id="text146">cluster_2/</text>
+    <text
+       x="250"
+       y="26"
+       class="text_normal"
+       id="text148">Root of another cluster 'cluster_2'</text>
+  </g>
+</svg>
diff --git a/doc/src/sgml/images/directories-raw.svg b/doc/src/sgml/images/directories-raw.svg
new file mode 100644
index 0000000000..92e766dd89
--- /dev/null
+++ b/doc/src/sgml/images/directories-raw.svg
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+     xmlns:xlink="http://www.w3.org/1999/xlink"
+     version="1.1"
+     width="900px" height="640px"
+     viewBox="0 0 900 640">
+
+  <title>Directory structure of a cluster</title>
+
+  <style type="text/css">
+  .text_normal  {font-style:normal;
+                 font-weight:normal;
+                 font-size:16px;
+                 font-family:"Open Sans", sans-serif;
+                 fill:black;
+                }
+  .text_big     {font-style:normal;
+                 font-weight:normal;
+                 font-size:24px;
+                 font-family:"Open Sans", sans-serif;
+                 fill:black;
+                }
+  </style>
+
+  <defs>
+
+    <!--  Directory  -->
+    <symbol id="directory" stroke="blue" stroke-width="0.3px" fill="aqua">
+      <title>Directory</title>
+      <rect x="0" y="10" width="110" height="20" />
+      <path d="M 0,10 l 0,-2 3,-3 35,0, 3,3  0,2" />
+    </symbol>
+
+    <!--  File  -->
+    <symbol id="file" stroke="black" fill="none" >
+      <title>File</title>
+      <rect x="0" y="0" width="40" height="50" stroke="blue" />
+      <path d="M 5,10 h 20" stroke-dasharray="4 2" />
+      <path d="M 5,17 h 15" stroke-dasharray="6 2" />
+      <path d="M 5,24 h 25" stroke-dasharray="4 2" />
+      <path d="M 5,31 h 20" stroke-dasharray="5 2" />
+    </symbol>
+
+  </defs>
+
+
+  <!--  start of rendering area  -->
+  <!--  enclosing rectangle  -->
+  <rect x="1" y="1" rx="5" width="99%" height="99%" stroke="black" fill="none" />
+
+  <!--  caption  -->
+  <text x="50" y="50"  class="text_big">Directory structure for storing durable and fluctuating information</text>
+
+  <!--  the directories  -->
+  <g transform="translate(20, 100)">
+    <use xlink:href="#directory" />
+    <text x="10"  y="26" class="text_normal">... /pg/</text>
+    <text x="300" y="26" class="text_normal">An arbitrary directory</text>
+  </g>
+
+  <g transform="translate(70, 130)">
+    <use xlink:href="#directory" />
+    <text x="10"  y="26" class="text_normal">data/</text>
+    <text x="250" y="26" class="text_normal">Root of cluster 'data' (see: PGDATA)</text>
+  </g>
+
+  <g transform="translate(120, 160)">
+    <use xlink:href="#directory" />
+    <text x="10"  y="26" class="text_normal">base/</text>
+    <text x="200" y="26" class="text_normal">Subdirectory containing per-database subdirectories</text>
+  </g>
+
+  <!--  -->
+  <g transform="translate(170, 190)">
+    <use xlink:href="#directory" />
+    <text x="10"  y="26" class="text_normal">1/</text>
+    <text x="150" y="26" class="text_normal">Subdirectory for data of first database 'template0'</text>
+  </g>
+  <g transform="translate(170, 220)">
+    <use xlink:href="#directory" />
+    <text x="10"  y="26" class="text_normal">12992/</text>
+    <text x="150" y="26" class="text_normal">Subdirectory for data of second database 'template1'</text>
+  </g>
+  <g transform="translate(170, 250)">
+    <use xlink:href="#directory" />
+    <text x="10"  y="26" class="text_normal">12999/</text>
+    <text x="150" y="26" class="text_normal">Subdirectory for data of third database 'postgres'</text>
+  </g>
+  <g transform="translate(170, 280)">
+    <use xlink:href="#directory" />
+    <text x="10"  y="26" class="text_normal">nnnnn/</text>
+    <text x="150" y="26" class="text_normal">Optional: more subdirectories for databases, e.g. 'my_db'</text>
+  </g>
+
+  <g transform="translate(120, 310)">
+    <use xlink:href="#directory" />
+    <text x="10"  y="26" class="text_normal">global/</text>
+    <text x="200" y="26" class="text_normal">Subdirectory with information about Global SQL Objects</text>
+  </g>
+
+  <g transform="translate(120, 340)">
+    <use xlink:href="#directory" />
+    <text x="10"  y="26" class="text_normal">pg_wal/</text>
+    <text x="200" y="26" class="text_normal">Subdirectory for Write Ahead Log files ('pg_xlog' before version 10)</text>
+  </g>
+
+  <g transform="translate(120, 370)">
+    <use xlink:href="#directory" />
+    <text x="10"  y="26" class="text_normal">pg_xact/</text>
+    <text x="200" y="26" class="text_normal">Subdirectory for transaction commit status ('pg_clog' before version 10)</text>
+  </g>
+
+  <g transform="translate(120, 400)">
+    <use xlink:href="#directory" />
+    <text x="10"  y="26" class="text_normal">pg_tblspc/</text>
+    <text x="200" y="26" class="text_normal">Subdirectory containing symbolic links to tablespaces</text>
+  </g>
+
+  <g transform="translate(120, 430)">
+    <use xlink:href="#directory" />
+    <text x="10"  y="26" class="text_normal">pg_... /</text>
+    <text x="200" y="26" class="text_normal">Some more subdirectories</text>
+  </g>
+
+  <g transform="translate(120, 465)">
+    <use xlink:href="#file" x="0"   y="0"  />
+    <use xlink:href="#file" x="50"  y="0"  />
+    <text x="200" y="26" class="text_normal">'postmaster.pid' and other files with cluster-wide relevance</text>
+  </g>
+
+  <!--  next cluster  -->
+  <g transform="translate(20, 540)">
+    <use xlink:href="#directory" />
+    <text x="10"  y="26" class="text_normal">... /xyz/</text>
+    <text x="300" y="26" class="text_normal">Same or another arbitrary directory</text>
+  </g>
+
+  <g transform="translate(70, 570)">
+    <use xlink:href="#directory" />
+    <text x="10"  y="26" class="text_normal">cluster_2/</text>
+    <text x="250" y="26" class="text_normal">Root of another cluster 'cluster_2'</text>
+  </g>
+
+</svg>
diff --git a/doc/src/sgml/images/internal-objects-hierarchy-ink-svgo.svg b/doc/src/sgml/images/internal-objects-hierarchy-ink-svgo.svg
new file mode 100644
index 0000000000..71b888b8b0
--- /dev/null
+++ b/doc/src/sgml/images/internal-objects-hierarchy-ink-svgo.svg
@@ -0,0 +1,85 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="900" height="485" viewBox="0 0 900 485">
+  <title>
+    Hierarchy of Internal Objects
+  </title>
+  <style>
+    .text_normal{font-style:normal;font-weight:400;font-size:16px;font-family:&quot;Open Sans&quot;,sans-serif;fill:#000}
+  </style>
+  <rect x="1" y="1" rx="5" width="99%" height="99%" stroke="black" fill="none"/>
+  <text x="270" y="40" font-weight="400" font-size="24" font-family="&quot;Open Sans&quot;,sans-serif">
+    Hierarchy of Internal Objects
+  </text>
+  <g transform="translate(450 270)" fill="none">
+    <ellipse rx="380" ry="200" stroke="blue"/>
+    <text class="text_normal" x="-140" y="-170">
+      Server
+    </text>
+    <ellipse rx="320" ry="170" stroke="blue"/>
+    <text class="text_normal" x="-140" y="-130">
+      Cluster
+    </text>
+    <g transform="translate(40 -125)">
+      <ellipse rx="80" ry="20" stroke="blue"/>
+      <text class="text_normal" x="-60" y="5">
+        Database Names
+      </text>
+    </g>
+    <g transform="translate(180 -70)">
+      <ellipse rx="60" ry="20" stroke="blue"/>
+      <text class="text_normal" x="-40" y="5">
+        Tablespace
+      </text>
+    </g>
+    <g transform="translate(230 -5)">
+      <ellipse rx="80" ry="20" stroke="blue"/>
+      <text class="text_normal" x="-70" y="5">
+        Replication Origins
+      </text>
+    </g>
+    <g transform="translate(200 70)">
+      <ellipse rx="78" ry="27" stroke="blue"/>
+      <text class="text_normal" x="-60" y="-3">
+        Subscription for
+      </text>
+      <text class="text_normal" x="-68" y="10">
+        Logical Replication
+      </text>
+    </g>
+    <g transform="translate(100 120)">
+      <ellipse rx="40" ry="20" stroke="blue"/>
+      <text class="text_normal" x="-15" y="5">
+        Role
+      </text>
+    </g>
+    <g transform="translate(-80 10)">
+      <ellipse rx="220" ry="110" stroke="blue" stroke-width="2"/>
+      <text class="text_normal" x="-60" y="-80">
+        Database
+      </text>
+      <g transform="translate(-150 -30)">
+        <ellipse rx="50" ry="20" stroke="blue"/>
+        <text class="text_normal" x="-35" y="5">
+          Extension
+        </text>
+      </g>
+      <g transform="translate(-155 35)">
+        <ellipse rx="40" ry="20" stroke="blue"/>
+        <text class="text_normal" x="-35" y="5">
+          Collation
+        </text>
+      </g>
+      <g transform="translate(30 20)">
+        <ellipse rx="140" ry="70" stroke="blue"/>
+        <text class="text_normal" x="-80" y="-35">
+          Schema
+        </text>
+        <g transform="translate(20 10)">
+          <ellipse rx="90" ry="30" stroke="blue"/>
+          <text class="text_normal" x="-50" y="5">
+            Table, View, ...
+          </text>
+        </g>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/doc/src/sgml/images/internal-objects-hierarchy-ink.svg b/doc/src/sgml/images/internal-objects-hierarchy-ink.svg
new file mode 100644
index 0000000000..052726e7ae
--- /dev/null
+++ b/doc/src/sgml/images/internal-objects-hierarchy-ink.svg
@@ -0,0 +1,268 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   width="900px"
+   height="485px"
+   viewBox="0 0 900 485"
+   id="svg88"
+   sodipodi:docname="internal-objects-hierarchy-ink.svg"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)">
+  <metadata
+     id="metadata94">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>Hierarchy of Internal Objects</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs92" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="480"
+     id="namedview90"
+     showgrid="false"
+     inkscape:zoom="0.41555556"
+     inkscape:cx="450"
+     inkscape:cy="242.5"
+     inkscape:window-x="61"
+     inkscape:window-y="27"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg88" />
+  <title
+     id="title2">Hierarchy of Internal Objects</title>
+  <!-- common text classes -->
+  <style
+     type="text/css"
+     id="style4">
+  .text_normal  {font-style:normal;
+                 font-weight:normal;
+                 font-size:16px;
+                 font-family:&quot;Open Sans&quot;, sans-serif;
+                 fill:black;
+                }
+  .text_big     {font-style:normal;
+                 font-weight:normal;
+                 font-size:24px;
+                 font-family:&quot;Open Sans&quot;, sans-serif;
+                 fill:black;
+                }
+  </style>
+  <!--  start of rendering area  -->
+  <!--  enclosing rectangle  -->
+  <rect
+     x="1"
+     y="1"
+     rx="5"
+     width="99%"
+     height="99%"
+     stroke="black"
+     fill="none"
+     id="rect6" />
+  <text
+     class="text_big"
+     x="270"
+     y="40"
+     id="text8">Hierarchy of Internal Objects</text>
+  <g
+     fill="none"
+     id="g86">
+    <!--  set default value  -->
+    <g
+       transform="translate(450 270)"
+       id="g84">
+      <ellipse
+         rx="380"
+         ry="200"
+         stroke="blue"
+         id="ellipse10" />
+      <text
+         class="text_normal"
+         x="-140"
+         y="-170"
+         id="text12">Server</text>
+      <g
+         id="g50">
+        <ellipse
+           rx="320"
+           ry="170"
+           stroke="blue"
+           id="ellipse14" />
+        <text
+           class="text_normal"
+           x="-140"
+           y="-130"
+           id="text16">Cluster</text>
+        <g
+           transform="translate(40 -125)"
+           id="g22">
+          <ellipse
+             rx="80"
+             ry="20"
+             stroke="blue"
+             id="ellipse18" />
+          <text
+             class="text_normal"
+             x="-60"
+             y="5"
+             id="text20">Database Names</text>
+        </g>
+        <g
+           transform="translate(180 -70)"
+           id="g28">
+          <ellipse
+             rx="60"
+             ry="20"
+             stroke="blue"
+             id="ellipse24" />
+          <text
+             class="text_normal"
+             x="-40"
+             y="5"
+             id="text26">Tablespace</text>
+        </g>
+        <g
+           transform="translate(230 -5)"
+           id="g34">
+          <ellipse
+             rx="80"
+             ry="20"
+             stroke="blue"
+             id="ellipse30" />
+          <text
+             class="text_normal"
+             x="-70"
+             y="5"
+             id="text32">Replication Origins</text>
+        </g>
+        <g
+           transform="translate(200 70)"
+           id="g42">
+          <ellipse
+             rx="78"
+             ry="27"
+             stroke="blue"
+             id="ellipse36" />
+          <text
+             class="text_normal"
+             x="-60"
+             y="-3"
+             id="text38">Subscription for</text>
+          <text
+             class="text_normal"
+             x="-68"
+             y="10"
+             id="text40">Logical Replication</text>
+        </g>
+        <g
+           transform="translate(100 120)"
+           id="g48">
+          <ellipse
+             rx="40"
+             ry="20"
+             stroke="blue"
+             id="ellipse44" />
+          <text
+             class="text_normal"
+             x="-15"
+             y="5"
+             id="text46">Role</text>
+        </g>
+      </g>
+      <g
+         transform="translate(-80 10)"
+         id="g82">
+        <ellipse
+           rx="220"
+           ry="110"
+           stroke="blue"
+           stroke-width="2px"
+           id="ellipse52" />
+        <text
+           class="text_normal"
+           x="-60"
+           y="-80"
+           id="text54">Database</text>
+        <g
+           transform="translate(-120 -50)"
+           id="g80">
+          <g
+             transform="translate(-30 20)"
+             id="g60">
+            <ellipse
+               rx="50"
+               ry="20"
+               stroke="blue"
+               id="ellipse56" />
+            <text
+               class="text_normal"
+               x="-35"
+               y="5"
+               id="text58">Extension</text>
+          </g>
+          <g
+             transform="translate(-35 85)"
+             id="g66">
+            <ellipse
+               rx="40"
+               ry="20"
+               stroke="blue"
+               id="ellipse62" />
+            <text
+               class="text_normal"
+               x="-35"
+               y="5"
+               id="text64">Collation</text>
+          </g>
+          <g
+             transform="translate(150 70)"
+             id="g78">
+            <ellipse
+               rx="140"
+               ry="70"
+               stroke="blue"
+               id="ellipse68" />
+            <text
+               class="text_normal"
+               x="-80"
+               y="-35"
+               id="text70">Schema</text>
+            <g
+               transform="translate(20 10)"
+               id="g76">
+              <ellipse
+                 rx="90"
+                 ry="30"
+                 stroke="blue"
+                 id="ellipse72" />
+              <text
+                 class="text_normal"
+                 x="-50"
+                 y="5"
+                 id="text74">Table, View, ...</text>
+            </g>
+          </g>
+        </g>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/doc/src/sgml/images/internal-objects-hierarchy-raw.svg b/doc/src/sgml/images/internal-objects-hierarchy-raw.svg
new file mode 100644
index 0000000000..531a24d3be
--- /dev/null
+++ b/doc/src/sgml/images/internal-objects-hierarchy-raw.svg
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+     xmlns:xlink="http://www.w3.org/1999/xlink"
+     version="1.1"
+     width="900px" height="485px"
+     viewBox="0 0 900 485" >
+
+  <title>Hierarchy of Internal Objects</title>
+
+  <!-- common text classes -->
+  <style type="text/css">
+  .text_normal  {font-style:normal;
+                 font-weight:normal;
+                 font-size:16px;
+                 font-family:"Open Sans", sans-serif;
+                 fill:black;
+                }
+  .text_big     {font-style:normal;
+                 font-weight:normal;
+                 font-size:24px;
+                 font-family:"Open Sans", sans-serif;
+                 fill:black;
+                }
+  </style>
+
+  <!--  start of rendering area  -->
+  <!--  enclosing rectangle  -->
+  <rect x="1" y="1" rx="5" width="99%" height="99%" stroke="black" fill="none" />
+  <text class="text_big" x="270" y="40">Hierarchy of Internal Objects</text>
+
+
+  <g fill="none">   <!--  set default value  -->
+
+    <g transform="translate(450 270)">
+      <ellipse rx="380" ry="200" stroke="blue" />
+      <text class="text_normal" x="-140" y="-170">Server</text>
+
+      <g>
+        <ellipse rx="320" ry="170" stroke="blue" />
+        <text class="text_normal" x="-140" y="-130">Cluster</text>
+
+        <g transform="translate(40 -125)">
+          <ellipse rx="80" ry="20" stroke="blue" />
+          <text class="text_normal" x="-60" y="5">Database Names</text>
+        </g>
+
+        <g transform="translate(180 -70)">
+          <ellipse rx="60" ry="20" stroke="blue" />
+          <text class="text_normal" x="-40" y="5">Tablespace</text>
+        </g>
+
+        <g transform="translate(230 -5)">
+          <ellipse rx="80" ry="20" stroke="blue" />
+          <text class="text_normal" x="-70" y="5">Replication Origins</text>
+        </g>
+
+        <g transform="translate(200 70)">
+          <ellipse rx="78" ry="27" stroke="blue" />
+          <text class="text_normal" x="-60" y="-3">Subscription for</text>
+          <text class="text_normal" x="-68" y="10">Logical Replication</text>
+        </g>
+
+        <g transform="translate(100 120)">
+          <ellipse rx="40" ry="20" stroke="blue" />
+          <text class="text_normal" x="-15" y="5">Role</text>
+        </g>
+
+      </g>
+
+      <g transform="translate(-80 10)">
+        <ellipse rx="220" ry="110" stroke="blue" stroke-width="2px" />
+        <text class="text_normal" x="-60" y="-80">Database</text>
+
+        <g transform="translate(-120 -50)">
+          <g transform="translate(-30 20)">
+            <ellipse rx="50" ry="20" stroke="blue" />
+            <text class="text_normal" x="-35" y="5">Extension</text>
+          </g>
+
+          <g transform="translate(-35 85)">
+            <ellipse rx="40" ry="20" stroke="blue" />
+            <text class="text_normal" x="-35" y="5">Collation</text>
+          </g>
+
+          <g transform="translate(150 70)">
+            <ellipse rx="140" ry="70" stroke="blue" />
+            <text class="text_normal" x="-80" y="-35">Schema</text>
+
+            <g  transform="translate(20 10)">
+              <ellipse rx="90" ry="30" stroke="blue" />
+              <text class="text_normal" x="-50" y="5">Table, View, ...</text>
+            </g>
+          </g>
+        </g>
+      </g>
+    </g>
+  </g>
+
+</svg>
diff --git a/doc/src/sgml/images/ram-proc-file-ink-svgo.svg b/doc/src/sgml/images/ram-proc-file-ink-svgo.svg
new file mode 100644
index 0000000000..ed026fc04a
--- /dev/null
+++ b/doc/src/sgml/images/ram-proc-file-ink-svgo.svg
@@ -0,0 +1,288 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="900" height="600" viewBox="0 0 900 600">
+  <title>
+    PG Overall Server Architecture
+  </title>
+  <style>
+    .text_big{font-style:normal}.text_big,.text_comment,.text_normal,.text_small{font-weight:400;font-family:&quot;Open Sans&quot;,sans-serif;fill:#000}.text_normal,.text_small{font-style:normal}.text_small{font-size:12px}.text_normal{font-size:16px}.text_big{font-size:24px}.text_comment{font-style:italic;font-size:16px}
+  </style>
+  <defs>
+    <symbol id="note_200x20" stroke="black" fill="lightyellow">
+      <title>
+        UML Note (200 x 20 px)
+      </title>
+      <path d="M200 10v10H0V0h190v10h10L190 0"/>
+    </symbol>
+    <symbol id="note_250x20" stroke="black" fill="lightyellow">
+      <title>
+        UML Note (250 x 20 px)
+      </title>
+      <path d="M250 10v10H0V0h240v10h10L240 0"/>
+    </symbol>
+    <symbol id="note_100x35" stroke="black" fill="lightyellow">
+      <title>
+        UML Note (100 x 35 px)
+      </title>
+      <path d="M100 10v25H0V0h90v10h10L90 0"/>
+    </symbol>
+    <symbol id="note_170x50" stroke="black" fill="lightyellow">
+      <title>
+        UML Note (170 x 50 px)
+      </title>
+      <path d="M170 10v40H0V0h160v10h10L160 0"/>
+    </symbol>
+    <symbol id="state_300x120">
+      <title>
+        UML State, big
+      </title>
+      <rect width="300" height="120" rx="10" stroke="blue" fill="none"/>
+    </symbol>
+    <symbol id="state_350x120">
+      <title>
+        UML State, big
+      </title>
+      <rect width="350" height="120" rx="10" stroke="blue" fill="none"/>
+    </symbol>
+    <symbol id="disc" stroke="blue" fill="none">
+      <title>
+        Disc
+      </title>
+      <ellipse cx="51" cy="13" rx="50" ry="12"/>
+      <path d="M1 13v60"/>
+      <path d="M101 13v60"/>
+      <path d="M1 73a50 12 0 00100 0"/>
+    </symbol>
+    <symbol id="laptop" stroke="black" fill="none">
+      <title>
+        Laptop
+      </title>
+      <path d="M20 40V0h54v40l15 15H5l15-15h54"/>
+      <path d="M23 3h48v34H23z"/>
+      <path d="M30 10h20"/>
+      <path d="M30 15h25"/>
+      <path d="M30 20h10"/>
+      <path d="M30 30h20"/>
+      <path d="M25 50h45l2 2H22z"/>
+    </symbol>
+    <marker id="arrowhead_start" markerWidth="10" markerHeight="10" refX="0" refY="3" orient="auto">
+      <path d="M6 0L0 3l6 3" stroke="black" fill="none"/>
+    </marker>
+    <marker id="arrowhead_end" markerWidth="10" markerHeight="10" refX="6" refY="3" orient="auto">
+      <path d="M0 0l6 3-6 3" stroke="black" fill="none"/>
+    </marker>
+  </defs>
+  <rect x="1" y="1" rx="5" width="99%" height="99%" stroke="black" fill="none"/>
+  <text x="15" y="40" class="text_big">
+    Client
+  </text>
+  <text x="140" y="40" class="text_big">
+    Server
+  </text>
+  <use xlink:href="#laptop" x="5" y="210"/>
+  <g transform="translate(130 70)">
+    <use xlink:href="#state_350x120"/>
+    <text x="10" y="20" class="text_normal">
+      maintenance_work_mem (per connection)
+    </text>
+    <text x="10" y="40" class="text_normal">
+      work_mem (per query operation)
+    </text>
+    <text x="10" y="60" class="text_normal">
+      autovacuum_work_mem (per worker
+    </text>
+    <text x="230" y="75" class="text_normal">
+      process)
+    </text>
+    <text x="10" y="95" class="text_normal">
+      temp_buffer (per connection)
+    </text>
+    <text x="10" y="110" class="text_normal">
+      ...
+    </text>
+    <use xlink:href="#note_200x20" x="140" y="-15"/>
+    <text x="150" class="text_comment">
+      Individual Memory
+    </text>
+  </g>
+  <g transform="translate(520 70)">
+    <use xlink:href="#state_300x120"/>
+    <text x="10" y="30" class="text_normal">
+      shared_buffers (heap and index)
+    </text>
+    <text x="10" y="70" class="text_normal">
+      wal_buffers (WAL records)
+    </text>
+    <text x="10" y="100" class="text_normal">
+      ...
+    </text>
+    <use xlink:href="#note_250x20" x="40" y="-15"/>
+    <text x="50" class="text_comment">
+      Shared Memory (per Cluster)
+    </text>
+  </g>
+  <path stroke="blue" fill="none" d="M190 215h200v30H190z"/>
+  <text x="10" y="20" class="text_normal" transform="translate(190 215)">
+    Postmaster process
+  </text>
+  <path d="M90 230h85" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  <g transform="translate(140 230)">
+    <circle r="8" stroke="black" fill="lightyellow"/>
+    <text x="-4" y="4" class="text_small">
+      1
+    </text>
+  </g>
+  <path stroke="blue" fill="none" d="M150 315h370v30H150z"/>
+  <text x="10" y="20" class="text_normal" transform="translate(150 315)">
+    Backend processes (one per connection)
+  </text>
+  <path d="M155 315v-5h370v30h-5" stroke="blue" fill="none"/>
+  <path d="M160 310v-5h370v30h-5" stroke="blue" fill="none"/>
+  <path d="M90 240l63 63" stroke="black" fill="none" marker-start="url(#arrowhead_start)" marker-end="url(#arrowhead_end)"/>
+  <g transform="translate(140 290)">
+    <circle r="8" stroke="black" fill="lightyellow"/>
+    <text x="-4" y="4" class="text_small">
+      3
+    </text>
+  </g>
+  <path d="M360 250v50" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  <g transform="translate(190 255)">
+    <use xlink:href="#note_250x20"/>
+    <text x="10" y="15" class="text_comment">
+      Creates backend processes
+    </text>
+  </g>
+  <g transform="translate(360 281)">
+    <circle r="8" stroke="black" fill="lightyellow"/>
+    <text x="-4" y="4" class="text_small">
+      2
+    </text>
+  </g>
+  <path d="M460 300V200" stroke="black" fill="none" marker-start="url(#arrowhead_start)" marker-end="url(#arrowhead_end)"/>
+  <path d="M498 300V95h30" stroke="black" fill="none" marker-start="url(#arrowhead_start)" marker-end="url(#arrowhead_end)"/>
+  <path d="M508 300V135h20" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  <path stroke="blue" fill="none" d="M550 220h120v30H550z"/>
+  <text x="10" y="20" class="text_normal" transform="translate(550 220)">
+    WAL Writer
+  </text>
+  <path d="M590 150v65" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  <path d="M590 255v230" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  <path stroke="blue" fill="none" d="M610 340h140v30H610z"/>
+  <text x="10" y="20" class="text_normal" transform="translate(610 340)">
+    Checkpointer
+  </text>
+  <path d="M740 110v220" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  <path d="M605 355H475v130" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  <path d="M700 330V150" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  <g transform="translate(570 330)">
+    <use xlink:href="#note_100x35" x="50" y="-50"/>
+    <text x="60" y="-35" class="text_comment">
+      Checkpoint
+    </text>
+    <text x="60" y="-20" class="text_comment">
+      Record
+    </text>
+  </g>
+  <path stroke="blue" fill="none" d="M610 380h180v30H610z"/>
+  <text x="10" y="20" class="text_normal" transform="translate(610 380)">
+    Background Writer
+  </text>
+  <path d="M770 110v260" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  <path d="M605 395H485v90" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  <path stroke="blue" fill="none" d="M610 420h180v30H610z"/>
+  <text x="50" y="20" class="text_normal" transform="translate(610 420)">
+    Archiver
+  </text>
+  <path d="M620 485l30-30" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  <path d="M740 455v30" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  <path stroke="blue" fill="none" d="M135 380h120v30H135z"/>
+  <text x="10" y="20" class="text_normal" transform="translate(135 380)">
+    AutoVacuum
+  </text>
+  <path d="M140 380v-5h120v30h-5" stroke="blue" fill="none"/>
+  <path d="M145 375v-5h120v30h-5" stroke="blue" fill="none"/>
+  <path stroke="blue" fill="none" d="M135 430h120v30H135z"/>
+  <text x="10" y="20" class="text_normal" transform="translate(135 430)">
+    Log Writer
+  </text>
+  <path stroke="blue" fill="none" d="M290 370h140v30H290z"/>
+  <text x="10" y="20" class="text_normal" transform="translate(290 370)">
+    Stats Collector
+  </text>
+  <g transform="translate(145 490)">
+    <use xlink:href="#disc"/>
+    <text x="35" y="45" class="text_normal">
+      Log
+    </text>
+    <text x="15" y="60" class="text_small">
+      (text lines,
+    </text>
+    <text x="20" y="75" class="text_small">
+      sequential)
+    </text>
+  </g>
+  <path d="M195 465v20" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  <g transform="translate(410 490)">
+    <use xlink:href="#disc"/>
+    <text x="10" y="40" class="text_normal">
+      Heap and
+    </text>
+    <text x="25" y="55" class="text_normal">
+      Index
+    </text>
+    <text x="10" y="70" class="text_small">
+      (binary blocks,
+    </text>
+    <text x="30" y="80" class="text_small">
+      random)
+    </text>
+  </g>
+  <path d="M450 485V350" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  <g transform="translate(295 420)">
+    <use xlink:href="#note_170x50"/>
+    <text x="5" y="15" class="text_comment">
+      Read heap and index
+    </text>
+    <text x="5" y="30" class="text_comment">
+      pages and transfer
+    </text>
+    <text x="5" y="45" class="text_comment">
+      them to shared_buffers
+    </text>
+  </g>
+  <g transform="translate(550 490)">
+    <use xlink:href="#disc"/>
+    <text x="30" y="45" class="text_normal">
+      WAL
+    </text>
+    <text x="5" y="60" class="text_small">
+      (binary records,
+    </text>
+    <text x="20" y="75" class="text_small">
+      sequential)
+    </text>
+  </g>
+  <g transform="translate(690 490)">
+    <use xlink:href="#disc"/>
+    <text x="16" y="40" class="text_normal">
+      Archived
+    </text>
+    <text x="36" y="55" class="text_normal">
+      WAL
+    </text>
+  </g>
+  <path d="M110 20v550" stroke="black" fill="none"/>
+  <g transform="rotate(90 -33.5 156.5)">
+    <use xlink:href="#note_200x20"/>
+    <text class="text_comment" x="10" y="15">
+      Via TCP/IP or socket
+    </text>
+  </g>
+  <text class="text_big" x="95" transform="rotate(90 425 425)">
+    RAM
+  </text>
+  <text class="text_big" x="250" transform="rotate(90 425 425)">
+    PROCESSES
+  </text>
+  <text class="text_big" x="500" transform="rotate(90 425 425)">
+    FILES
+  </text>
+</svg>
diff --git a/doc/src/sgml/images/ram-proc-file-ink.svg b/doc/src/sgml/images/ram-proc-file-ink.svg
new file mode 100644
index 0000000000..5f179c1688
--- /dev/null
+++ b/doc/src/sgml/images/ram-proc-file-ink.svg
@@ -0,0 +1,846 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   width="900px"
+   height="600px"
+   viewBox="0 0 900 600"
+   id="svg308"
+   sodipodi:docname="ram-proc-file-ink.svg"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)">
+  <metadata
+     id="metadata312">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>PG Overall Server Architecture</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="480"
+     id="namedview310"
+     showgrid="false"
+     inkscape:zoom="0.39333333"
+     inkscape:cx="450"
+     inkscape:cy="300"
+     inkscape:window-x="61"
+     inkscape:window-y="27"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg308" />
+  <title
+     id="title2">PG Overall Server Architecture</title>
+  <style
+     type="text/css"
+     id="style4">
+  .text_small   {font-style:normal;
+                 font-weight:normal;
+                 font-size:12px;
+                 font-family:&quot;Open Sans&quot;, sans-serif;
+                 fill:black;
+                }
+  .text_normal  {font-style:normal;
+                 font-weight:normal;
+                 font-size:16px;
+                 font-family:&quot;Open Sans&quot;, sans-serif;
+                 fill:black;
+                }
+  .text_big     {font-style:normal;
+                 font-weight:normal;
+                 font-size:24px;
+                 font-family:&quot;Open Sans&quot;, sans-serif;
+                 fill:black;
+                }
+  .text_comment {font-style:italic;
+                 font-weight:normal;
+                 font-size:16px;
+                 font-family:&quot;Open Sans&quot;, sans-serif;
+                 fill:black;
+                }
+  </style>
+  <defs
+     id="defs70">
+    <!-- Some notes in different sizes  -->
+    <symbol
+       id="note_200x20"
+       stroke="black"
+       fill="lightyellow">
+      <title
+         id="title6">UML Note (200 x 20 px)</title>
+      <path
+         d="M 200,10 v 10 h -200 v -20 h 190 v 10 h 10 l -10,-10"
+         id="path8" />
+    </symbol>
+    <symbol
+       id="note_250x20"
+       stroke="black"
+       fill="lightyellow">
+      <title
+         id="title11">UML Note (250 x 20 px)</title>
+      <path
+         d="M 250,10 v 10 h -250 v -20 h 240 v 10 h 10 l -10,-10"
+         id="path13" />
+    </symbol>
+    <symbol
+       id="note_100x35"
+       stroke="black"
+       fill="lightyellow">
+      <title
+         id="title16">UML Note (100 x 35 px)</title>
+      <path
+         d="M 100,10 v 25 h -100 v -35 h 90 v 10 h 10 l -10,-10"
+         id="path18" />
+    </symbol>
+    <symbol
+       id="note_170x50"
+       stroke="black"
+       fill="lightyellow">
+      <title
+         id="title21">UML Note (170 x 50 px)</title>
+      <path
+         d="M 170,10 v 40 h -170 v -50 h 160 v 10 h 10 l -10,-10"
+         id="path23" />
+    </symbol>
+    <!--  UML states (used for buffers) -->
+    <symbol
+       id="state_300x120">
+      <title
+         id="title26">UML State, big</title>
+      <rect
+         x="0"
+         y="0"
+         width="300"
+         height="120"
+         rx="10"
+         stroke="blue"
+         fill="none"
+         id="rect28" />
+    </symbol>
+    <symbol
+       id="state_350x120">
+      <title
+         id="title31">UML State, big</title>
+      <rect
+         x="0"
+         y="0"
+         width="350"
+         height="120"
+         rx="10"
+         stroke="blue"
+         fill="none"
+         id="rect33" />
+    </symbol>
+    <!-- Discs  -->
+    <symbol
+       id="disc"
+       stroke="blue"
+       fill="none">
+      <title
+         id="title36">Disc</title>
+      <ellipse
+         cx="51"
+         cy="13"
+         rx="50"
+         ry="12"
+         id="ellipse38" />
+      <!-- top -->
+      <path
+         d="M 1,13 v 60"
+         id="path40" />
+      <!-- left -->
+      <path
+         d="M 101,13 v 60"
+         id="path42" />
+      <!-- right -->
+      <path
+         d="M 1,73 A 50, 12, 0, 0, 0, 101,73"
+         id="path44" />
+      <!-- bottom -->
+    </symbol>
+    <!--  Laptop  -->
+    <symbol
+       id="laptop"
+       stroke="black"
+       fill="none">
+      <title
+         id="title47">Laptop</title>
+      <path
+         d="M 20,40 v -40 h 54 v 40 l 15,15 h -84 l 15,-15 h 54"
+         id="path49" />
+      <rect
+         x="23"
+         y="3"
+         width="48"
+         height="34"
+         id="rect51" />
+      <!-- symbolize some lines -->
+      <path
+         d="M 30,10 h 20"
+         id="path53" />
+      <path
+         d="M 30,15 h 25"
+         id="path55" />
+      <path
+         d="M 30,20 h 10"
+         id="path57" />
+      <path
+         d="M 30,30 h 20"
+         id="path59" />
+      <!-- symbolize keyboard -->
+      <path
+         d="M 25,50 h 45 l 2,2 h -50 z "
+         id="path61" />
+    </symbol>
+    <!--  marker start/end -->
+    <marker
+       id="arrowhead_start"
+       markerWidth="10"
+       markerHeight="10"
+       refX="0"
+       refY="3"
+       orient="auto">
+      <path
+         d="M 6,0 l -6,3 l 6,3"
+         stroke="black"
+         fill="none"
+         id="path64" />
+    </marker>
+    <marker
+       id="arrowhead_end"
+       markerWidth="10"
+       markerHeight="10"
+       refX="6"
+       refY="3"
+       orient="auto">
+      <path
+         d="M 0,0 l 6,3 l -6,3"
+         stroke="black"
+         fill="none"
+         id="path67" />
+    </marker>
+  </defs>
+  <!--  start of rendering area  -->
+  <!--  enclosing rectangle  -->
+  <rect
+     x="1"
+     y="1"
+     rx="5"
+     width="99%"
+     height="99%"
+     stroke="black"
+     fill="none"
+     id="rect72" />
+  <!-- caption, client side -->
+  <text
+     x="15"
+     y="40"
+     class="text_big"
+     id="text74">Client</text>
+  <text
+     x="140"
+     y="40"
+     class="text_big"
+     id="text76">Server</text>
+  <use
+     xlink:href="#laptop"
+     x="5"
+     y="210"
+     id="use78" />
+  <!--  individual memory -->
+  <g
+     transform="translate(130, 70)"
+     id="g98">
+    <use
+       xlink:href="#state_350x120"
+       x="0"
+       y="0"
+       id="use80" />
+    <text
+       x="10"
+       y="20"
+       class="text_normal"
+       id="text82">maintenance_work_mem (per connection)</text>
+    <text
+       x="10"
+       y="40"
+       class="text_normal"
+       id="text84">work_mem (per query operation)</text>
+    <text
+       x="10"
+       y="60"
+       class="text_normal"
+       id="text86">autovacuum_work_mem (per worker</text>
+    <text
+       x="230"
+       y="75"
+       class="text_normal"
+       id="text88">process)</text>
+    <text
+       x="10"
+       y="95"
+       class="text_normal"
+       id="text90">temp_buffer (per connection)</text>
+    <text
+       x="10"
+       y="110"
+       class="text_normal"
+       id="text92">...</text>
+    <use
+       xlink:href="#note_200x20"
+       x="140"
+       y="-15"
+       id="use94" />
+    <text
+       x="150"
+       y="0"
+       class="text_comment"
+       id="text96">Individual Memory</text>
+  </g>
+  <!--  shared memory -->
+  <g
+     transform="translate(520, 70)"
+     id="g112">
+    <use
+       xlink:href="#state_300x120"
+       x="0"
+       y="0"
+       id="use100" />
+    <text
+       x="10"
+       y="30"
+       class="text_normal"
+       id="text102">shared_buffers (heap and index)</text>
+    <text
+       x="10"
+       y="70"
+       class="text_normal"
+       id="text104">wal_buffers (WAL records)</text>
+    <text
+       x="10"
+       y="100"
+       class="text_normal"
+       id="text106">...</text>
+    <use
+       xlink:href="#note_250x20"
+       x="40"
+       y="-15"
+       id="use108" />
+    <text
+       x="50"
+       y="0"
+       class="text_comment"
+       id="text110">Shared Memory (per Cluster)</text>
+  </g>
+  <!-- postmaster  -->
+  <g
+     transform="translate(190, 215)"
+     id="g118">
+    <rect
+       width="200"
+       height="30"
+       stroke="blue"
+       fill="none"
+       id="rect114" />
+    <text
+       x="10"
+       y="20"
+       class="text_normal"
+       id="text116">Postmaster process</text>
+  </g>
+  <path
+     d="M 90,230 h 85"
+     stroke="black"
+     fill="none"
+     marker-end="url(#arrowhead_end)"
+     id="path120" />
+  <g
+     transform="translate(140, 230)"
+     id="g126">
+    <circle
+       r="8"
+       stroke="black"
+       fill="lightyellow"
+       id="circle122" />
+    <text
+       x="-4"
+       y="4"
+       class="text_small"
+       id="text124">1</text>
+  </g>
+  <!-- backend processes -->
+  <g
+     transform="translate(150, 315)"
+     id="g136">
+    <rect
+       width="370"
+       height="30"
+       stroke="blue"
+       fill="none"
+       id="rect128" />
+    <text
+       x="10"
+       y="20"
+       class="text_normal"
+       id="text130">Backend processes (one per connection)</text>
+    <path
+       d="M 5,0 v -5 h 370 v 30 h -5"
+       stroke="blue"
+       fill="none"
+       id="path132" />
+    <path
+       d="M 10,-5 v -5 h 370 v 30 h -5"
+       stroke="blue"
+       fill="none"
+       id="path134" />
+  </g>
+  <path
+     d="M 90,240 153,303"
+     stroke="black"
+     fill="none"
+     marker-start="url(#arrowhead_start)"
+     marker-end="url(#arrowhead_end)"
+     id="path138" />
+  <g
+     transform="translate(140, 290)"
+     id="g144">
+    <circle
+       r="8"
+       stroke="black"
+       fill="lightyellow"
+       id="circle140" />
+    <text
+       x="-4"
+       y="4"
+       class="text_small"
+       id="text142">3</text>
+  </g>
+  <!-- connection between postmaster and backend processes  -->
+  <path
+     d="M 360,250 v 50"
+     stroke="black"
+     fill="none"
+     marker-end="url(#arrowhead_end)"
+     id="path146" />
+  <g
+     transform="translate(190, 255)"
+     id="g152">
+    <use
+       xlink:href="#note_250x20"
+       id="use148" />
+    <text
+       x="10"
+       y="15"
+       class="text_comment"
+       id="text150">Creates backend processes</text>
+  </g>
+  <g
+     transform="translate(360, 281)"
+     id="g158">
+    <circle
+       r="8"
+       stroke="black"
+       fill="lightyellow"
+       id="circle154" />
+    <text
+       x="-4"
+       y="4"
+       class="text_small"
+       id="text156">2</text>
+  </g>
+  <!-- backend process' access to individual memory -->
+  <path
+     d="M 460,300 v -100"
+     stroke="black"
+     fill="none"
+     marker-start="url(#arrowhead_start)"
+     marker-end="url(#arrowhead_end)"
+     id="path160" />
+  <!-- its access to shared buffers and WAL buffers -->
+  <path
+     d="M 498,300 v -205 h 30"
+     stroke="black"
+     fill="none"
+     marker-start="url(#arrowhead_start)"
+     marker-end="url(#arrowhead_end)"
+     id="path162" />
+  <path
+     d="M 508,300 v -165 h 20"
+     stroke="black"
+     fill="none"
+     marker-end="url(#arrowhead_end)"
+     id="path164" />
+  <!-- WAL writer  -->
+  <g
+     transform="translate(550, 220)"
+     id="g170">
+    <rect
+       width="120"
+       height="30"
+       stroke="blue"
+       fill="none"
+       id="rect166" />
+    <text
+       x="10"
+       y="20"
+       class="text_normal"
+       id="text168">WAL Writer</text>
+  </g>
+  <path
+     d="M 590,150 v 65"
+     stroke="black"
+     fill="none"
+     marker-end="url(#arrowhead_end)"
+     id="path172" />
+  <path
+     d="M 590,255 v 230"
+     stroke="black"
+     fill="none"
+     marker-end="url(#arrowhead_end)"
+     id="path174" />
+  <!-- Checkpoiner -->
+  <g
+     transform="translate(610, 340)"
+     id="g180">
+    <rect
+       width="140"
+       height="30"
+       stroke="blue"
+       fill="none"
+       id="rect176" />
+    <text
+       x="10"
+       y="20"
+       class="text_normal"
+       id="text178">Checkpointer</text>
+  </g>
+  <path
+     d="M 740,110 v 220"
+     stroke="black"
+     fill="none"
+     marker-end="url(#arrowhead_end)"
+     id="path182" />
+  <path
+     d="M 605,355 h -130 v 130"
+     stroke="black"
+     fill="none"
+     marker-end="url(#arrowhead_end)"
+     id="path184" />
+  <path
+     d="M 700,330 v -180"
+     stroke="black"
+     fill="none"
+     marker-end="url(#arrowhead_end)"
+     id="path186" />
+  <g
+     transform="translate(570, 330)"
+     id="g194">
+    <use
+       xlink:href="#note_100x35"
+       x="50"
+       y="-50"
+       id="use188" />
+    <text
+       x="60"
+       y="-35"
+       class="text_comment"
+       id="text190">Checkpoint</text>
+    <text
+       x="60"
+       y="-20"
+       class="text_comment"
+       id="text192">Record</text>
+  </g>
+  <!-- BG writer  -->
+  <g
+     transform="translate(610, 380)"
+     id="g200">
+    <rect
+       width="180"
+       height="30"
+       stroke="blue"
+       fill="none"
+       id="rect196" />
+    <text
+       x="10"
+       y="20"
+       class="text_normal"
+       id="text198">Background Writer</text>
+  </g>
+  <path
+     d="M 770,110 v 260"
+     stroke="black"
+     fill="none"
+     marker-end="url(#arrowhead_end)"
+     id="path202" />
+  <path
+     d="M 605,395 h -120 v 90"
+     stroke="black"
+     fill="none"
+     marker-end="url(#arrowhead_end)"
+     id="path204" />
+  <!-- Archiver  -->
+  <g
+     transform="translate(610, 420)"
+     id="g210">
+    <rect
+       width="180"
+       height="30"
+       stroke="blue"
+       fill="none"
+       id="rect206" />
+    <text
+       x="50"
+       y="20"
+       class="text_normal"
+       id="text208">Archiver</text>
+  </g>
+  <path
+     d="M 620,485 l 30,-30"
+     stroke="black"
+     fill="none"
+     marker-end="url(#arrowhead_end)"
+     id="path212" />
+  <path
+     d="M 740,455 v 30"
+     stroke="black"
+     fill="none"
+     marker-end="url(#arrowhead_end)"
+     id="path214" />
+  <!-- Vacuum  -->
+  <g
+     transform="translate(135, 380)"
+     id="g224">
+    <rect
+       width="120"
+       height="30"
+       stroke="blue"
+       fill="none"
+       id="rect216" />
+    <text
+       x="10"
+       y="20"
+       class="text_normal"
+       id="text218">AutoVacuum</text>
+    <path
+       d="M 5,0 v -5 h 120 v 30 h -5"
+       stroke="blue"
+       fill="none"
+       id="path220" />
+    <path
+       d="M 10,-5 v -5 h 120 v 30 h -5"
+       stroke="blue"
+       fill="none"
+       id="path222" />
+  </g>
+  <!-- Log Writer -->
+  <g
+     transform="translate(135, 430)"
+     id="g230">
+    <rect
+       width="120"
+       height="30"
+       stroke="blue"
+       fill="none"
+       id="rect226" />
+    <text
+       x="10"
+       y="20"
+       class="text_normal"
+       id="text228">Log Writer</text>
+  </g>
+  <!-- Stats Collector (135, 460) -->
+  <g
+     transform="translate(290, 370)"
+     id="g236">
+    <rect
+       width="140"
+       height="30"
+       stroke="blue"
+       fill="none"
+       id="rect232" />
+    <text
+       x="10"
+       y="20"
+       class="text_normal"
+       id="text234">Stats Collector</text>
+  </g>
+  <!--       -->
+  <!-- files -->
+  <!--       -->
+  <g
+     transform="translate(145, 490)"
+     id="g246">
+    <use
+       xlink:href="#disc"
+       id="use238" />
+    <text
+       x="35"
+       y="45"
+       class="text_normal"
+       id="text240">Log</text>
+    <text
+       x="15"
+       y="60"
+       class="text_small"
+       id="text242">(text lines,</text>
+    <text
+       x="20"
+       y="75"
+       class="text_small"
+       id="text244">sequential)</text>
+  </g>
+  <path
+     d="M 195,465 v 20"
+     stroke="black"
+     fill="none"
+     marker-end="url(#arrowhead_end)"
+     id="path248" />
+  <g
+     transform="translate(410, 490)"
+     id="g260">
+    <use
+       xlink:href="#disc"
+       id="use250" />
+    <text
+       x="10"
+       y="40"
+       class="text_normal"
+       id="text252">Heap and</text>
+    <text
+       x="25"
+       y="55"
+       class="text_normal"
+       id="text254">Index</text>
+    <text
+       x="10"
+       y="70"
+       class="text_small"
+       id="text256">(binary blocks,</text>
+    <text
+       x="30"
+       y="80"
+       class="text_small"
+       id="text258">random)</text>
+  </g>
+  <path
+     d="M 450,485 v -135"
+     stroke="black"
+     fill="none"
+     marker-end="url(#arrowhead_end)"
+     id="path262" />
+  <g
+     transform="translate(295, 420)"
+     id="g272">
+    <use
+       xlink:href="#note_170x50"
+       id="use264" />
+    <text
+       x="5"
+       y="15"
+       class="text_comment"
+       id="text266">Read heap and index</text>
+    <text
+       x="5"
+       y="30"
+       class="text_comment"
+       id="text268">pages and transfer</text>
+    <text
+       x="5"
+       y="45"
+       class="text_comment"
+       id="text270">them to shared_buffers</text>
+  </g>
+  <g
+     transform="translate(550, 490)"
+     id="g282">
+    <use
+       xlink:href="#disc"
+       id="use274" />
+    <text
+       x="30"
+       y="45"
+       class="text_normal"
+       id="text276">WAL</text>
+    <text
+       x="5"
+       y="60"
+       class="text_small"
+       id="text278">(binary records,</text>
+    <text
+       x="20"
+       y="75"
+       class="text_small"
+       id="text280">sequential)</text>
+  </g>
+  <g
+     transform="translate(690, 490)"
+     id="g290">
+    <use
+       xlink:href="#disc"
+       id="use284" />
+    <text
+       x="16"
+       y="40"
+       class="text_normal"
+       id="text286">Archived</text>
+    <text
+       x="36"
+       y="55"
+       class="text_normal"
+       id="text288">WAL</text>
+  </g>
+  <!-- boarder between client and server side -->
+  <path
+     d="M 110,20 v 550"
+     stroke="black"
+     fill="none"
+     id="path292" />
+  <g
+     transform="translate(123, 190) rotate(90)"
+     id="g298">
+    <use
+       xlink:href="#note_200x20"
+       id="use294" />
+    <text
+       class="text_comment"
+       x="10"
+       y="15"
+       id="text296">Via TCP/IP or socket</text>
+  </g>
+  <!-- right side -->
+  <g
+     transform="translate(850, 0) rotate(90)"
+     id="g306">
+    <text
+       class="text_big"
+       x="95"
+       id="text300">RAM</text>
+    <text
+       class="text_big"
+       x="250"
+       id="text302">PROCESSES</text>
+    <text
+       class="text_big"
+       x="500"
+       id="text304">FILES</text>
+  </g>
+</svg>
diff --git a/doc/src/sgml/images/ram-proc-file-raw.svg b/doc/src/sgml/images/ram-proc-file-raw.svg
new file mode 100644
index 0000000000..ddb9ec6cb6
--- /dev/null
+++ b/doc/src/sgml/images/ram-proc-file-raw.svg
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+     xmlns:xlink="http://www.w3.org/1999/xlink"
+     version="1.1"
+     width="900px" height="600px"
+     viewBox="0 0 900 600">
+
+  <title>PG Overall Server Architecture</title>
+
+  <style type="text/css">
+  .text_small   {font-style:normal;
+                 font-weight:normal;
+                 font-size:12px;
+                 font-family:"Open Sans", sans-serif;
+                 fill:black;
+                }
+  .text_normal  {font-style:normal;
+                 font-weight:normal;
+                 font-size:16px;
+                 font-family:"Open Sans", sans-serif;
+                 fill:black;
+                }
+  .text_big     {font-style:normal;
+                 font-weight:normal;
+                 font-size:24px;
+                 font-family:"Open Sans", sans-serif;
+                 fill:black;
+                }
+  .text_comment {font-style:italic;
+                 font-weight:normal;
+                 font-size:16px;
+                 font-family:"Open Sans", sans-serif;
+                 fill:black;
+                }
+  </style>
+
+  <defs>
+
+    <!-- Some notes in different sizes  -->
+    <symbol id="note_200x20" stroke="black" fill="lightyellow">
+      <title>UML Note (200 x 20 px)</title>
+      <path d="M 200,10 v 10 h -200 v -20 h 190 v 10 h 10 l -10,-10" />
+    </symbol>
+    <symbol id="note_250x20" stroke="black" fill="lightyellow">
+      <title>UML Note (250 x 20 px)</title>
+      <path d="M 250,10 v 10 h -250 v -20 h 240 v 10 h 10 l -10,-10" />
+    </symbol>
+    <symbol id="note_100x35" stroke="black" fill="lightyellow">
+      <title>UML Note (100 x 35 px)</title>
+      <path d="M 100,10 v 25 h -100 v -35 h 90 v 10 h 10 l -10,-10" />
+    </symbol>
+    <symbol id="note_170x50" stroke="black" fill="lightyellow">
+      <title>UML Note (170 x 50 px)</title>
+      <path d="M 170,10 v 40 h -170 v -50 h 160 v 10 h 10 l -10,-10" />
+    </symbol>
+
+    <!--  UML states (used for buffers) -->
+    <symbol id="state_300x120">
+      <title>UML State, big</title>
+      <rect x="0" y="0" width="300" height="120" rx="10" stroke="blue" fill="none"/>
+    </symbol>
+    <symbol id="state_350x120">
+      <title>UML State, big</title>
+      <rect x="0" y="0" width="350" height="120" rx="10" stroke="blue" fill="none"/>
+    </symbol>
+
+    <!-- Discs  -->
+    <symbol id="disc" stroke="blue" fill="none" >
+      <title>Disc</title>
+      <ellipse cx="51" cy="13" rx="50" ry="12" />      <!-- top -->
+      <path    d="M 1,13 v 60" />                      <!-- left -->
+      <path    d="M 101,13 v 60" />                    <!-- right -->
+      <path    d="M 1,73 A 50, 12, 0, 0, 0, 101,73" /> <!-- bottom -->
+    </symbol>
+
+    <!--  Laptop  -->
+    <symbol id="laptop" stroke="black" fill="none" >
+      <title>Laptop</title>
+      <path d="M 20,40 v -40 h 54 v 40 l 15,15 h -84 l 15,-15 h 54" />
+      <rect x="23" y="3" width="48" height="34" />
+      <!-- symbolize some lines -->
+      <path d="M 30,10 h 20" />
+      <path d="M 30,15 h 25" />
+      <path d="M 30,20 h 10" />
+      <path d="M 30,30 h 20" />
+      <!-- symbolize keyboard -->
+      <path d="M 25,50 h 45 l 2,2 h -50 z " />
+    </symbol>
+
+    <!--  marker start/end -->
+    <marker id="arrowhead_start"
+            markerWidth="10"
+            markerHeight="10"
+            refX="0"
+            refY="3"
+            orient="auto">
+      <path d="M 6,0 l -6,3 l 6,3" stroke="black" fill="none" />
+    </marker>
+    <marker id="arrowhead_end"
+            markerWidth="10"
+            markerHeight="10"
+            refX="6"
+            refY="3"
+            orient="auto">
+      <path d="M 0,0 l 6,3 l -6,3" stroke="black" fill="none" />
+    </marker>
+
+  </defs>
+
+
+  <!--  start of rendering area  -->
+  <!--  enclosing rectangle  -->
+  <rect x="1" y="1" rx="5" width="99%" height="99%" stroke="black" fill="none" />
+
+  <!-- caption, client side -->
+  <text x="15" y="40"  class="text_big">Client</text>
+  <text x="140" y="40" class="text_big">Server</text>
+  <use xlink:href="#laptop" x="5" y="210" />
+
+
+  <!--  individual memory -->
+  <g transform="translate(130, 70)">
+    <use xlink:href="#state_350x120" x="0" y="0" />
+    <text x="10" y="20"  class="text_normal">maintenance_work_mem (per connection)</text>
+    <text x="10" y="40"  class="text_normal">work_mem (per query operation)</text>
+    <text x="10" y="60"  class="text_normal">autovacuum_work_mem (per worker</text>
+    <text x="230" y="75"  class="text_normal">process)</text>
+    <text x="10" y="95" class="text_normal">temp_buffer (per connection)</text>
+    <text x="10" y="110" class="text_normal">...</text>
+    <use xlink:href="#note_200x20" x="140" y="-15" />
+    <text x="150" y="0"  class="text_comment">Individual Memory</text>
+  </g>
+
+  <!--  shared memory -->
+  <g transform="translate(520, 70)">
+    <use xlink:href="#state_300x120" x="0" y="0" />
+    <text x="10" y="30" class="text_normal">shared_buffers (heap and index)</text>
+    <text x="10" y="70" class="text_normal">wal_buffers (WAL records)</text>
+    <text x="10" y="100" class="text_normal">...</text>
+    <use xlink:href="#note_250x20" x="40" y="-15" />
+    <text x="50" y="0"  class="text_comment">Shared Memory (per Cluster)</text>
+  </g>
+
+  <!-- postmaster  -->
+  <g transform="translate(190, 215)">
+    <rect width="200" height="30" stroke="blue" fill="none" />
+    <text x="10" y="20" class="text_normal">Postmaster process</text>
+  </g>
+  <path d="M 90,230 h 85" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  <g transform="translate(140, 230)">
+    <circle r="8" stroke="black" fill="lightyellow" />
+    <text x="-4" y="4" class="text_small">1</text>
+  </g>
+
+  <!-- backend processes -->
+  <g transform="translate(150, 315)">
+    <rect width="370" height="30" stroke="blue" fill="none" />
+    <text x="10" y="20" class="text_normal">Backend processes (one per connection)</text>
+    <path d="M 5,0 v -5 h 370 v 30 h -5" stroke="blue" fill="none" />
+    <path d="M 10,-5 v -5 h 370 v 30 h -5" stroke="blue" fill="none" />
+  </g>
+
+  <path d="M 90,240 153,303" stroke="black" fill="none"
+        marker-start="url(#arrowhead_start)" marker-end="url(#arrowhead_end)"/>
+  <g transform="translate(140, 290)">
+    <circle r="8" stroke="black" fill="lightyellow" />
+    <text x="-4" y="4" class="text_small">3</text>
+  </g>
+
+  <!-- connection between postmaster and backend processes  -->
+  <path d="M 360,250 v 50" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  <g transform="translate(190, 255)">
+    <use xlink:href="#note_250x20" />
+    <text x="10" y="15" class="text_comment">Creates backend processes</text>
+  </g>
+  <g transform="translate(360, 281)">
+    <circle r="8" stroke="black" fill="lightyellow" />
+    <text x="-4" y="4" class="text_small">2</text>
+  </g>
+
+  <!-- backend process' access to individual memory -->
+  <path d="M 460,300 v -100" stroke="black" fill="none"
+        marker-start="url(#arrowhead_start)" marker-end="url(#arrowhead_end)"/>
+  <!-- its access to shared buffers and WAL buffers -->
+  <path d="M 498,300 v -205 h 30" stroke="black" fill="none"
+        marker-start="url(#arrowhead_start)" marker-end="url(#arrowhead_end)"/>
+  <path d="M 508,300 v -165 h 20" stroke="black" fill="none"
+        marker-end="url(#arrowhead_end)"/>
+
+  <!-- WAL writer  -->
+  <g transform="translate(550, 220)">
+    <rect width="120" height="30" stroke="blue" fill="none" />
+    <text x="10" y="20" class="text_normal">WAL Writer</text>
+  </g>
+  <path d="M 590,150 v 65" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  <path d="M 590,255 v 230" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+
+  <!-- Checkpoiner -->
+  <g transform="translate(610, 340)">
+    <rect width="140" height="30" stroke="blue" fill="none" />
+    <text x="10" y="20" class="text_normal">Checkpointer</text>
+  </g>
+  <path d="M 740,110 v 220" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  <path d="M 605,355 h -130 v 130" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  <path d="M 700,330 v -180" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  <g transform="translate(570, 330)">
+    <use xlink:href="#note_100x35" x="50" y="-50" />
+    <text x="60" y="-35"  class="text_comment">Checkpoint</text>
+    <text x="60" y="-20"  class="text_comment">Record</text>
+  </g>
+
+  <!-- BG writer  -->
+  <g transform="translate(610, 380)">
+    <rect width="180" height="30" stroke="blue" fill="none" />
+    <text x="10" y="20" class="text_normal">Background Writer</text>
+  </g>
+  <path d="M 770,110 v 260" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  <path d="M 605,395 h -120 v 90" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+
+  <!-- Archiver  -->
+  <g transform="translate(610, 420)">
+    <rect width="180" height="30" stroke="blue" fill="none" />
+    <text x="50" y="20" class="text_normal">Archiver</text>
+  </g>
+  <path d="M 620,485 l 30,-30" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+  <path d="M 740,455 v 30" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+
+  <!-- Vacuum  -->
+  <g transform="translate(135, 380)">
+    <rect width="120" height="30" stroke="blue" fill="none" />
+    <text x="10" y="20" class="text_normal">AutoVacuum</text>
+    <path d="M 5,0 v -5 h 120 v 30 h -5" stroke="blue" fill="none" />
+    <path d="M 10,-5 v -5 h 120 v 30 h -5" stroke="blue" fill="none" />
+  </g>
+
+  <!-- Log Writer -->
+  <g transform="translate(135, 430)">
+    <rect width="120" height="30" stroke="blue" fill="none" />
+    <text x="10" y="20" class="text_normal">Log Writer</text>
+  </g>
+
+  <!-- Stats Collector (135, 460) -->
+  <g transform="translate(290, 370)">
+    <rect width="140" height="30" stroke="blue" fill="none" />
+    <text x="10" y="20" class="text_normal">Stats Collector</text>
+  </g>
+
+  <!--       -->
+  <!-- files -->
+  <!--       -->
+  <g transform="translate(145, 490)">
+    <use xlink:href="#disc" />
+    <text x="35" y="45" class="text_normal">Log</text>
+    <text x="15" y="60" class="text_small">(text lines,</text>
+    <text x="20" y="75" class="text_small">sequential)</text>
+  </g>
+  <path d="M 195,465 v 20" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+
+  <g transform="translate(410, 490)">
+    <use xlink:href="#disc" />
+    <text x="10" y="40" class="text_normal">Heap and</text>
+    <text x="25" y="55" class="text_normal">Index</text>
+    <text x="10" y="70" class="text_small">(binary blocks,</text>
+    <text x="30" y="80" class="text_small">random)</text>
+  </g>
+  <path d="M 450,485 v -135" stroke="black" fill="none" marker-end="url(#arrowhead_end)"/>
+
+  <g transform="translate(295, 420)">
+    <use xlink:href="#note_170x50" />
+    <text x="5" y="15" class="text_comment">Read heap and index</text>
+    <text x="5" y="30" class="text_comment">pages and transfer</text>
+    <text x="5" y="45" class="text_comment">them to shared_buffers</text>
+  </g>
+
+  <g transform="translate(550, 490)">
+    <use xlink:href="#disc" />
+    <text x="30" y="45" class="text_normal">WAL</text>
+    <text x="5" y="60" class="text_small">(binary records,</text>
+    <text x="20" y="75" class="text_small">sequential)</text>
+  </g>
+
+  <g transform="translate(690, 490)">
+    <use xlink:href="#disc" />
+    <text x="16" y="40" class="text_normal">Archived</text>
+    <text x="36" y="55" class="text_normal">WAL</text>
+  </g>
+
+  <!-- boarder between client and server side -->
+  <path d="M 110,20 v 550" stroke="black" fill="none" />
+  <g transform="translate(123, 190) rotate(90)">
+    <use xlink:href="#note_200x20"  />
+    <text class="text_comment" x="10" y ="15">Via TCP/IP or socket</text>
+  </g>
+
+  <!-- right side -->
+  <g transform="translate(850, 0) rotate(90)">
+    <text class="text_big" x="95">RAM</text>
+    <text class="text_big" x="250">PROCESSES</text>
+    <text class="text_big" x="500">FILES</text>
+  </g>
+
+</svg>
diff --git a/doc/src/sgml/postgres.sgml b/doc/src/sgml/postgres.sgml
index e59cba7997..05d2862332 100644
--- a/doc/src/sgml/postgres.sgml
+++ b/doc/src/sgml/postgres.sgml
@@ -53,6 +53,7 @@
   </partintro>
 
   &start;
+  &architecture;
   &query;
   &advanced;
 
@@ -277,6 +278,7 @@
   &sourcerepo;
   &docguide;
   &limits;
+  &glossary;
   &acronyms;
 
  </part>
