Application use
===============

Developing an application with PGD is mostly the same as working with
any PostgreSQL database. What’s different, though, is that you need to
be aware of how your application interacts with replication. You need to
know how PGD behaves with applications, the SQL that is and isn’t
replicated, how different nodes are handled, and other important
information.

-  :ref:`Application behavior <Application behavior>`  looks at how PGD replication appears to an application,
   such as:

-  The commands that are replicated

-  The commands that run locally

-  When row-level locks are acquired

-  How and where triggers fire

-  Large objects

-  Toast

-  :ref:`DML and DDL replication and nonreplication <DML and DDL replication and nonreplication>`  shows the differences between the two classes of SQL
   statements and how PGD handles replicating them. It also looks at the
   commands PGD doesn’t replicate at all.

-  :ref:`Nodes with differences <Nodes with differences>`  examines how PGD works with configurations where there
   are differing table structures and schemas on replicated nodes. Also
   covered is how to compare between such nodes with LiveCompare and how
   differences in PostgreSQL versions running on nodes can be handled.

-  :ref:`Application rules <General rules for applications>`  offers some general rules for applications to avoid
   data anomalies.

-  :ref:`Timing considerations and synchronous replication <Timing considerations and synchronous replication>`  shows how the asynchronous/synchronous replication
   might affect an application’s view of data and notes functions to
   mitigate stale reads.

-  :ref:`Use of table access methods (TAMs) in PGD <Use of table access methods (TAMs) in PGD>`  (TAMs) notes the TAMs available with PGD and how to
   enable them.

-  :ref:`Feature compatibility <Feature compatibility>`  shows which server features work with which commit
   scopes and which commit scopes can be daisychained together.

.. toctree::
  :maxdepth: 3

  Using--appusage--behavior
  Using--appusage--dml-ddl
  Using--appusage--nodes-with-differences
  Using--appusage--rules
  Using--appusage--timing
  Using--appusage--table-access-methods
  Using--appusage--feature-compatibility
