annotate Sphinx/source/plugins/postgresql.rst @ 1020:3f4a7ee8033b

auth plugin huge rewrite
author Alain Mazy <am@osimis.io>
date Fri, 26 Jan 2024 18:37:04 +0100
parents 3f3a1b54a839
children a3436ae3709c
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
750
8b8df1be0cf9 documenting odbc
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 643
diff changeset
19 The source code of the PostgreSQL plugins can be found in the
8b8df1be0cf9 documenting odbc
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 643
diff changeset
20 ``orthanc-databases`` `Mercurial repository
991
1316bc62b5d5 migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 750
diff changeset
21 <https://orthanc.uclouvain.be/hg/orthanc-databases/>`__, next to the
750
8b8df1be0cf9 documenting odbc
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 643
diff changeset
22 source code of the :ref:`ODBC <odbc>` and
8b8df1be0cf9 documenting odbc
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 643
diff changeset
23 :ref:`MySQL/MariaDB <mysql>` plugins.
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
24
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
25
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
26 Compilation
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
27 -----------
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
28
128
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
29 Static linking
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
30 ^^^^^^^^^^^^^^
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
31
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
32 .. highlight:: text
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
33
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
34 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
35 :ref:`core of Orthanc <compiling>`. The following commands should work
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
36 for most UNIX-like distribution (including GNU/Linux)::
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
37
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
38 $ mkdir BuildPostgreSQL
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
39 $ cd BuildPostgreSQL
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
40 $ cmake ../PostgreSQL -DSTATIC_BUILD=ON -DCMAKE_BUILD_TYPE=Release
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
41 $ make
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
42
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
43 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
44
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
45 * ``OrthancPostgreSQLIndex`` replaces the default SQLite index of Orthanc by PostgreSQL.
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
46 * ``OrthancPostgreSQLStorage`` makes Orthanc store the DICOM files it receives into PostgreSQL.
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
47
128
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
48
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
49 Microsoft Windows and Apple OS X
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
50 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
51
750
8b8df1be0cf9 documenting odbc
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 643
diff changeset
52 Pre-compiled binaries for Microsoft Windows 32bit `are also available
993
05b106383b2a migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 991
diff changeset
53 <https://orthanc.uclouvain.be/downloads/windows-32/orthanc-postgresql/index.html>`__.
30
79b6d3ea92aa dicomweb
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 28
diff changeset
54 A package for `Apple's Mac OS X
993
05b106383b2a migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 991
diff changeset
55 <https://www.orthanc-server.com/static.php?page=download-mac>`__
05b106383b2a migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 991
diff changeset
56 is available courtesy of `Orthanc Team <https://orthanc.team/>`__.
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
57
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
58
263
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
59 .. _postgresql-ubuntu1604:
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
60
128
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
61 Dynamic linking on Ubuntu 16.04
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
62 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
63
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
64 .. highlight:: text
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
65
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
66 If static linking is not desired, here are build instructions for
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
67 Ubuntu 16.04 (provided build dependencies for the :ref:`core of
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
68 Orthanc <compiling>` have already been installed)::
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
69
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
70 $ sudo apt-get install libpq-dev postgresql-server-dev-all
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
71 $ mkdir BuildPostgreSQL
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
72 $ cd BuildPostgreSQL
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
73 $ cmake ../PostgreSQL -DCMAKE_BUILD_TYPE=Release \
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
74 -DALLOW_DOWNLOADS=ON \
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
75 -DUSE_SYSTEM_GOOGLE_TEST=OFF \
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
76 -DUSE_SYSTEM_ORTHANC_SDK=OFF
128
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
77 $ make
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
78
263
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 .. _postgresql-cmake:
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 Dynamic linking on other GNU/Linux distributions
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
83 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
84
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
85 .. highlight:: text
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
86
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
87 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
88 :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
89 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
90 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
91 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
92 error while invoking CMake that looks like::
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
93
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
94 -- 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
95
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
96 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
97 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
98 the `Resources/CMake/PostgreSQLConfiguration.cmake file
991
1316bc62b5d5 migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 750
diff changeset
99 <https://orthanc.uclouvain.be/hg/orthanc-databases/file/default/Resources/CMake/PostgreSQLConfiguration.cmake>`__
361
84e3a2612c36 links to hg
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 358
diff changeset
100 in the sources of the project.
263
39609c9a2c41 note about includes for postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 181
diff changeset
101
128
f2abbac22d5c postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 118
diff changeset
102
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
103 Usage
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
104 -----
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
105
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
106 .. highlight:: json
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
107
31
93bbfaf0e62c worklist instructions migrated to a specific page, indexing of Osimis Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 30
diff changeset
108 You of course first have to :ref:`install Orthanc <binaries>`, with a
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
109 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
110 to Orthanc on some PostgreSQL server. Please refer to the `PostgreSQL
dc235678897c webviewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 27
diff changeset
111 documentation
358
011b01ccf52d fixing external hyperlinks
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 336
diff changeset
112 <https://www.postgresql.org/docs/current/tutorial-createdb.html>`__.
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
113
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
114 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
115 section in the :ref:`configuration file <configuration>` that
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
116 specifies the address of the **PostgreSQL server together with your
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
117 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
118 the plugins: This is done by properly modifying the ``Plugins``
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
119 option. You could for instance adapt the following configuration
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
120 file::
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
121
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
122 {
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
123 "Name" : "MyOrthanc",
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
124 "PostgreSQL" : {
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
125 "EnableIndex" : true,
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
126 "EnableStorage" : true,
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
127 "Host" : "localhost",
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
128 "Port" : 5432,
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
129 "Database" : "orthanc",
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
130 "Username" : "orthanc",
181
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
131 "Password" : "orthanc",
643
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
132 "EnableSsl" : false, // New in release 3.0
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
133 "MaximumConnectionRetries" : 10, // New in release 3.0
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
134 "ConnectionRetryInterval" : 5, // New in release 3.0
1016
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
135 "IndexConnectionsCount" : 1, // New in release 4.0
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
136 "TransactionMode": "SERIALIZABLE" // New in beta version (not released yet)
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
137 },
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
138 "Plugins" : [
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
139 "/home/user/orthanc-databases/BuildPostgreSQL/libOrthancPostgreSQLIndex.so",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
140 "/home/user/orthanc-databases/BuildPostgreSQL/libOrthancPostgreSQLStorage.so"
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
141 ]
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
142 }
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
143
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
144 **Important:** The ``EnableIndex`` and ``EnableStorage`` options must
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
145 be explicitly set to ``true``, otherwise Orthanc will continue to use
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
146 its default SQLite back-end and the filesystem storage area.
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
147
181
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
148 **Remark 1:** When using the ``Storage`` PostgreSQL plugin, the DICOM
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
149 files are stored as large objects in the database. This might
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
150 actually consume more space than the DICOM file itself. We have
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
151 observed overhead up to 40%. However, it seems this overhead is
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
152 temporary and comes from Write-Ahead Logging. Check this `discussion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
153 <https://groups.google.com/d/msg/orthanc-users/pPzHOpb--iw/QkKZ808gIgAJ>`__
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
154 on the Orthanc Users group for more info).
118
a30abf63ccba postgres: reference to forum for space usage
amazy
parents: 94
diff changeset
155
181
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
156 **Remark 2:** A typical usage of the PostgreSQL plugin is to enable
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
157 only the ``Index``, and to use the default filesystem storage for
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
158 DICOM files (on a NAS with proper disaster recovery strategies). This
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
159 setup provides best performance for large-scale databases.
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
160
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
161 **Remark 3:** Setting the ``EnableSsl`` to ``true`` forces the use of
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
162 `SSL connections
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
163 <https://www.postgresql.org/docs/current/libpq-ssl.html>`__ between
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
164 Orthanc and the PostgreSQL server. It is a synonym for
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
165 ``sslmode=require`` in connections URI (see below). Setting
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
166 ``EnableSsl`` to ``false`` corresponds to ``sslmode=disable``
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
167 (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
168 PostgreSQL). To choose other values for the SSL mode (i.e. ``allow``
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
169 and ``prefer``), please use connection URIs.
118
a30abf63ccba postgres: reference to forum for space usage
amazy
parents: 94
diff changeset
170
a30abf63ccba postgres: reference to forum for space usage
amazy
parents: 94
diff changeset
171
94
b0a71b880ca0 fix link + remark about disk usage overhead
Alain Mazy <alain@mazy.be>
parents: 81
diff changeset
172
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
173 .. highlight:: text
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
174
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
175 Orthanc must of course be **restarted** after the modification of its
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
176 configuration file. The log will contain an output similar to::
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
177
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
178 $ ./Orthanc Configuration.json
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
179 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
180 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
181 [...]
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
182 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
183 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
184 W0212 16:30:34.598491 11285 PluginsManager.cpp:148] Using PostgreSQL index
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
185 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
186 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
187 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
188 [...]
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
189 W0212 16:30:34.674648 11285 main.cpp:530] Orthanc has started
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
190
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
191
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
192 .. highlight:: json
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 Instead of specifying explicit authentication parameters, you can also
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
195 use the `PostgreSQL connection URIs syntax
358
011b01ccf52d fixing external hyperlinks
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 336
diff changeset
196 <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
197 instance::
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
198
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 "Name" : "MyOrthanc",
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
201 "PostgreSQL" : {
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
202 "EnableIndex" : true,
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
203 "EnableStorage" : true,
181
c7551e19ae95 sslmode
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 154
diff changeset
204 "ConnectionUri" : "postgresql://username:password@localhost:5432/database?sslmode=prefer"
27
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 "Plugins" : [
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
207 "/home/user/orthanc-databases/BuildPostgreSQL/libOrthancPostgreSQLIndex.so",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
208 "/home/user/orthanc-databases/BuildPostgreSQL/libOrthancPostgreSQLStorage.so"
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
209 ]
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
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
213 **Remark:** The Debian Med project maintains `another useful set of
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
214 instructions
358
011b01ccf52d fixing external hyperlinks
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 336
diff changeset
215 <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
216
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 Advanced options
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
219 ----------------
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
220
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
221 Several advanced options are available as well to fine-tune the
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
222 configuration of the PostgreSQL plugins. They are documented below.
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
223
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
224
643
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
225 .. _postgresql-multiple-writers:
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
226
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
227 Multiple writers or connections
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
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
230 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
231 :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
232 <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
233 this behavior:
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 * ``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
236
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
237 * ``MaximumConnectionRetries`` governs how many times Orthanc tries to
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
238 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
239 transactions to deal with collisions between multiple writers.
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
240
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
241 * ``IndexConnectionsCount`` controls the number of connections from
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
242 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
243 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
244
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
245 * ``ConnectionRetryInterval`` is only used when opening one database
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
246 connection to PostgreSQL.
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
247
1016
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
248 * ``TransactionMode`` has been added in the ``pg-transactions`` beta version only. 2 values are
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
249 allowed: ``SERIALIZABLE`` (that has always been the default mode for Orthanc)
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
250 and ``READ COMMITTED`` that is available only from this beta version. See
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
251 below.
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
252
643
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
253 * The PostgreSQL plugin supports the :ref:`revision mechanism
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
254 <revisions>` to protect metadata and attachments from concurrent
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
255 modifications.
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
256
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
257
411e82bb3a9f documenting revisions and multiple writers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 560
diff changeset
258
270
f29d75bc5c25 more info about database locking
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 263
diff changeset
259 .. _postgresql-lock:
f29d75bc5c25 more info about database locking
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 263
diff changeset
260
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
261 Locking
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
262 ^^^^^^^
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 .. highlight:: json
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
265
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
266 By default, the plugins lock the database (using `PostgreSQL advisory
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
267 locks
358
011b01ccf52d fixing external hyperlinks
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 336
diff changeset
268 <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
269 to prevent other instances of Orthanc from using the same PostgreSQL
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
270 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
271 database or if you need multiple connections to the PostgreSQL
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
272 database, set the ``Lock`` option to ``false`` in the configuration
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
273 file::
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
274
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 "Name" : "MyOrthanc",
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
277 "PostgreSQL" : {
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
278 "EnableIndex" : true,
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
279 "EnableStorage" : true,
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
280 "Lock" : false,
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
281 "ConnectionUri" : "postgresql://username:password@localhost:5432/database"
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 "Plugins" : [
154
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
284 "/home/user/orthanc-databases/BuildPostgreSQL/libOrthancPostgreSQLIndex.so",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 129
diff changeset
285 "/home/user/orthanc-databases/BuildPostgreSQL/libOrthancPostgreSQLStorage.so"
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
286 ]
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
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
289 Obviously, one must be very cautious when sharing the same database
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
290 between instances of Orthanc. In particular, all these instances
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
291 should share the same configuration.
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
292
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
293
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
294 Keep-alive
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
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
297 .. highlight:: text
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
298
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
299 After some period of inactivity (users have reported 10 hours), you
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
300 might `experience an error
991
1316bc62b5d5 migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 750
diff changeset
301 <https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=15>`__ such as::
27
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
302
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
303 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
304 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
305 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
306
c23f02a64caf postgresql
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 24
diff changeset
307 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
308 `enable keep-alive
358
011b01ccf52d fixing external hyperlinks
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 336
diff changeset
309 <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
310 in the configuration of your PostgreSQL server
438
5d6d593bceb6 scalability section
Alain Mazy <alain@mazy.be>
parents: 429
diff changeset
311
5d6d593bceb6 scalability section
Alain Mazy <alain@mazy.be>
parents: 429
diff changeset
312
5d6d593bceb6 scalability section
Alain Mazy <alain@mazy.be>
parents: 429
diff changeset
313 Scalability
5d6d593bceb6 scalability section
Alain Mazy <alain@mazy.be>
parents: 429
diff changeset
314 ^^^^^^^^^^^
5d6d593bceb6 scalability section
Alain Mazy <alain@mazy.be>
parents: 429
diff changeset
315
5d6d593bceb6 scalability section
Alain Mazy <alain@mazy.be>
parents: 429
diff changeset
316 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
317 <scalability>`
531
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
318
1016
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
319 Transaction modes (``pg-transactions`` beta version only)
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
320 ^^^^^^^^^^^^^^^^^
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
321
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
322 .. highlight:: json
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
323
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
324 Starting from the current beta version, orthanc supports 2 transaction modes that
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
325 can be configured in the ``TransactionMode`` configuration of the ``PostgreSQL`` plugin:
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
326
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
327 - ``SERIALIZABLE`` in which all write transactions are serialized which might lead
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
328 to performance bottlenecks when lots of threads or Orthanc instances are trying
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
329 to write to the same Database.
1017
Alain Mazy <am@osimis.io>
parents: 1016
diff changeset
330 - ``READ COMMITTED`` that allows multiple threads or Orthanc instances to write at the
1016
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
331 same time to the same Database.
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
332
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
333 *Remark:* This feature is only available in a beta version of both Orthanc and the
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
334 PostgreSQL plugin (``pg-transactions`` branches in the code). This beta version is
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
335 only available in the ``osimis/orthanc:pg-transactions-unstable`` Docker image.
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
336
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
337 *Remark:* This beta version is really a beta version and **should not be used on a
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
338 production database**. It shall only be used on a DB that you can delete or recover.
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
339 The reason why it shall not be used on a production database is because this revision
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
340 modifies the DB schema to a :ref:`version <db-versioning>`/revision ``6.2`` that might be different from the
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
341 final schema of the future release although it will share the same version/revision.
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
342 We can not guarantee to maintain migration scripts from this temporary schema to the final
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
343 one.
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
344
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
345 Upgrades/Downgrades (``pg-transactions`` beta version only)
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
346 ^^^^^^^^^^^^^^^^^
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
347
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
348 New vesions of the PostgreSQL might modify the DB schema by adding new columns/tables/triggers.
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
349 Upgrades from one revision to the other is always automatic.
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
350
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
351 However, if, for some reasons, you would like to reinstall a previous plugin version, the
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
352 older plugin might refuse to start because the revision is newer and unknown to it.
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
353
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
354 Starting from this beta version, we are providing a downgrade script in case you want, e.g,
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
355 to reinstall Orthanc 1.12.2 and PostgreSQL 5.1 (DB schema revision 6.1).
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
356
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
357 To downgrade from the beta to the PostgreSQL 5.1, one might run this procedure::
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
358
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
359 $ wget https://orthanc.uclouvain.be/hg/orthanc-databases/raw-file/pg-transactions/PostgreSQL/Plugins/SQL/Downgrades/V6.2ToV6.1.sql
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
360 $ psql -U postgres -f V6.2ToV6.1.sql
02e04288bbeb pg-transactions
Alain Mazy <am@osimis.io>
parents: 993
diff changeset
361
531
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
362
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
363 Troubleshooting
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
364 ---------------
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
365
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
366 SCRAM authentication
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
367 ^^^^^^^^^^^^^^^^^^^^
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
368
560
5c0dfc863884 note for postgresql 3.3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 531
diff changeset
369 .. 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
370 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
371 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
372 authentication.
5c0dfc863884 note for postgresql 3.3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 531
diff changeset
373
5c0dfc863884 note for postgresql 3.3
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 531
diff changeset
374 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
375 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
376 (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
377 might not be compatible with more recent features of PostgreSQL.
531
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
378
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
379 In particular, the precompiled binaries are not compatible with `SCRAM
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
380 authentication
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
381 <https://en.wikipedia.org/wiki/Salted_Challenge_Response_Authentication_Mechanism>`__
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
382 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
383 authentication method 10 not supported``, this indicates that the
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
384 PostgreSQL plugins cannot connect to a PostgreSQL server because SCRAM
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
385 is enabled.
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
386
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
387 `Ian Smith
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
388 <https://groups.google.com/g/orthanc-users/c/4EH7HpcEnSA/m/a4x6oiucAgAJ>`__
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
389 has reported the following method to disable SCRAM:
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
390
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
391 1. Drop/delete the ``orthanc`` database and user in PostgreSQL.
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
392 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
393 ``scram-sha-256`` to ``md5`` in all cases.
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
394 3. Add the ``orthanc`` user and database in PostgreSQL again.
fcf614950f31 disable scram
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
395 4. Restart Orthanc.