annotate Sphinx/source/plugins/postgresql.rst @ 643:411e82bb3a9f

documenting revisions and multiple writers
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 23 Apr 2021 15:47:14 +0200
parents 5c0dfc863884
children 8b8df1be0cf9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
24
25fa874803ab plugins inside book
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1 .. _postgresql:
25fa874803ab plugins inside book
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2
25fa874803ab plugins inside book
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
3
25fa874803ab plugins inside book
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
4 PostgreSQL plugins
25fa874803ab plugins inside book
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
5 ==================
25fa874803ab plugins inside book
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
6
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
7 .. contents::
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
8
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
9 The Orthanc project provides two **official** plugins to replace the
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
10 default storage area (on the filesystem) and the default SQLite index
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
11 by a PostgreSQL database.
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
12
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
13 For general information, check out the `official homepage of the
358
011b01ccf52d fixing external hyperlinks
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 336
diff changeset
14 plugins <https://www.orthanc-server.com/static.php?page=postgresql>`__.
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
15
643
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
16 For information about scalability, make sure to read the section about
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
17 :ref:`multiple writers in large-scale deployments <multiple-writers>`.
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
18
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
19
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
20
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
21 Compilation
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
22 -----------
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
23
128
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
24 Static linking
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
25 ^^^^^^^^^^^^^^
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
26
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
27 .. highlight:: text
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
28
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
29 The procedure to compile these plugins is similar to that for the
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
30 :ref:`core of Orthanc <compiling>`. The following commands should work
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
31 for most UNIX-like distribution (including GNU/Linux)::
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
32
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
33 $ mkdir BuildPostgreSQL
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
34 $ cd BuildPostgreSQL
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
35 $ cmake ../PostgreSQL -DSTATIC_BUILD=ON -DCMAKE_BUILD_TYPE=Release
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
36 $ make
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
37
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
38 The compilation will produce 2 shared libraries, each containing one plugin for Orthanc:
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
39
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
40 * ``OrthancPostgreSQLIndex`` replaces the default SQLite index of Orthanc by PostgreSQL.
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
41 * ``OrthancPostgreSQLStorage`` makes Orthanc store the DICOM files it receives into PostgreSQL.
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
42
128
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
43
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
44 Microsoft Windows and Apple OS X
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
45 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
46
28
dc235678897c webviewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 27
diff changeset
47 Pre-compiled binaries for Microsoft Windows `are also available
358
011b01ccf52d fixing external hyperlinks
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 336
diff changeset
48 <https://www.orthanc-server.com/browse.php?path=/plugin-postgresql>`__.
30
79b6d3ea92aa dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 28
diff changeset
49 A package for `Apple's Mac OS X
358
011b01ccf52d fixing external hyperlinks
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 336
diff changeset
50 <https://www.osimis.io/en/download.html>`__
011b01ccf52d fixing external hyperlinks
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 336
diff changeset
51 is available courtesy of `Osimis <https://www.osimis.io/>`__.
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
52
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
53
263
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
54 .. _postgresql-ubuntu1604:
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
55
128
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
56 Dynamic linking on Ubuntu 16.04
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
57 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
58
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
59 .. highlight:: text
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
60
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
61 If static linking is not desired, here are build instructions for
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
62 Ubuntu 16.04 (provided build dependencies for the :ref:`core of
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
63 Orthanc <compiling>` have already been installed)::
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
64
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
65 $ sudo apt-get install libpq-dev postgresql-server-dev-all
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
66 $ mkdir BuildPostgreSQL
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
67 $ cd BuildPostgreSQL
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
68 $ cmake ../PostgreSQL -DCMAKE_BUILD_TYPE=Release \
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
69 -DALLOW_DOWNLOADS=ON \
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
70 -DUSE_SYSTEM_GOOGLE_TEST=OFF \
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
71 -DUSE_SYSTEM_ORTHANC_SDK=OFF
128
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
72 $ make
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
73
263
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
74
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
75 .. _postgresql-cmake:
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
76
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
77 Dynamic linking on other GNU/Linux distributions
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
78 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
79
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
80 .. highlight:: text
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
81
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
82 The build instructions should always be very similar to those for
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
83 :ref:`Ubuntu 16.04 <postgresql-ubuntu1604>`. One difficulty that could
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
84 however arise is that it is possible that the CMake environment that
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
85 is shipped with the GNU/Linux distribution cannot locate a recent
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
86 version of the development headers for PostgreSQL. This leads to an
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
87 error while invoking CMake that looks like::
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
88
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
89 -- Could NOT find PostgreSQL (missing: PostgreSQL_TYPE_INCLUDE_DIR)
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
90
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
91 In such a situation, please add your version of PostgreSQL to the
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
92 macro ``PostgreSQL_ADDITIONAL_VERSIONS`` that is defined at the end of
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
93 the `Resources/CMake/PostgreSQLConfiguration.cmake file
449
2922fb1bd65e fix links
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 445
diff changeset
94 <https://hg.orthanc-server.com/orthanc-databases/file/default/Resources/CMake/PostgreSQLConfiguration.cmake>`__
361
84e3a2612c36 links to hg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 358
diff changeset
95 in the sources of the project.
263
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
96
128
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
97
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
98 Usage
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
99 -----
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
100
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
101 .. highlight:: json
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
102
31
93bbfaf0e62c worklist instructions migrated to a specific page, indexing of Osimis Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 30
diff changeset
103 You of course first have to :ref:`install Orthanc <binaries>`, with a
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
104 version above 0.9.5. You then have to **create a database** dedicated
28
dc235678897c webviewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 27
diff changeset
105 to Orthanc on some PostgreSQL server. Please refer to the `PostgreSQL
dc235678897c webviewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 27
diff changeset
106 documentation
358
011b01ccf52d fixing external hyperlinks
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 336
diff changeset
107 <https://www.postgresql.org/docs/current/tutorial-createdb.html>`__.
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
108
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
109 Once Orthanc is installed and the database is created, you must add a
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
110 section in the :ref:`configuration file <configuration>` that
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
111 specifies the address of the **PostgreSQL server together with your
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
112 credentials**. You also have to tell Orthanc in which path it can find
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
113 the plugins: This is done by properly modifying the ``Plugins``
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
114 option. You could for instance adapt the following configuration
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
115 file::
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
116
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
117 {
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
118 "Name" : "MyOrthanc",
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
119 "PostgreSQL" : {
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
120 "EnableIndex" : true,
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
121 "EnableStorage" : true,
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
122 "Host" : "localhost",
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
123 "Port" : 5432,
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
124 "Database" : "orthanc",
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
125 "Username" : "orthanc",
181
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
126 "Password" : "orthanc",
643
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
127 "EnableSsl" : false, // New in release 3.0
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
128 "MaximumConnectionRetries" : 10, // New in release 3.0
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
129 "ConnectionRetryInterval" : 5, // New in release 3.0
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
130 "IndexConnectionsCount" : 1 // New in release 4.0
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
131 },
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
132 "Plugins" : [
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
133 "/home/user/orthanc-databases/BuildPostgreSQL/libOrthancPostgreSQLIndex.so",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
134 "/home/user/orthanc-databases/BuildPostgreSQL/libOrthancPostgreSQLStorage.so"
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
135 ]
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
136 }
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
137
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
138 **Important:** The ``EnableIndex`` and ``EnableStorage`` options must
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
139 be explicitly set to ``true``, otherwise Orthanc will continue to use
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
140 its default SQLite back-end and the filesystem storage area.
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
141
181
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
142 **Remark 1:** When using the ``Storage`` PostgreSQL plugin, the DICOM
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
143 files are stored as large objects in the database. This might
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
144 actually consume more space than the DICOM file itself. We have
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
145 observed overhead up to 40%. However, it seems this overhead is
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
146 temporary and comes from Write-Ahead Logging. Check this `discussion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
147 <https://groups.google.com/d/msg/orthanc-users/pPzHOpb--iw/QkKZ808gIgAJ>`__
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
148 on the Orthanc Users group for more info).
118
a30abf63ccba postgres: reference to forum for space usage
amazy
parents: 94
diff changeset
149
181
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
150 **Remark 2:** A typical usage of the PostgreSQL plugin is to enable
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
151 only the ``Index``, and to use the default filesystem storage for
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
152 DICOM files (on a NAS with proper disaster recovery strategies). This
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
153 setup provides best performance for large-scale databases.
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
154
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
155 **Remark 3:** Setting the ``EnableSsl`` to ``true`` forces the use of
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
156 `SSL connections
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
157 <https://www.postgresql.org/docs/current/libpq-ssl.html>`__ between
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
158 Orthanc and the PostgreSQL server. It is a synonym for
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
159 ``sslmode=require`` in connections URI (see below). Setting
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
160 ``EnableSsl`` to ``false`` corresponds to ``sslmode=disable``
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
161 (i.e. SSL is not used, even if it is both available in Orthanc and
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
162 PostgreSQL). To choose other values for the SSL mode (i.e. ``allow``
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
163 and ``prefer``), please use connection URIs.
118
a30abf63ccba postgres: reference to forum for space usage
amazy
parents: 94
diff changeset
164
a30abf63ccba postgres: reference to forum for space usage
amazy
parents: 94
diff changeset
165
94
b0a71b880ca0 fix link + remark about disk usage overhead
Alain Mazy <alain@mazy.be>
parents: 81
diff changeset
166
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
167 .. highlight:: text
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
168
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
169 Orthanc must of course be **restarted** after the modification of its
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
170 configuration file. The log will contain an output similar to::
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
171
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
172 $ ./Orthanc Configuration.json
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
173 W0212 16:30:34.576972 11285 main.cpp:632] Orthanc version: 0.8.6
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
174 W0212 16:30:34.577386 11285 OrthancInitialization.cpp:80] Using the configuration from: Configuration.json
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
175 [...]
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
176 W0212 16:30:34.598053 11285 main.cpp:379] Registering a plugin from: /home/jodogne/Subversion/orthanc-databases/BuildPostgreSQL/libOrthancPostgreSQLIndex.so
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
177 W0212 16:30:34.598470 11285 PluginsManager.cpp:258] Registering plugin 'postgresql-index' (version 1.0)
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
178 W0212 16:30:34.598491 11285 PluginsManager.cpp:148] Using PostgreSQL index
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
179 W0212 16:30:34.608289 11285 main.cpp:379] Registering a plugin from: /home/jodogne/Subversion/orthanc-databases/BuildPostgreSQL/libOrthancPostgreSQLStorage.so
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
180 W0212 16:30:34.608916 11285 PluginsManager.cpp:258] Registering plugin 'postgresql-storage' (version 1.0)
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
181 W0212 16:30:34.608947 11285 PluginsManager.cpp:148] Using PostgreSQL storage area
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
182 [...]
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
183 W0212 16:30:34.674648 11285 main.cpp:530] Orthanc has started
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
184
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
185
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
186 .. highlight:: json
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
187
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
188 Instead of specifying explicit authentication parameters, you can also
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
189 use the `PostgreSQL connection URIs syntax
358
011b01ccf52d fixing external hyperlinks
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 336
diff changeset
190 <https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING>`__. For
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
191 instance::
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
192
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
193 {
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
194 "Name" : "MyOrthanc",
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
195 "PostgreSQL" : {
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
196 "EnableIndex" : true,
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
197 "EnableStorage" : true,
181
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
198 "ConnectionUri" : "postgresql://username:password@localhost:5432/database?sslmode=prefer"
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
199 },
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
200 "Plugins" : [
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
201 "/home/user/orthanc-databases/BuildPostgreSQL/libOrthancPostgreSQLIndex.so",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
202 "/home/user/orthanc-databases/BuildPostgreSQL/libOrthancPostgreSQLStorage.so"
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
203 ]
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
204 }
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
205
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
206
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
207 **Remark:** The Debian Med project maintains `another useful set of
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
208 instructions
358
011b01ccf52d fixing external hyperlinks
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 336
diff changeset
209 <https://salsa.debian.org/med-team/orthanc-postgresql/-/blob/master/debian/README.Debian>`__.
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
210
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
211
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
212 Advanced options
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
213 ----------------
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
214
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
215 Several advanced options are available as well to fine-tune the
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
216 configuration of the PostgreSQL plugins. They are documented below.
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
217
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
218
643
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
219 .. _postgresql-multiple-writers:
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
220
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
221 Multiple writers or connections
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
222 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
223
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
224 Starting with Orthanc 1.9.2 and PostgreSQL 4.0, it is possible to use
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
225 :ref:`multiple writers or connections in large-scale deployments
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
226 <multiple-writers>`. Here is the list of configuration that control
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
227 this behavior:
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
228
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
229 * ``Lock`` must be set to ``false`` (cf. :ref:`below <postgresql-lock>`)
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
230
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
231 * ``MaximumConnectionRetries`` governs how many times Orthanc tries to
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
232 connect to the database, as well as how many times Orthanc replays
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
233 transactions to deal with collisions between multiple writers.
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
234
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
235 * ``IndexConnectionsCount`` controls the number of connections from
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
236 the index plugin to the PostgreSQL database. It is set to ``1`` by
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
237 default, which corresponds to the old behavior of Orthanc <= 1.9.1.
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
238
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
239 * ``ConnectionRetryInterval`` is only used when opening one database
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
240 connection to PostgreSQL.
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
241
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
242 * The PostgreSQL plugin supports the :ref:`revision mechanism
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
243 <revisions>` to protect metadata and attachments from concurrent
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
244 modifications.
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
245
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
246
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
247
270
f29d75bc5c25 more info about database locking
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 263
diff changeset
248 .. _postgresql-lock:
f29d75bc5c25 more info about database locking
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 263
diff changeset
249
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
250 Locking
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
251 ^^^^^^^
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
252
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
253 .. highlight:: json
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
254
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
255 By default, the plugins lock the database (using `PostgreSQL advisory
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
256 locks
358
011b01ccf52d fixing external hyperlinks
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 336
diff changeset
257 <https://www.postgresql.org/docs/current/functions-admin.html#FUNCTIONS-ADVISORY-LOCKS>`__)
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
258 to prevent other instances of Orthanc from using the same PostgreSQL
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
259 database. If you want several instances of Orthanc to share the same
643
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
260 database or if you need multiple connections to the PostgreSQL
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
261 database, set the ``Lock`` option to ``false`` in the configuration
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
262 file::
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
263
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
264 {
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
265 "Name" : "MyOrthanc",
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
266 "PostgreSQL" : {
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
267 "EnableIndex" : true,
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
268 "EnableStorage" : true,
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
269 "Lock" : false,
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
270 "ConnectionUri" : "postgresql://username:password@localhost:5432/database"
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
271 },
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
272 "Plugins" : [
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
273 "/home/user/orthanc-databases/BuildPostgreSQL/libOrthancPostgreSQLIndex.so",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
274 "/home/user/orthanc-databases/BuildPostgreSQL/libOrthancPostgreSQLStorage.so"
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
275 ]
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
276 }
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
277
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
278 Obviously, one must be very cautious when sharing the same database
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
279 between instances of Orthanc. In particular, all these instances
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
280 should share the same configuration.
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
281
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
282
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
283 Keep-alive
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
284 ^^^^^^^^^^
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
285
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
286 .. highlight:: text
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
287
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
288 After some period of inactivity (users have reported 10 hours), you
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
289 might `experience an error
445
987fbbc2b59e leaving bitbucket wrt. bug tracker
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 438
diff changeset
290 <https://bugs.orthanc-server.com/show_bug.cgi?id=15>`__ such as::
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
291
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
292 E0220 03:20:51.562601 PluginsManager.cpp:163] Exception in database back-end: Error in PostgreSQL: server closed the connection unexpectedly.
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
293 This probably means the server terminated abnormally before or while processing the request.
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
294 E0220 06:51:03.924868 PluginsManager.cpp:163] Exception in database back-end: Error in PostgreSQL: no connection to the server
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
295
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
296 This is due to a timeout in the PostgreSQL server. Please make sure to
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
297 `enable keep-alive
358
011b01ccf52d fixing external hyperlinks
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 336
diff changeset
298 <https://dba.stackexchange.com/questions/97534/is-there-a-timeout-option-for-remote-access-to-postgresql-database>`__
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
299 in the configuration of your PostgreSQL server
438
5d6d593bceb6 scalability section
Alain Mazy <alain@mazy.be>
parents: 429
diff changeset
300
5d6d593bceb6 scalability section
Alain Mazy <alain@mazy.be>
parents: 429
diff changeset
301
5d6d593bceb6 scalability section
Alain Mazy <alain@mazy.be>
parents: 429
diff changeset
302 Scalability
5d6d593bceb6 scalability section
Alain Mazy <alain@mazy.be>
parents: 429
diff changeset
303 ^^^^^^^^^^^
5d6d593bceb6 scalability section
Alain Mazy <alain@mazy.be>
parents: 429
diff changeset
304
5d6d593bceb6 scalability section
Alain Mazy <alain@mazy.be>
parents: 429
diff changeset
305 When configuring your PostgreSQL plugin, ensure you've read the :ref:`scalability section
5d6d593bceb6 scalability section
Alain Mazy <alain@mazy.be>
parents: 429
diff changeset
306 <scalability>`
531
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
307
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
308
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
309 Troubleshooting
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
310 ---------------
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
311
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
312 SCRAM authentication
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
313 ^^^^^^^^^^^^^^^^^^^^
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
314
560
5c0dfc863884 note for postgresql 3.3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 531
diff changeset
315 .. note:: This section only applies to releases <= 3.2 of the
5c0dfc863884 note for postgresql 3.3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 531
diff changeset
316 PostgreSQL plugins. Starting with release 3.3, the plugins
5c0dfc863884 note for postgresql 3.3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 531
diff changeset
317 use a version of libpq that should support SCRAM
5c0dfc863884 note for postgresql 3.3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 531
diff changeset
318 authentication.
5c0dfc863884 note for postgresql 3.3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 531
diff changeset
319
5c0dfc863884 note for postgresql 3.3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 531
diff changeset
320 In the releases 3.2 of the PostgreSQL plugins, the precompiled
5c0dfc863884 note for postgresql 3.3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 531
diff changeset
321 binaries use an old, but stable version of the PostgreSQL client
5c0dfc863884 note for postgresql 3.3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 531
diff changeset
322 (libpq 9.6.1). This makes these binaries very portable, however they
5c0dfc863884 note for postgresql 3.3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 531
diff changeset
323 might not be compatible with more recent features of PostgreSQL.
531
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
324
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
325 In particular, the precompiled binaries are not compatible with `SCRAM
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
326 authentication
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
327 <https://en.wikipedia.org/wiki/Salted_Challenge_Response_Authentication_Mechanism>`__
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
328 that is available since PostgreSQL 10. If you get the error ``psql:
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
329 authentication method 10 not supported``, this indicates that the
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
330 PostgreSQL plugins cannot connect to a PostgreSQL server because SCRAM
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
331 is enabled.
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
332
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
333 `Ian Smith
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
334 <https://groups.google.com/g/orthanc-users/c/4EH7HpcEnSA/m/a4x6oiucAgAJ>`__
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
335 has reported the following method to disable SCRAM:
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
336
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
337 1. Drop/delete the ``orthanc`` database and user in PostgreSQL.
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
338 2. Edit the files ``postgresql.conf`` and ``pg_hba.conf`` and change
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
339 ``scram-sha-256`` to ``md5`` in all cases.
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
340 3. Add the ``orthanc`` user and database in PostgreSQL again.
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
341 4. Restart Orthanc.